gallium: Windows miniport portability fixes.
This commit is contained in:
@@ -73,8 +73,7 @@ _EngDebugPrint(const char *format, ...)
|
|||||||
|
|
||||||
void _debug_vprintf(const char *format, va_list ap)
|
void _debug_vprintf(const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
|
||||||
#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
|
||||||
* we find a newline. */
|
* we find a newline. */
|
||||||
@@ -85,9 +84,6 @@ void _debug_vprintf(const char *format, va_list ap)
|
|||||||
_EngDebugPrint("%s", buf);
|
_EngDebugPrint("%s", buf);
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
/* TODO: Implement debug print for WINCE */
|
|
||||||
#endif
|
|
||||||
#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
|
#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
|
||||||
/* 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
|
||||||
@@ -99,7 +95,9 @@ void _debug_vprintf(const char *format, va_list ap)
|
|||||||
OutputDebugStringA(buf);
|
OutputDebugStringA(buf);
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
}
|
}
|
||||||
#else
|
#elif defined(PIPE_SUBSYSTEM_WINDOWS_CE) || defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
|
||||||
|
/* TODO */
|
||||||
|
#else /* !PIPE_SUBSYSTEM_WINDOWS */
|
||||||
vfprintf(stderr, format, ap);
|
vfprintf(stderr, format, ap);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -211,7 +209,7 @@ _debug_get_option(const char *name)
|
|||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
#elif defined(PIPE_SUBSYSTEM_WINDOWS_CE)
|
#elif defined(PIPE_SUBSYSTEM_WINDOWS_CE) || defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
|
||||||
/* TODO: implement */
|
/* TODO: implement */
|
||||||
return NULL;
|
return NULL;
|
||||||
#else
|
#else
|
||||||
|
@@ -162,6 +162,8 @@
|
|||||||
* <http://www.jhweiss.de/software/snprintf.html>.
|
* <http://www.jhweiss.de/software/snprintf.html>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "pipe/p_config.h"
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
#if HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#else
|
#else
|
||||||
@@ -1102,7 +1104,11 @@ again:
|
|||||||
* Factor of ten with the number of digits needed for the fractional
|
* Factor of ten with the number of digits needed for the fractional
|
||||||
* part. For example, if the precision is 3, the mask will be 1000.
|
* part. For example, if the precision is 3, the mask will be 1000.
|
||||||
*/
|
*/
|
||||||
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
|
||||||
|
mask = (unsigned long)mypow10(precision);
|
||||||
|
#else
|
||||||
mask = (UINTMAX_T)mypow10(precision);
|
mask = (UINTMAX_T)mypow10(precision);
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* We "cheat" by converting the fractional part to integer by
|
* We "cheat" by converting the fractional part to integer by
|
||||||
* multiplying by a factor of ten.
|
* multiplying by a factor of ten.
|
||||||
@@ -1354,7 +1360,11 @@ cast(LDOUBLE value)
|
|||||||
if (value >= UINTMAX_MAX)
|
if (value >= UINTMAX_MAX)
|
||||||
return UINTMAX_MAX;
|
return UINTMAX_MAX;
|
||||||
|
|
||||||
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
|
||||||
|
result = (unsigned long)value;
|
||||||
|
#else
|
||||||
result = (UINTMAX_T)value;
|
result = (UINTMAX_T)value;
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* At least on NetBSD/sparc64 3.0.2 and 4.99.30, casting long double to
|
* At least on NetBSD/sparc64 3.0.2 and 4.99.30, casting long double to
|
||||||
* an integer type converts e.g. 1.9 to 2 instead of 1 (which violates
|
* an integer type converts e.g. 1.9 to 2 instead of 1 (which violates
|
||||||
|
@@ -33,8 +33,71 @@
|
|||||||
#include "p_debug.h"
|
#include "p_debug.h"
|
||||||
#include "p_format.h"
|
#include "p_format.h"
|
||||||
#include "p_pointer.h"
|
#include "p_pointer.h"
|
||||||
|
|
||||||
|
#if defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT) || defined(PIPE_SUBSYSTEM_WINDOWS_CE)
|
||||||
|
__inline double ceil(double val)
|
||||||
|
{
|
||||||
|
double ceil_val;
|
||||||
|
|
||||||
|
if((val - (long) val) == 0) {
|
||||||
|
ceil_val = val;
|
||||||
|
} else {
|
||||||
|
if(val > 0) {
|
||||||
|
ceil_val = (long) val + 1;
|
||||||
|
} else {
|
||||||
|
ceil_val = (long) val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ceil_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef PIPE_SUBSYSTEM_WINDOWS_CE
|
||||||
|
__inline double floor(double val)
|
||||||
|
{
|
||||||
|
double floor_val;
|
||||||
|
|
||||||
|
if((val - (long) val) == 0) {
|
||||||
|
floor_val = val;
|
||||||
|
} else {
|
||||||
|
if(val > 0) {
|
||||||
|
floor_val = (long) val;
|
||||||
|
} else {
|
||||||
|
floor_val = (long) val - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return floor_val;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#pragma function(pow)
|
||||||
|
__inline double __cdecl pow(double val, double exponent)
|
||||||
|
{
|
||||||
|
/* XXX */
|
||||||
|
assert(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma function(log)
|
||||||
|
__inline double __cdecl log(double val)
|
||||||
|
{
|
||||||
|
/* XXX */
|
||||||
|
assert(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma function(atan2)
|
||||||
|
__inline double __cdecl atan2(double val)
|
||||||
|
{
|
||||||
|
/* XXX */
|
||||||
|
assert(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Reference in New Issue
Block a user