gallium: Windows user mode portability fixes.
This commit is contained in:
@@ -34,6 +34,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "pipe/p_config.h"
|
||||||
|
|
||||||
|
#if defined(PIPE_OS_LINUX)
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "pipe/p_compiler.h"
|
#include "pipe/p_compiler.h"
|
||||||
#include "pipe/p_error.h"
|
#include "pipe/p_error.h"
|
||||||
#include "pipe/p_debug.h"
|
#include "pipe/p_debug.h"
|
||||||
@@ -45,9 +51,6 @@
|
|||||||
#include "pb_buffer.h"
|
#include "pb_buffer.h"
|
||||||
#include "pb_buffer_fenced.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 */
|
/* Wait on outstanding fences */
|
||||||
while (fenced_list->numDelayed) {
|
while (fenced_list->numDelayed) {
|
||||||
_glthread_UNLOCK_MUTEX(fenced_list->mutex);
|
_glthread_UNLOCK_MUTEX(fenced_list->mutex);
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
sched_yield();
|
sched_yield();
|
||||||
#endif
|
#endif
|
||||||
_fenced_buffer_list_check_free(fenced_list, 1);
|
_fenced_buffer_list_check_free(fenced_list, 1);
|
||||||
|
@@ -26,9 +26,11 @@
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include "pipe/p_config.h"
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winddi.h>
|
#include <winddi.h>
|
||||||
#else
|
#else
|
||||||
@@ -42,7 +44,7 @@
|
|||||||
#include "util/u_string.h"
|
#include "util/u_string.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
static INLINE void
|
static INLINE void
|
||||||
_EngDebugPrint(const char *format, ...)
|
_EngDebugPrint(const char *format, ...)
|
||||||
{
|
{
|
||||||
@@ -56,7 +58,7 @@ _EngDebugPrint(const char *format, ...)
|
|||||||
|
|
||||||
void _debug_vprintf(const char *format, va_list ap)
|
void _debug_vprintf(const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
#ifndef WINCE
|
#ifndef WINCE
|
||||||
/* EngDebugPrint does not handle float point arguments, so we need to use
|
/* EngDebugPrint does not handle float point arguments, so we need to use
|
||||||
* our own vsnprintf implementation. It is also very slow, so buffer until
|
* our own vsnprintf implementation. It is also very slow, so buffer until
|
||||||
@@ -101,7 +103,7 @@ void _debug_break(void)
|
|||||||
__asm("int3");
|
__asm("int3");
|
||||||
#elif (defined(__i386__) || defined(__386__)) && defined(__MSC__)
|
#elif (defined(__i386__) || defined(__386__)) && defined(__MSC__)
|
||||||
_asm {int 3};
|
_asm {int 3};
|
||||||
#elif defined(WIN32) && !defined(WINCE)
|
#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && !defined(WINCE)
|
||||||
EngDebugBreak();
|
EngDebugBreak();
|
||||||
#else
|
#else
|
||||||
abort();
|
abort();
|
||||||
@@ -109,7 +111,7 @@ void _debug_break(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
static const char *
|
static const char *
|
||||||
find(const char *start, const char *end, char c)
|
find(const char *start, const char *end, char c)
|
||||||
{
|
{
|
||||||
@@ -150,7 +152,7 @@ const char *
|
|||||||
debug_get_option(const char *name, const char *dfault)
|
debug_get_option(const char *name, const char *dfault)
|
||||||
{
|
{
|
||||||
const char *result;
|
const char *result;
|
||||||
#ifdef WIN32
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
ULONG_PTR iFile = 0;
|
ULONG_PTR iFile = 0;
|
||||||
const void *pMap = NULL;
|
const void *pMap = NULL;
|
||||||
const char *sol, *eol, *sep;
|
const char *sol, *eol, *sep;
|
||||||
|
@@ -32,7 +32,9 @@
|
|||||||
* @author José Fonseca <jrfonseca@tungstengraphics.com>
|
* @author José Fonseca <jrfonseca@tungstengraphics.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef WIN32
|
#include "pipe/p_config.h"
|
||||||
|
|
||||||
|
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winddi.h>
|
#include <winddi.h>
|
||||||
#else
|
#else
|
||||||
@@ -47,7 +49,7 @@
|
|||||||
#define DEBUG_MEMORY_MAGIC 0x6e34090aU
|
#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_malloc(_size) EngAllocMem(0, _size, 'D3AG')
|
||||||
#define real_free(_ptr) EngFreeMem(_ptr)
|
#define real_free(_ptr) EngFreeMem(_ptr)
|
||||||
#else
|
#else
|
||||||
|
@@ -33,27 +33,35 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
#include <sys/time.h>
|
|
||||||
#else
|
|
||||||
#include <windows.h>
|
|
||||||
#include <winddi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "util/u_time.h"
|
#include "util/u_time.h"
|
||||||
|
|
||||||
|
#if defined(PIPE_OS_LINUX)
|
||||||
|
#include <sys/time.h>
|
||||||
|
#elif defined(PIPE_OS_WINDOWS)
|
||||||
|
#include <windows.h>
|
||||||
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
|
||||||
|
#include <winddi.h>
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#error Unsupported OS
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
|
#if defined(PIPE_OS_WINDOWS)
|
||||||
static LONGLONG frequency = 0;
|
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
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
util_time_get(struct util_time *t)
|
util_time_get(struct util_time *t)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
gettimeofday(&t->tv, NULL);
|
gettimeofday(&t->tv, NULL);
|
||||||
#else
|
#elif defined(PIPE_OS_WINDOWS)
|
||||||
EngQueryPerformanceCounter(&t->counter);
|
EngQueryPerformanceCounter(&t->counter);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -64,10 +72,10 @@ util_time_add(const struct util_time *t1,
|
|||||||
int64_t usecs,
|
int64_t usecs,
|
||||||
struct util_time *t2)
|
struct util_time *t2)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
t2->tv.tv_sec = t1->tv.tv_sec + usecs / 1000000;
|
t2->tv.tv_sec = t1->tv.tv_sec + usecs / 1000000;
|
||||||
t2->tv.tv_usec = t1->tv.tv_usec + usecs % 1000000;
|
t2->tv.tv_usec = t1->tv.tv_usec + usecs % 1000000;
|
||||||
#else
|
#elif defined(PIPE_OS_WINDOWS)
|
||||||
if(!frequency)
|
if(!frequency)
|
||||||
EngQueryPerformanceFrequency(&frequency);
|
EngQueryPerformanceFrequency(&frequency);
|
||||||
t2->counter = t1->counter + (usecs * frequency + 999999LL)/1000000LL;
|
t2->counter = t1->counter + (usecs * frequency + 999999LL)/1000000LL;
|
||||||
@@ -79,10 +87,12 @@ int64_t
|
|||||||
util_time_diff(const struct util_time *t1,
|
util_time_diff(const struct util_time *t1,
|
||||||
const struct util_time *t2)
|
const struct util_time *t2)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
return (t2->tv.tv_usec - t1->tv.tv_usec) +
|
return (t2->tv.tv_usec - t1->tv.tv_usec) +
|
||||||
(t2->tv.tv_sec - t1->tv.tv_sec)*1000000;
|
(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;
|
return (t2->counter - t1->counter)*1000000LL/frequency;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -98,7 +108,7 @@ static INLINE int
|
|||||||
util_time_compare(const struct util_time *t1,
|
util_time_compare(const struct util_time *t1,
|
||||||
const struct util_time *t2)
|
const struct util_time *t2)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
if (t1->tv.tv_sec < t2->tv.tv_sec)
|
if (t1->tv.tv_sec < t2->tv.tv_sec)
|
||||||
return -1;
|
return -1;
|
||||||
else if(t1->tv.tv_sec > t2->tv.tv_sec)
|
else if(t1->tv.tv_sec > t2->tv.tv_sec)
|
||||||
@@ -109,7 +119,7 @@ util_time_compare(const struct util_time *t1,
|
|||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#elif defined(PIPE_OS_WINDOWS)
|
||||||
if (t1->counter < t2->counter)
|
if (t1->counter < t2->counter)
|
||||||
return -1;
|
return -1;
|
||||||
else if(t1->counter > t2->counter)
|
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)
|
void util_time_sleep(unsigned usecs)
|
||||||
{
|
{
|
||||||
LONGLONG start, curr, end;
|
LONGLONG start, curr, end;
|
||||||
|
@@ -36,7 +36,9 @@
|
|||||||
#define U_TIME_H_
|
#define U_TIME_H_
|
||||||
|
|
||||||
|
|
||||||
#ifndef WIN32
|
#include "pipe/p_config.h"
|
||||||
|
|
||||||
|
#if defined(PIPE_OS_LINUX)
|
||||||
#include <time.h> /* timeval */
|
#include <time.h> /* timeval */
|
||||||
#include <unistd.h> /* usleep */
|
#include <unistd.h> /* usleep */
|
||||||
#endif
|
#endif
|
||||||
@@ -56,7 +58,7 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
struct util_time
|
struct util_time
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
#else
|
#else
|
||||||
long long counter;
|
long long counter;
|
||||||
@@ -84,7 +86,7 @@ util_time_timeout(const struct util_time *start,
|
|||||||
const struct util_time *end,
|
const struct util_time *end,
|
||||||
const struct util_time *curr);
|
const struct util_time *curr);
|
||||||
|
|
||||||
#ifndef WIN32
|
#if defined(PIPE_OS_LINUX)
|
||||||
#define util_time_sleep usleep
|
#define util_time_sleep usleep
|
||||||
#else
|
#else
|
||||||
void
|
void
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#ifndef P_UTIL_H
|
#ifndef P_UTIL_H
|
||||||
#define P_UTIL_H
|
#define P_UTIL_H
|
||||||
|
|
||||||
|
#include "p_config.h"
|
||||||
#include "p_compiler.h"
|
#include "p_compiler.h"
|
||||||
#include "p_debug.h"
|
#include "p_debug.h"
|
||||||
#include "p_pointer.h"
|
#include "p_pointer.h"
|
||||||
@@ -40,7 +41,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(WIN32) && defined(DEBUG) /* memory debugging */
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && defined(DEBUG) /* memory debugging */
|
||||||
|
|
||||||
#include "p_debug.h"
|
#include "p_debug.h"
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ extern "C" {
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#ifdef WIN32
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
|
||||||
|
|
||||||
void * __stdcall
|
void * __stdcall
|
||||||
EngAllocMem(
|
EngAllocMem(
|
||||||
@@ -118,7 +119,7 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
|
|||||||
return new_ptr;
|
return new_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !WIN32 */
|
#else /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
|
||||||
|
|
||||||
#define MALLOC( SIZE ) malloc( SIZE )
|
#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 )
|
#define REALLOC( OLDPTR, OLDSIZE, NEWSIZE ) realloc( OLDPTR, NEWSIZE )
|
||||||
|
|
||||||
#endif /* !WIN32 */
|
#endif /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
|
||||||
#endif /* !DEBUG */
|
#endif /* !DEBUG */
|
||||||
|
|
||||||
#define MALLOC_STRUCT(T) (struct T *) MALLOC(sizeof(struct T))
|
#define MALLOC_STRUCT(T) (struct T *) MALLOC(sizeof(struct T))
|
||||||
|
Reference in New Issue
Block a user