Add some missing bits of GL_SGI_color_table.
This commit is contained in:
parent
ae608b2071
commit
a29e6dd2d2
|
@ -1154,6 +1154,8 @@ ALIAS( GetMinmaxParameteriv, GetMinmaxParameterfv )
|
||||||
ALIAS( GetVertexAttribfvARB, GetVertexAttribdvARB )
|
ALIAS( GetVertexAttribfvARB, GetVertexAttribdvARB )
|
||||||
ALIAS( GetVertexAttribivARB, GetVertexAttribdvARB )
|
ALIAS( GetVertexAttribivARB, GetVertexAttribdvARB )
|
||||||
ALIAS( GetQueryObjectuivARB, GetQueryObjectivARB )
|
ALIAS( GetQueryObjectuivARB, GetQueryObjectivARB )
|
||||||
|
ALIAS( GetColorTableParameterfvSGI, GetColorTableParameterfv )
|
||||||
|
ALIAS( GetColorTableParameterivSGI, GetColorTableParameterfv )
|
||||||
ALIAS( GetVertexAttribfvNV, GetVertexAttribdvNV )
|
ALIAS( GetVertexAttribfvNV, GetVertexAttribdvNV )
|
||||||
ALIAS( GetVertexAttribivNV, GetVertexAttribdvNV )
|
ALIAS( GetVertexAttribivNV, GetVertexAttribdvNV )
|
||||||
ALIAS( PointParameterivNV, PointParameterfvEXT )
|
ALIAS( PointParameterivNV, PointParameterfvEXT )
|
||||||
|
|
|
@ -86,6 +86,8 @@ extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivARB_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
|
||||||
|
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameterfvSGI_size(GLenum);
|
||||||
|
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameterivSGI_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum);
|
||||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum);
|
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum);
|
||||||
|
|
|
@ -463,6 +463,59 @@ int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __glXDisp_GetColorTableSGI(__GLXclientState *cl, GLbyte *pc)
|
||||||
|
{
|
||||||
|
GLint compsize;
|
||||||
|
GLenum format, type, target;
|
||||||
|
GLboolean swapBytes;
|
||||||
|
__GLXcontext *cx;
|
||||||
|
ClientPtr client = cl->client;
|
||||||
|
int error;
|
||||||
|
char *answer, answerBuffer[200];
|
||||||
|
GLint width=0;
|
||||||
|
|
||||||
|
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
|
||||||
|
if (!cx) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
pc += __GLX_VENDPRIV_HDR_SIZE;
|
||||||
|
target = *(GLenum *)(pc + 0);
|
||||||
|
format = *(GLenum *)(pc + 4);
|
||||||
|
type = *(GLenum *)(pc + 8);
|
||||||
|
swapBytes = *(GLboolean *)(pc + 12);
|
||||||
|
|
||||||
|
CALL_GetColorTableParameterivSGI( GET_DISPATCH(), (target, GL_COLOR_TABLE_WIDTH, &width) );
|
||||||
|
/*
|
||||||
|
* The one query above might fail if we're in a state where queries
|
||||||
|
* are illegal, but then width would still be zero anyway.
|
||||||
|
*/
|
||||||
|
compsize = __glGetTexImage_size(target,1,format,type,width,1,1);
|
||||||
|
if (compsize < 0) compsize = 0;
|
||||||
|
|
||||||
|
CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
|
||||||
|
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
|
||||||
|
__glXClearErrorOccured();
|
||||||
|
CALL_GetColorTableSGI( GET_DISPATCH(), (
|
||||||
|
*(GLenum *)(pc + 0),
|
||||||
|
*(GLenum *)(pc + 4),
|
||||||
|
*(GLenum *)(pc + 8),
|
||||||
|
answer
|
||||||
|
) );
|
||||||
|
|
||||||
|
if (__glXErrorOccured()) {
|
||||||
|
__GLX_BEGIN_REPLY(0);
|
||||||
|
__GLX_SEND_HEADER();
|
||||||
|
} else {
|
||||||
|
__GLX_BEGIN_REPLY(compsize);
|
||||||
|
((xGLXGetColorTableReply *)&__glXReply)->width = width;
|
||||||
|
__GLX_SEND_HEADER();
|
||||||
|
__GLX_SEND_VOID_ARRAY(compsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
int __glXDisp_GetCompressedTexImageARB(__GLXclientState *cl, GLbyte *pc)
|
int __glXDisp_GetCompressedTexImageARB(__GLXclientState *cl, GLbyte *pc)
|
||||||
{
|
{
|
||||||
return BadRequest;
|
return BadRequest;
|
||||||
|
|
|
@ -518,6 +518,65 @@ int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __glXDispSwap_GetColorTableSGI(__GLXclientState *cl, GLbyte *pc)
|
||||||
|
{
|
||||||
|
GLint compsize;
|
||||||
|
GLenum format, type, target;
|
||||||
|
GLboolean swapBytes;
|
||||||
|
__GLXcontext *cx;
|
||||||
|
ClientPtr client = cl->client;
|
||||||
|
int error;
|
||||||
|
__GLX_DECLARE_SWAP_VARIABLES;
|
||||||
|
char *answer, answerBuffer[200];
|
||||||
|
GLint width=0;
|
||||||
|
|
||||||
|
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
|
||||||
|
if (!cx) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
pc += __GLX_VENDPRIV_HDR_SIZE;
|
||||||
|
__GLX_SWAP_INT(pc+0);
|
||||||
|
__GLX_SWAP_INT(pc+4);
|
||||||
|
__GLX_SWAP_INT(pc+8);
|
||||||
|
|
||||||
|
format = *(GLenum *)(pc + 4);
|
||||||
|
type = *(GLenum *)(pc + 8);
|
||||||
|
target = *(GLenum *)(pc + 0);
|
||||||
|
swapBytes = *(GLboolean *)(pc + 12);
|
||||||
|
|
||||||
|
CALL_GetColorTableParameterivSGI( GET_DISPATCH(), (target, GL_COLOR_TABLE_WIDTH, &width) );
|
||||||
|
/*
|
||||||
|
* The one query above might fail if we're in a state where queries
|
||||||
|
* are illegal, but then width would still be zero anyway.
|
||||||
|
*/
|
||||||
|
compsize = __glGetTexImage_size(target,1,format,type,width,1,1);
|
||||||
|
if (compsize < 0) compsize = 0;
|
||||||
|
|
||||||
|
CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes) );
|
||||||
|
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
|
||||||
|
__glXClearErrorOccured();
|
||||||
|
CALL_GetColorTableSGI( GET_DISPATCH(), (
|
||||||
|
*(GLenum *)(pc + 0),
|
||||||
|
*(GLenum *)(pc + 4),
|
||||||
|
*(GLenum *)(pc + 8),
|
||||||
|
answer
|
||||||
|
) );
|
||||||
|
|
||||||
|
if (__glXErrorOccured()) {
|
||||||
|
__GLX_BEGIN_REPLY(0);
|
||||||
|
__GLX_SWAP_REPLY_HEADER();
|
||||||
|
} else {
|
||||||
|
__GLX_BEGIN_REPLY(compsize);
|
||||||
|
__GLX_SWAP_REPLY_HEADER();
|
||||||
|
__GLX_SWAP_INT(&width);
|
||||||
|
((xGLXGetColorTableReply *)&__glXReply)->width = width;
|
||||||
|
__GLX_SEND_VOID_ARRAY(compsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
int __glXDispSwap_GetCompressedTexImageARB(__GLXclientState *cl, GLbyte *pc)
|
int __glXDispSwap_GetCompressedTexImageARB(__GLXclientState *cl, GLbyte *pc)
|
||||||
{
|
{
|
||||||
return BadRequest;
|
return BadRequest;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user