gallium: Windows user mode portability fixes.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Fri, 25 Apr 2008 09:19:51 +0000 (18:19 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Fri, 25 Apr 2008 09:19:51 +0000 (18:19 +0900)
src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
src/gallium/auxiliary/util/p_debug.c
src/gallium/auxiliary/util/p_debug_mem.c
src/gallium/auxiliary/util/u_time.c
src/gallium/auxiliary/util/u_time.h
src/gallium/include/pipe/p_util.h

index 27032b0c4c021a828d75288122a2543d6216bded..d3c1ec4fbea5dbdd71959dd768b98cd181906afd 100644 (file)
  */
 
 
+#include "pipe/p_config.h"
+
+#if defined(PIPE_OS_LINUX)
+#include <unistd.h>
+#endif
+
 #include "pipe/p_compiler.h"
 #include "pipe/p_error.h"
 #include "pipe/p_debug.h"
@@ -45,9 +51,6 @@
 #include "pb_buffer.h"
 #include "pb_buffer_fenced.h"
 
-#ifndef WIN32
-#include <unistd.h>
-#endif
 
 
 /**
@@ -425,7 +428,7 @@ fenced_buffer_list_destroy(struct fenced_buffer_list *fenced_list)
    /* Wait on outstanding fences */
    while (fenced_list->numDelayed) {
       _glthread_UNLOCK_MUTEX(fenced_list->mutex);
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
       sched_yield();
 #endif
       _fenced_buffer_list_check_free(fenced_list, 1);
index 25b132b40c7692659753820bba08f2ade964bad2..cd612e23b34e834271aded6d82d360894dfb98b0 100644 (file)
  **************************************************************************/
 
 
+#include "pipe/p_config.h" 
+
 #include <stdarg.h>
 
-#ifdef WIN32
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
 #include <windows.h>
 #include <winddi.h>
 #else
@@ -42,7 +44,7 @@
 #include "util/u_string.h" 
 
 
-#ifdef WIN32
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
 static INLINE void 
 _EngDebugPrint(const char *format, ...)
 {
@@ -56,7 +58,7 @@ _EngDebugPrint(const char *format, ...)
 
 void _debug_vprintf(const char *format, va_list ap)
 {
-#ifdef WIN32
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
 #ifndef WINCE
    /* EngDebugPrint does not handle float point arguments, so we need to use
     * our own vsnprintf implementation. It is also very slow, so buffer until
@@ -101,7 +103,7 @@ void _debug_break(void)
    __asm("int3");
 #elif (defined(__i386__) || defined(__386__)) && defined(__MSC__)
    _asm {int 3};
-#elif defined(WIN32) && !defined(WINCE)
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && !defined(WINCE)
    EngDebugBreak();
 #else
    abort();
@@ -109,7 +111,7 @@ void _debug_break(void)
 }
 
 
-#ifdef WIN32
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
 static const char *
 find(const char *start, const char *end, char c) 
 {
@@ -150,7 +152,7 @@ const char *
 debug_get_option(const char *name, const char *dfault)
 {
    const char *result;
-#ifdef WIN32
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
    ULONG_PTR iFile = 0;
    const void *pMap = NULL;
    const char *sol, *eol, *sep;
index aba69c02946a648c541adace50b3e1d725ff6cf8..9321cf71bbbbb507142c36bca444b94e33df232e 100644 (file)
@@ -32,7 +32,9 @@
  * @author José Fonseca <jrfonseca@tungstengraphics.com>
  */
 
-#ifdef WIN32
+#include "pipe/p_config.h" 
+
+#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
 #include <windows.h>
 #include <winddi.h>
 #else
@@ -47,7 +49,7 @@
 #define DEBUG_MEMORY_MAGIC 0x6e34090aU 
 
 
-#if defined(WIN32) && !defined(WINCE)
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && !defined(WINCE)
 #define real_malloc(_size) EngAllocMem(0, _size, 'D3AG')
 #define real_free(_ptr) EngFreeMem(_ptr)
 #else
index 01112ebe5aa9cb3794f7e746a773a75bf99f734c..dd28ff41340487418ec9ae78b9c5288c24c34f93 100644 (file)
  */
 
 
-#ifndef WIN32
+#include "util/u_time.h"
+
+#if defined(PIPE_OS_LINUX)
 #include <sys/time.h>
-#else
+#elif defined(PIPE_OS_WINDOWS)
 #include <windows.h>
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
 #include <winddi.h>
 #endif
-
-#include "util/u_time.h"
+#else
+#error Unsupported OS
+#endif
 
 
-#ifdef WIN32
+#if defined(PIPE_OS_WINDOWS)
 static LONGLONG frequency = 0;
+#if !defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
+#define EngQueryPerformanceFrequency(p) QueryPerformanceFrequency((LARGE_INTEGER*)(p))
+#define EngQueryPerformanceCounter(p) QueryPerformanceCounter((LARGE_INTEGER*)(p))
+#endif
 #endif
 
 
 void 
 util_time_get(struct util_time *t)
 {
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
    gettimeofday(&t->tv, NULL);
-#else
+#elif defined(PIPE_OS_WINDOWS)
    EngQueryPerformanceCounter(&t->counter);
 #endif
 }
@@ -64,10 +72,10 @@ util_time_add(const struct util_time *t1,
               int64_t usecs,
               struct util_time *t2)
 {
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
    t2->tv.tv_sec = t1->tv.tv_sec + usecs / 1000000;
    t2->tv.tv_usec = t1->tv.tv_usec + usecs % 1000000;
-#else
+#elif defined(PIPE_OS_WINDOWS)
    if(!frequency)
       EngQueryPerformanceFrequency(&frequency);
    t2->counter = t1->counter + (usecs * frequency + 999999LL)/1000000LL;
@@ -79,10 +87,12 @@ int64_t
 util_time_diff(const struct util_time *t1, 
                const struct util_time *t2)
 {
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
    return (t2->tv.tv_usec - t1->tv.tv_usec) + 
           (t2->tv.tv_sec - t1->tv.tv_sec)*1000000;
-#else
+#elif defined(PIPE_OS_WINDOWS)
+   if(!frequency)
+      EngQueryPerformanceFrequency(&frequency);
    return (t2->counter - t1->counter)*1000000LL/frequency;
 #endif
 }
@@ -98,7 +108,7 @@ static INLINE int
 util_time_compare(const struct util_time *t1, 
                   const struct util_time *t2)
 {
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
    if (t1->tv.tv_sec < t2->tv.tv_sec)
       return -1;
    else if(t1->tv.tv_sec > t2->tv.tv_sec)
@@ -109,7 +119,7 @@ util_time_compare(const struct util_time *t1,
       return 1;
    else 
       return 0;
-#else
+#elif defined(PIPE_OS_WINDOWS)
    if (t1->counter < t2->counter)
       return -1;
    else if(t1->counter > t2->counter)
@@ -132,7 +142,7 @@ util_time_timeout(const struct util_time *start,
 }
 
 
-#ifdef WIN32
+#if defined(PIPE_OS_WINDOWS)
 void util_time_sleep(unsigned usecs)
 {
    LONGLONG start, curr, end;
index c8836c137faa3f7e1f64bb710628ae64fa9333f8..48ec7a4a963d4fa89a5db30846c7525afe6eee07 100644 (file)
@@ -36,7 +36,9 @@
 #define U_TIME_H_
 
 
-#ifndef WIN32
+#include "pipe/p_config.h"
+
+#if defined(PIPE_OS_LINUX)
 #include <time.h> /* timeval */
 #include <unistd.h> /* usleep */
 #endif
@@ -56,7 +58,7 @@ extern "C" {
  */
 struct util_time 
 {
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
    struct timeval tv;
 #else
    long long counter;
@@ -84,7 +86,7 @@ util_time_timeout(const struct util_time *start,
                   const struct util_time *end,
                   const struct util_time *curr);
 
-#ifndef WIN32
+#if defined(PIPE_OS_LINUX)
 #define util_time_sleep usleep
 #else
 void
index 43d94ec4ba8b483ebfa212282d4f979051bdef42..63301ae3aad5eec6b1a593c20546d53a0378fb3d 100644 (file)
@@ -28,6 +28,7 @@
 #ifndef P_UTIL_H
 #define P_UTIL_H
 
+#include "p_config.h"
 #include "p_compiler.h"
 #include "p_debug.h"
 #include "p_pointer.h"
@@ -40,7 +41,7 @@ extern "C" {
 #endif
 
 
-#if defined(WIN32) && defined(DEBUG) /* memory debugging */
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && defined(DEBUG) /* memory debugging */
 
 #include "p_debug.h"
 
@@ -55,7 +56,7 @@ extern "C" {
 
 #else
    
-#ifdef WIN32
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
 
 void * __stdcall
 EngAllocMem(
@@ -118,7 +119,7 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
    return new_ptr;
 }
 
-#else /* !WIN32 */
+#else /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
 
 #define MALLOC( SIZE )  malloc( SIZE )
 
@@ -128,7 +129,7 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
 
 #define REALLOC( OLDPTR, OLDSIZE, NEWSIZE )  realloc( OLDPTR, NEWSIZE )
 
-#endif /* !WIN32 */
+#endif /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
 #endif /* !DEBUG */
 
 #define MALLOC_STRUCT(T)   (struct T *) MALLOC(sizeof(struct T))