mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-08 08:20:14 +01:00
101 lines
2.2 KiB
C
Executable file
101 lines
2.2 KiB
C
Executable file
|
|
#include <GL/gl.h>
|
|
#include <glxserver.h>
|
|
#include <glxext.h>
|
|
|
|
#define WINDOWS_LEAN_AND_CLEAN
|
|
//typedef int BOOL;
|
|
//typedef unsigned short ATOM;
|
|
//typedef unsigned char BYTE;
|
|
#include <windows.h>
|
|
/*
|
|
* GLX implementation that uses Win32's OpenGL
|
|
*/
|
|
|
|
/*
|
|
* Server-side GLX uses these functions which are normally defined
|
|
* in the OpenGL SI.
|
|
*/
|
|
|
|
GLint __glEvalComputeK(GLenum target)
|
|
{
|
|
switch (target) {
|
|
case GL_MAP1_VERTEX_4:
|
|
case GL_MAP1_COLOR_4:
|
|
case GL_MAP1_TEXTURE_COORD_4:
|
|
case GL_MAP2_VERTEX_4:
|
|
case GL_MAP2_COLOR_4:
|
|
case GL_MAP2_TEXTURE_COORD_4:
|
|
return 4;
|
|
case GL_MAP1_VERTEX_3:
|
|
case GL_MAP1_TEXTURE_COORD_3:
|
|
case GL_MAP1_NORMAL:
|
|
case GL_MAP2_VERTEX_3:
|
|
case GL_MAP2_TEXTURE_COORD_3:
|
|
case GL_MAP2_NORMAL:
|
|
return 3;
|
|
case GL_MAP1_TEXTURE_COORD_2:
|
|
case GL_MAP2_TEXTURE_COORD_2:
|
|
return 2;
|
|
case GL_MAP1_TEXTURE_COORD_1:
|
|
case GL_MAP2_TEXTURE_COORD_1:
|
|
case GL_MAP1_INDEX:
|
|
case GL_MAP2_INDEX:
|
|
return 1;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
GLuint __glFloorLog2(GLuint val)
|
|
{
|
|
int c = 0;
|
|
|
|
while (val > 1) {
|
|
c++;
|
|
val >>= 1;
|
|
}
|
|
return c;
|
|
}
|
|
|
|
|
|
/*
|
|
* Wrapper functions
|
|
*/
|
|
|
|
#define RESOLVE(procname, symbol) \
|
|
static Bool init = TRUE; \
|
|
static procname proc = NULL; \
|
|
if (init) { \
|
|
proc = (procname)wglGetProcAddress(symbol); \
|
|
init = FALSE; \
|
|
} \
|
|
if (proc == NULL) { \
|
|
__glXErrorCallBack(NULL, 0); \
|
|
return; \
|
|
}
|
|
|
|
|
|
|
|
|
|
GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
|
|
GLenum type, GLvoid *table )
|
|
{
|
|
RESOLVE(PFNGLGETCOLORTABLEPROC, "glGetColorTableEXT");
|
|
proc(target, format, type, table);
|
|
}
|
|
|
|
GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
|
|
GLfloat *params )
|
|
{
|
|
RESOLVE(PFNGLGETCOLORTABLEPARAMETERFVPROC, "glGetColorTableParameterfvEXT");
|
|
proc(target, pname, params);
|
|
}
|
|
|
|
GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
|
|
GLint *params )
|
|
{
|
|
RESOLVE(PFNGLGETCOLORTABLEPARAMETERIVPROC, "glGetColorTableParameterivEXT");
|
|
proc(target, pname, params);
|
|
}
|
|
|