gallium: Fix build for WinXP.

This commit is contained in:
Michal Krol
2008-01-20 19:36:23 +01:00
committed by José Fonseca
parent 7411a84c2b
commit 6c3d12e374
5 changed files with 82 additions and 18 deletions

54
src/mesa/pipe/p_thread.h Normal file
View File

@@ -0,0 +1,54 @@
/**************************************************************************
*
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**************************************************************************/
#ifndef P_THREAD_H
#define P_THREAD_H
#include "p_compiler.h"
/*
* XXX: We should come up with a system-independent thread definitions.
* XXX: Patching glthread defs for now.
*/
#ifndef __MSC__
#include "glapi/glthread.h"
#else /* __MSC__ */
typedef int _glthread_Mutex;
#define _glthread_INIT_MUTEX( M ) ((void) (M))
#define _glthread_LOCK_MUTEX( M ) ((void) (M))
#define _glthread_UNLOCK_MUTEX( M ) ((void) (M))
#define sched_yield() ((void) 0)
#endif /* __MSC__ */
#endif /* P_THREAD_H */

View File

@@ -46,6 +46,7 @@
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include "p_compiler.h"
#include "pipe/p_state.h" #include "pipe/p_state.h"
@@ -104,7 +105,7 @@ struct pb_vtbl
/* Accessor functions for pb->vtbl: /* Accessor functions for pb->vtbl:
*/ */
static inline void * static INLINE void *
pb_map(struct pb_buffer *buf, pb_map(struct pb_buffer *buf,
unsigned flags) unsigned flags)
{ {
@@ -113,7 +114,7 @@ pb_map(struct pb_buffer *buf,
} }
static inline void static INLINE void
pb_unmap(struct pb_buffer *buf) pb_unmap(struct pb_buffer *buf)
{ {
assert(buf); assert(buf);
@@ -121,7 +122,7 @@ pb_unmap(struct pb_buffer *buf)
} }
static inline void static INLINE void
pb_get_base_buffer( struct pb_buffer *buf, pb_get_base_buffer( struct pb_buffer *buf,
struct pb_buffer **base_buf, struct pb_buffer **base_buf,
unsigned *offset ) unsigned *offset )
@@ -129,7 +130,7 @@ pb_get_base_buffer( struct pb_buffer *buf,
buf->vtbl->get_base_buffer(buf, base_buf, offset); buf->vtbl->get_base_buffer(buf, base_buf, offset);
} }
static inline void static INLINE void
pb_destroy(struct pb_buffer *buf) pb_destroy(struct pb_buffer *buf)
{ {
assert(buf); assert(buf);
@@ -163,13 +164,13 @@ pb_malloc_buffer_create( unsigned alignment,
static inline struct pipe_buffer * static INLINE struct pipe_buffer *
pb_pipe_buffer( struct pb_buffer *pbuf ) pb_pipe_buffer( struct pb_buffer *pbuf )
{ {
return &pbuf->base; return &pbuf->base;
} }
static inline struct pb_buffer * static INLINE struct pb_buffer *
pb_buffer( struct pipe_buffer *buf ) pb_buffer( struct pipe_buffer *buf )
{ {
/* Could add a magic cookie check on debug builds. /* Could add a magic cookie check on debug builds.

View File

@@ -36,17 +36,21 @@
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include "main/imports.h"
#include "glapi/glthread.h"
#include "linked_list.h" #include "linked_list.h"
#include "p_compiler.h"
#include "p_winsys.h" #include "p_winsys.h"
#include "p_thread.h"
#include "pb_buffer.h" #include "pb_buffer.h"
#include "pb_buffer_fenced.h" #include "pb_buffer_fenced.h"
#ifndef __MSC__
#include <unistd.h>
#include "main/imports.h"
#endif
/** /**
* Convenience macro (type safe). * Convenience macro (type safe).
@@ -103,11 +107,12 @@ _fenced_buffer_list_check_free(struct fenced_buffer_list *fenced_list,
struct fenced_buffer *fenced_buf; struct fenced_buffer *fenced_buf;
struct list_head *list, *prev; struct list_head *list, *prev;
int signaled = -1; int signaled = -1;
int i;
list = fenced_list->delayed.next; list = fenced_list->delayed.next;
if (fenced_list->numDelayed > 3) { if (fenced_list->numDelayed > 3) {
unsigned i;
for (i = 0; i < fenced_list->numDelayed; i += 3) { for (i = 0; i < fenced_list->numDelayed; i += 3) {
list = list->next; list = list->next;
} }
@@ -281,7 +286,7 @@ fenced_buffer_list_destroy(struct fenced_buffer_list *fenced_list)
while (fenced_list->numDelayed) { while (fenced_list->numDelayed) {
_glthread_UNLOCK_MUTEX(fenced_list->mutex); _glthread_UNLOCK_MUTEX(fenced_list->mutex);
sched_yield(); sched_yield();
_fenced_buffer_list_check_free(fenced_list, GL_TRUE); _fenced_buffer_list_check_free(fenced_list, 1);
_glthread_LOCK_MUTEX(fenced_list->mutex); _glthread_LOCK_MUTEX(fenced_list->mutex);
} }

View File

@@ -52,7 +52,7 @@ struct fenced_pb_manager
}; };
static inline struct fenced_pb_manager * static INLINE struct fenced_pb_manager *
fenced_pb_manager(struct pb_manager *mgr) fenced_pb_manager(struct pb_manager *mgr)
{ {
assert(mgr); assert(mgr);

View File

@@ -37,17 +37,21 @@
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include "main/imports.h"
#include "glapi/glthread.h"
#include "linked_list.h" #include "linked_list.h"
#include "p_compiler.h"
#include "p_thread.h"
#include "p_defines.h" #include "p_defines.h"
#include "pb_buffer.h" #include "pb_buffer.h"
#include "pb_bufmgr.h" #include "pb_bufmgr.h"
#ifndef __MSC__
#include <unistd.h>
#include "main/imports.h"
#endif
/** /**
* Convenience macro (type safe). * Convenience macro (type safe).
@@ -75,7 +79,7 @@ struct pool_pb_manager
}; };
static inline struct pool_pb_manager * static INLINE struct pool_pb_manager *
pool_pb_manager(struct pb_manager *mgr) pool_pb_manager(struct pb_manager *mgr)
{ {
assert(mgr); assert(mgr);
@@ -95,7 +99,7 @@ struct pool_buffer
}; };
static inline struct pool_buffer * static INLINE struct pool_buffer *
pool_buffer(struct pb_buffer *buf) pool_buffer(struct pb_buffer *buf)
{ {
assert(buf); assert(buf);
@@ -217,7 +221,7 @@ pool_bufmgr_create(struct pb_manager *provider,
{ {
struct pool_pb_manager *pool; struct pool_pb_manager *pool;
struct pool_buffer *pool_buf; struct pool_buffer *pool_buf;
int i; size_t i;
pool = (struct pool_pb_manager *)calloc(1, sizeof(*pool)); pool = (struct pool_pb_manager *)calloc(1, sizeof(*pool));
if (!pool) if (!pool)