summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2008-05-01 00:59:12 +0900
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2008-05-01 02:25:23 +0900
commitcafb545721e6c9479c07d3a7a891236e006d3376 (patch)
treef1a6c508912ecb3019d38cd7fc7f922cefddceb5
parentc9acd439b1af4b037ded324139664cf9832930f8 (diff)
d3d: Windows miniport driver portability fixes.
-rw-r--r--src/gallium/auxiliary/util/p_debug.c2
-rw-r--r--src/gallium/auxiliary/util/p_debug_mem.c7
-rw-r--r--src/gallium/auxiliary/util/u_time.c6
-rw-r--r--src/gallium/include/pipe/p_config.h9
-rw-r--r--src/gallium/include/pipe/p_util.h64
5 files changed, 53 insertions, 35 deletions
diff --git a/src/gallium/auxiliary/util/p_debug.c b/src/gallium/auxiliary/util/p_debug.c
index 8ef2880191..56eecaab62 100644
--- a/src/gallium/auxiliary/util/p_debug.c
+++ b/src/gallium/auxiliary/util/p_debug.c
@@ -104,7 +104,7 @@ void _debug_break(void)
__asm("int3");
#elif (defined(__i386__) || defined(__386__)) && defined(__MSC__)
_asm {int 3};
-#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && !defined(WINCE)
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
EngDebugBreak();
#else
abort();
diff --git a/src/gallium/auxiliary/util/p_debug_mem.c b/src/gallium/auxiliary/util/p_debug_mem.c
index 9321cf71bb..3b5e4fbaee 100644
--- a/src/gallium/auxiliary/util/p_debug_mem.c
+++ b/src/gallium/auxiliary/util/p_debug_mem.c
@@ -34,9 +34,11 @@
#include "pipe/p_config.h"
-#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
#include <windows.h>
#include <winddi.h>
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
+#include <wdm.h>
#else
#include <stdio.h>
#include <stdlib.h>
@@ -52,6 +54,9 @@
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && !defined(WINCE)
#define real_malloc(_size) EngAllocMem(0, _size, 'D3AG')
#define real_free(_ptr) EngFreeMem(_ptr)
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
+#define real_malloc(_size) ExAllocatePool(0, _size)
+#define real_free(_ptr) ExFreePool(_ptr)
#else
#define real_malloc(_size) malloc(_size)
#define real_free(_ptr) free(_ptr)
diff --git a/src/gallium/auxiliary/util/u_time.c b/src/gallium/auxiliary/util/u_time.c
index dd28ff4134..9b97050d51 100644
--- a/src/gallium/auxiliary/util/u_time.c
+++ b/src/gallium/auxiliary/util/u_time.c
@@ -37,11 +37,11 @@
#if defined(PIPE_OS_LINUX)
#include <sys/time.h>
-#elif defined(PIPE_OS_WINDOWS)
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
#include <windows.h>
-#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
#include <winddi.h>
-#endif
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
+#include <windows.h>
#else
#error Unsupported OS
#endif
diff --git a/src/gallium/include/pipe/p_config.h b/src/gallium/include/pipe/p_config.h
index e44fafeae9..5c030bdfff 100644
--- a/src/gallium/include/pipe/p_config.h
+++ b/src/gallium/include/pipe/p_config.h
@@ -106,7 +106,16 @@
#if defined(PIPE_SUBSYSTEM_KERNEL)
#define PIPE_SUBSYSTEM_WINDOWS_DISPLAY
#endif
+#if 0 /* FIXME */
+#define PIPE_SUBSYSTEM_WINDOWS_MINIPORT
+#endif
+#if 0 /* FIXME */
+#define PIPE_SUBSYSTEM_WINDOWS_CE
+#endif
+#if defined(PIPE_SUBSYSTEM_USER)
+#define PIPE_SUBSYSTEM_WINDOWS_USER
#endif
+#endif /* PIPE_OS_WINDOWS */
#endif /* P_CONFIG_H_ */
diff --git a/src/gallium/include/pipe/p_util.h b/src/gallium/include/pipe/p_util.h
index 63301ae3aa..0e7e246666 100644
--- a/src/gallium/include/pipe/p_util.h
+++ b/src/gallium/include/pipe/p_util.h
@@ -41,7 +41,9 @@ extern "C" {
#endif
-#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && defined(DEBUG) /* memory debugging */
+#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) && defined(DEBUG)
+
+/* memory debugging */
#include "p_debug.h"
@@ -54,9 +56,7 @@ extern "C" {
#define REALLOC( _ptr, _old_size, _size ) \
debug_realloc( __FILE__, __LINE__, __FUNCTION__, _ptr, _old_size, _size )
-#else
-
-#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
void * __stdcall
EngAllocMem(
@@ -68,17 +68,33 @@ void __stdcall
EngFreeMem(
void *Mem );
-static INLINE void *
-MALLOC( unsigned size )
-{
-#ifdef WINCE
- /* TODO: Need to abstract this */
- return malloc( size );
+#define MALLOC( _size ) EngAllocMem( 0, _size, 'D3AG' )
+#define _FREE( _ptr ) EngFreeMem( _ptr )
+
+#elif defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
+
+void *
+ExAllocatePool(
+ unsigned long PoolType,
+ size_t NumberOfBytes);
+
+void
+ExFreePool(void *P);
+
+#define MALLOC(_size) ExAllocatePool(0, _size)
+#define _FREE(_ptr) ExFreePool(_ptr)
+
#else
- return EngAllocMem( 0, size, 'D3AG' );
+
+#define MALLOC( SIZE ) malloc( SIZE )
+#define CALLOC( COUNT, SIZE ) calloc( COUNT, SIZE )
+#define FREE( PTR ) free( PTR )
+#define REALLOC( OLDPTR, OLDSIZE, NEWSIZE ) realloc( OLDPTR, NEWSIZE )
+
#endif
-}
+
+#ifndef CALLOC
static INLINE void *
CALLOC( unsigned count, unsigned size )
{
@@ -88,20 +104,19 @@ CALLOC( unsigned count, unsigned size )
}
return ptr;
}
+#endif /* !CALLOC */
+#ifndef FREE
static INLINE void
FREE( void *ptr )
{
if( ptr ) {
-#ifdef WINCE
- /* TODO: Need to abstract this */
- free( ptr );
-#else
- EngFreeMem( ptr );
-#endif
+ _FREE( ptr );
}
}
+#endif /* !FREE */
+#ifndef REALLOC
static INLINE void *
REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
{
@@ -118,19 +133,8 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
FREE( old_ptr );
return new_ptr;
}
+#endif /* !REALLOC */
-#else /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
-
-#define MALLOC( SIZE ) malloc( SIZE )
-
-#define CALLOC( COUNT, SIZE ) calloc( COUNT, SIZE )
-
-#define FREE( PTR ) free( PTR )
-
-#define REALLOC( OLDPTR, OLDSIZE, NEWSIZE ) realloc( OLDPTR, NEWSIZE )
-
-#endif /* !PIPE_SUBSYSTEM_WINDOWS_DISPLAY */
-#endif /* !DEBUG */
#define MALLOC_STRUCT(T) (struct T *) MALLOC(sizeof(struct T))