mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 03:20:33 +01:00
Initial implementation of MESA_texture_array
Shadow sampling from texture arrays is still not implemented. Everything else should be there, though.
This commit is contained in:
parent
9ebffb86a6
commit
bb372f1c9b
30 changed files with 4434 additions and 3077 deletions
|
|
@ -440,6 +440,13 @@ static const char Color4ubVertex3fvSUN_names[] =
|
|||
"";
|
||||
#endif
|
||||
|
||||
#if defined(need_GL_EXT_texture_array)
|
||||
static const char FramebufferTextureLayerEXT_names[] =
|
||||
"iiiii\0" /* Parameter signature */
|
||||
"glFramebufferTextureLayerEXT\0"
|
||||
"";
|
||||
#endif
|
||||
|
||||
#if defined(need_GL_SGIX_list_priority)
|
||||
static const char GetListParameterivSGIX_names[] =
|
||||
"iip\0" /* Parameter signature */
|
||||
|
|
@ -5479,6 +5486,13 @@ static const struct dri_extension_function GL_EXT_texture3D_functions[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if defined(need_GL_EXT_texture_array)
|
||||
static const struct dri_extension_function GL_EXT_texture_array_functions[] = {
|
||||
{ FramebufferTextureLayerEXT_names, FramebufferTextureLayerEXT_remap_index, -1 },
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(need_GL_EXT_texture_object)
|
||||
static const struct dri_extension_function GL_EXT_texture_object_functions[] = {
|
||||
{ PrioritizeTextures_names, -1, 331 },
|
||||
|
|
|
|||
|
|
@ -172,8 +172,7 @@
|
|||
<glx rop="4324"/>
|
||||
</function>
|
||||
|
||||
<function name="GetFramebufferAttachmentParameterivEXT"
|
||||
offset="assign">
|
||||
<function name="GetFramebufferAttachmentParameterivEXT" offset="assign">
|
||||
<param name="target" type="GLenum"/>
|
||||
<param name="attachment" type="GLenum"/>
|
||||
<param name="pname" type="GLenum"/>
|
||||
|
|
@ -186,4 +185,43 @@ offset="assign">
|
|||
<glx rop="4325"/>
|
||||
</function>
|
||||
</category>
|
||||
|
||||
|
||||
|
||||
<category name="GL_EXT_texture_array" number="329">
|
||||
<enum name="TEXTURE_1D_ARRAY_EXT" value="0x8C18"/>
|
||||
<enum name="PROXY_TEXTURE_1D_ARRAY_EXT" value="0x8C19"/>
|
||||
<enum name="TEXTURE_2D_ARRAY_EXT" value="0x8C1A"/>
|
||||
<enum name="PROXY_TEXTURE_2D_ARRAY_EXT" value="0x8C1B"/>
|
||||
|
||||
<enum name="TEXTURE_BINDING_1D_ARRAY_EXT" count="1" value="0x8C1C">
|
||||
<size name="Get" mode="get"/>
|
||||
</enum>
|
||||
|
||||
<enum name="TEXTURE_BINDING_2D_ARRAY_EXT" count="1" value="0x8C1D">
|
||||
<size name="Get" mode="get"/>
|
||||
</enum>
|
||||
|
||||
<enum name="MAX_ARRAY_TEXTURE_LAYERS_EXT" count="1" value="0x88FF">
|
||||
<size name="Get" mode="get"/>
|
||||
</enum>
|
||||
|
||||
<enum name="COMPARE_REF_DEPTH_TO_TEXTURE_EXT" count="1" value="0x884E">
|
||||
<size name="Get" mode="get"/>
|
||||
</enum>
|
||||
|
||||
<enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT" count="1" value="0x8CD4">
|
||||
<size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
|
||||
</enum>
|
||||
|
||||
<function name="FramebufferTextureLayerEXT" offset="assign">
|
||||
<param name="target" type="GLenum"/>
|
||||
<param name="attachment" type="GLenum"/>
|
||||
<param name="texture" type="GLuint"/>
|
||||
<param name="level" type="GLint"/>
|
||||
<param name="layer" type="GLint"/>
|
||||
</function>
|
||||
</category>
|
||||
|
||||
|
||||
</OpenGLAPI>
|
||||
|
|
|
|||
|
|
@ -2362,6 +2362,9 @@
|
|||
#define CALL_BlitFramebufferEXT(disp, parameters) (*((disp)->BlitFramebufferEXT)) parameters
|
||||
#define GET_BlitFramebufferEXT(disp) ((disp)->BlitFramebufferEXT)
|
||||
#define SET_BlitFramebufferEXT(disp, fn) ((disp)->BlitFramebufferEXT = fn)
|
||||
#define CALL_FramebufferTextureLayerEXT(disp, parameters) (*((disp)->FramebufferTextureLayerEXT)) parameters
|
||||
#define GET_FramebufferTextureLayerEXT(disp) ((disp)->FramebufferTextureLayerEXT)
|
||||
#define SET_FramebufferTextureLayerEXT(disp, fn) ((disp)->FramebufferTextureLayerEXT = fn)
|
||||
#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) (*((disp)->ProgramEnvParameters4fvEXT)) parameters
|
||||
#define GET_ProgramEnvParameters4fvEXT(disp) ((disp)->ProgramEnvParameters4fvEXT)
|
||||
#define SET_ProgramEnvParameters4fvEXT(disp, fn) ((disp)->ProgramEnvParameters4fvEXT = fn)
|
||||
|
|
@ -2377,7 +2380,7 @@
|
|||
|
||||
#else
|
||||
|
||||
#define driDispatchRemapTable_size 364
|
||||
#define driDispatchRemapTable_size 365
|
||||
extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
|
||||
#define AttachShader_remap_index 0
|
||||
|
|
@ -2740,10 +2743,11 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
|||
#define IsRenderbufferEXT_remap_index 357
|
||||
#define RenderbufferStorageEXT_remap_index 358
|
||||
#define BlitFramebufferEXT_remap_index 359
|
||||
#define ProgramEnvParameters4fvEXT_remap_index 360
|
||||
#define ProgramLocalParameters4fvEXT_remap_index 361
|
||||
#define GetQueryObjecti64vEXT_remap_index 362
|
||||
#define GetQueryObjectui64vEXT_remap_index 363
|
||||
#define FramebufferTextureLayerEXT_remap_index 360
|
||||
#define ProgramEnvParameters4fvEXT_remap_index 361
|
||||
#define ProgramLocalParameters4fvEXT_remap_index 362
|
||||
#define GetQueryObjecti64vEXT_remap_index 363
|
||||
#define GetQueryObjectui64vEXT_remap_index 364
|
||||
|
||||
#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[AttachShader_remap_index], parameters)
|
||||
#define GET_AttachShader(disp) GET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index])
|
||||
|
|
@ -3825,6 +3829,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
|||
#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), driDispatchRemapTable[BlitFramebufferEXT_remap_index], parameters)
|
||||
#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index])
|
||||
#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index], fn)
|
||||
#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], parameters)
|
||||
#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index])
|
||||
#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], fn)
|
||||
#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], parameters)
|
||||
#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index])
|
||||
#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], fn)
|
||||
|
|
|
|||
|
|
@ -800,11 +800,12 @@
|
|||
#define _gloffset_IsRenderbufferEXT 765
|
||||
#define _gloffset_RenderbufferStorageEXT 766
|
||||
#define _gloffset_BlitFramebufferEXT 767
|
||||
#define _gloffset_ProgramEnvParameters4fvEXT 768
|
||||
#define _gloffset_ProgramLocalParameters4fvEXT 769
|
||||
#define _gloffset_GetQueryObjecti64vEXT 770
|
||||
#define _gloffset_GetQueryObjectui64vEXT 771
|
||||
#define _gloffset_FIRST_DYNAMIC 772
|
||||
#define _gloffset_FramebufferTextureLayerEXT 768
|
||||
#define _gloffset_ProgramEnvParameters4fvEXT 769
|
||||
#define _gloffset_ProgramLocalParameters4fvEXT 770
|
||||
#define _gloffset_GetQueryObjecti64vEXT 771
|
||||
#define _gloffset_GetQueryObjectui64vEXT 772
|
||||
#define _gloffset_FIRST_DYNAMIC 773
|
||||
|
||||
#else
|
||||
|
||||
|
|
@ -1168,6 +1169,7 @@
|
|||
#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index]
|
||||
#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index]
|
||||
#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index]
|
||||
#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]
|
||||
#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]
|
||||
#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index]
|
||||
#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index]
|
||||
|
|
|
|||
|
|
@ -809,10 +809,11 @@ struct _glapi_table
|
|||
GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 765 */
|
||||
void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 766 */
|
||||
void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 767 */
|
||||
void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 768 */
|
||||
void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 769 */
|
||||
void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 770 */
|
||||
void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 771 */
|
||||
void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 768 */
|
||||
void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 769 */
|
||||
void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 770 */
|
||||
void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 771 */
|
||||
void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 772 */
|
||||
};
|
||||
|
||||
#endif /* !defined( _GLAPI_TABLE_H_ ) */
|
||||
|
|
|
|||
|
|
@ -5416,30 +5416,35 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLint srcX0, GLint srcY0, GL
|
|||
DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
|
||||
}
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_768)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_768)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
|
||||
KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
|
||||
{
|
||||
DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
|
||||
DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerEXT(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
|
||||
}
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_769)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_769)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
|
||||
{
|
||||
DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
|
||||
}
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
|
||||
{
|
||||
DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
|
||||
}
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLuint id, GLenum pname, GLint64EXT * params);
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLint64EXT * params);
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLuint id, GLenum pname, GLint64EXT * params)
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLint64EXT * params)
|
||||
{
|
||||
DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
|
||||
}
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLuint64EXT * params);
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_772)(GLuint id, GLenum pname, GLuint64EXT * params);
|
||||
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLuint64EXT * params)
|
||||
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_772)(GLuint id, GLenum pname, GLuint64EXT * params)
|
||||
{
|
||||
DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
|
||||
}
|
||||
|
|
@ -6226,10 +6231,11 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {
|
|||
TABLE_ENTRY(IsRenderbufferEXT),
|
||||
TABLE_ENTRY(RenderbufferStorageEXT),
|
||||
TABLE_ENTRY(_dispatch_stub_767),
|
||||
TABLE_ENTRY(_dispatch_stub_768),
|
||||
TABLE_ENTRY(FramebufferTextureLayerEXT),
|
||||
TABLE_ENTRY(_dispatch_stub_769),
|
||||
TABLE_ENTRY(_dispatch_stub_770),
|
||||
TABLE_ENTRY(_dispatch_stub_771),
|
||||
TABLE_ENTRY(_dispatch_stub_772),
|
||||
/* A whole bunch of no-op functions. These might be called
|
||||
* when someone tries to call a dynamically-registered
|
||||
* extension function without a current rendering context.
|
||||
|
|
|
|||
|
|
@ -820,6 +820,7 @@ static const char gl_string_table[] =
|
|||
"glIsRenderbufferEXT\0"
|
||||
"glRenderbufferStorageEXT\0"
|
||||
"glBlitFramebufferEXT\0"
|
||||
"glFramebufferTextureLayerEXT\0"
|
||||
"glProgramEnvParameters4fvEXT\0"
|
||||
"glProgramLocalParameters4fvEXT\0"
|
||||
"glGetQueryObjecti64vEXT\0"
|
||||
|
|
@ -1138,10 +1139,10 @@ static const char gl_string_table[] =
|
|||
#define gl_dispatch_stub_748 mgl_dispatch_stub_748
|
||||
#define gl_dispatch_stub_749 mgl_dispatch_stub_749
|
||||
#define gl_dispatch_stub_767 mgl_dispatch_stub_767
|
||||
#define gl_dispatch_stub_768 mgl_dispatch_stub_768
|
||||
#define gl_dispatch_stub_769 mgl_dispatch_stub_769
|
||||
#define gl_dispatch_stub_770 mgl_dispatch_stub_770
|
||||
#define gl_dispatch_stub_771 mgl_dispatch_stub_771
|
||||
#define gl_dispatch_stub_772 mgl_dispatch_stub_772
|
||||
#endif /* USE_MGL_NAMESPACE */
|
||||
|
||||
|
||||
|
|
@ -1188,10 +1189,10 @@ extern void gl_dispatch_stub_741(void);
|
|||
extern void gl_dispatch_stub_748(void);
|
||||
extern void gl_dispatch_stub_749(void);
|
||||
extern void gl_dispatch_stub_767(void);
|
||||
extern void gl_dispatch_stub_768(void);
|
||||
extern void gl_dispatch_stub_769(void);
|
||||
extern void gl_dispatch_stub_770(void);
|
||||
extern void gl_dispatch_stub_771(void);
|
||||
extern void gl_dispatch_stub_772(void);
|
||||
#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */
|
||||
|
||||
static const glprocs_table_t static_functions[] = {
|
||||
|
|
@ -1963,279 +1964,280 @@ static const glprocs_table_t static_functions[] = {
|
|||
NAME_FUNC_OFFSET(13404, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
|
||||
NAME_FUNC_OFFSET(13424, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
|
||||
NAME_FUNC_OFFSET(13449, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlitFramebufferEXT),
|
||||
NAME_FUNC_OFFSET(13470, gl_dispatch_stub_768, gl_dispatch_stub_768, NULL, _gloffset_ProgramEnvParameters4fvEXT),
|
||||
NAME_FUNC_OFFSET(13499, gl_dispatch_stub_769, gl_dispatch_stub_769, NULL, _gloffset_ProgramLocalParameters4fvEXT),
|
||||
NAME_FUNC_OFFSET(13530, gl_dispatch_stub_770, gl_dispatch_stub_770, NULL, _gloffset_GetQueryObjecti64vEXT),
|
||||
NAME_FUNC_OFFSET(13554, gl_dispatch_stub_771, gl_dispatch_stub_771, NULL, _gloffset_GetQueryObjectui64vEXT),
|
||||
NAME_FUNC_OFFSET(13579, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
|
||||
NAME_FUNC_OFFSET(13597, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
|
||||
NAME_FUNC_OFFSET(13614, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
|
||||
NAME_FUNC_OFFSET(13630, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident),
|
||||
NAME_FUNC_OFFSET(13655, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
|
||||
NAME_FUNC_OFFSET(13675, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
|
||||
NAME_FUNC_OFFSET(13695, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
|
||||
NAME_FUNC_OFFSET(13718, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
|
||||
NAME_FUNC_OFFSET(13741, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures),
|
||||
NAME_FUNC_OFFSET(13761, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures),
|
||||
NAME_FUNC_OFFSET(13778, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
|
||||
NAME_FUNC_OFFSET(13795, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture),
|
||||
NAME_FUNC_OFFSET(13810, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
|
||||
NAME_FUNC_OFFSET(13834, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
|
||||
NAME_FUNC_OFFSET(13853, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
|
||||
NAME_FUNC_OFFSET(13872, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
|
||||
NAME_FUNC_OFFSET(13888, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
|
||||
NAME_FUNC_OFFSET(13907, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
|
||||
NAME_FUNC_OFFSET(13930, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
|
||||
NAME_FUNC_OFFSET(13946, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
|
||||
NAME_FUNC_OFFSET(13962, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(13989, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14016, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
|
||||
NAME_FUNC_OFFSET(14036, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
|
||||
NAME_FUNC_OFFSET(14055, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
|
||||
NAME_FUNC_OFFSET(14074, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(14104, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(14134, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14164, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14194, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
|
||||
NAME_FUNC_OFFSET(14213, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
|
||||
NAME_FUNC_OFFSET(14236, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
|
||||
NAME_FUNC_OFFSET(14261, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
|
||||
NAME_FUNC_OFFSET(14286, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
|
||||
NAME_FUNC_OFFSET(14313, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
|
||||
NAME_FUNC_OFFSET(14341, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
|
||||
NAME_FUNC_OFFSET(14368, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
|
||||
NAME_FUNC_OFFSET(14396, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
|
||||
NAME_FUNC_OFFSET(14425, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
|
||||
NAME_FUNC_OFFSET(14454, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter),
|
||||
NAME_FUNC_OFFSET(14480, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv),
|
||||
NAME_FUNC_OFFSET(14511, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv),
|
||||
NAME_FUNC_OFFSET(14542, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter),
|
||||
NAME_FUNC_OFFSET(14566, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
|
||||
NAME_FUNC_OFFSET(14589, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram),
|
||||
NAME_FUNC_OFFSET(14607, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv),
|
||||
NAME_FUNC_OFFSET(14636, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv),
|
||||
NAME_FUNC_OFFSET(14665, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax),
|
||||
NAME_FUNC_OFFSET(14680, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv),
|
||||
NAME_FUNC_OFFSET(14706, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv),
|
||||
NAME_FUNC_OFFSET(14732, glHistogram, glHistogram, NULL, _gloffset_Histogram),
|
||||
NAME_FUNC_OFFSET(14747, glMinmax, glMinmax, NULL, _gloffset_Minmax),
|
||||
NAME_FUNC_OFFSET(14759, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
|
||||
NAME_FUNC_OFFSET(14779, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
|
||||
NAME_FUNC_OFFSET(14796, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
|
||||
NAME_FUNC_OFFSET(14812, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
|
||||
NAME_FUNC_OFFSET(14831, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
|
||||
NAME_FUNC_OFFSET(14854, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
|
||||
NAME_FUNC_OFFSET(14870, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
|
||||
NAME_FUNC_OFFSET(14892, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
|
||||
NAME_FUNC_OFFSET(14910, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
|
||||
NAME_FUNC_OFFSET(14929, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
|
||||
NAME_FUNC_OFFSET(14947, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
|
||||
NAME_FUNC_OFFSET(14966, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
|
||||
NAME_FUNC_OFFSET(14984, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
|
||||
NAME_FUNC_OFFSET(15003, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
|
||||
NAME_FUNC_OFFSET(15021, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
|
||||
NAME_FUNC_OFFSET(15040, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
|
||||
NAME_FUNC_OFFSET(15058, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
|
||||
NAME_FUNC_OFFSET(15077, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
|
||||
NAME_FUNC_OFFSET(15095, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
|
||||
NAME_FUNC_OFFSET(15114, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
|
||||
NAME_FUNC_OFFSET(15132, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
|
||||
NAME_FUNC_OFFSET(15151, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
|
||||
NAME_FUNC_OFFSET(15169, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
|
||||
NAME_FUNC_OFFSET(15188, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
|
||||
NAME_FUNC_OFFSET(15206, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
|
||||
NAME_FUNC_OFFSET(15225, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
|
||||
NAME_FUNC_OFFSET(15243, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
|
||||
NAME_FUNC_OFFSET(15262, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
|
||||
NAME_FUNC_OFFSET(15280, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
|
||||
NAME_FUNC_OFFSET(15299, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
|
||||
NAME_FUNC_OFFSET(15317, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
|
||||
NAME_FUNC_OFFSET(15336, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
|
||||
NAME_FUNC_OFFSET(15354, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
|
||||
NAME_FUNC_OFFSET(15373, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
|
||||
NAME_FUNC_OFFSET(15391, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
|
||||
NAME_FUNC_OFFSET(15410, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
|
||||
NAME_FUNC_OFFSET(15428, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
|
||||
NAME_FUNC_OFFSET(15447, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
|
||||
NAME_FUNC_OFFSET(15465, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
|
||||
NAME_FUNC_OFFSET(15484, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
|
||||
NAME_FUNC_OFFSET(15507, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
|
||||
NAME_FUNC_OFFSET(15530, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
|
||||
NAME_FUNC_OFFSET(15553, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
|
||||
NAME_FUNC_OFFSET(15576, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
|
||||
NAME_FUNC_OFFSET(15593, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
|
||||
NAME_FUNC_OFFSET(15616, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
|
||||
NAME_FUNC_OFFSET(15639, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
|
||||
NAME_FUNC_OFFSET(15662, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
|
||||
NAME_FUNC_OFFSET(15688, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
|
||||
NAME_FUNC_OFFSET(15714, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
|
||||
NAME_FUNC_OFFSET(15740, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
|
||||
NAME_FUNC_OFFSET(15764, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
|
||||
NAME_FUNC_OFFSET(15791, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
|
||||
NAME_FUNC_OFFSET(15817, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
|
||||
NAME_FUNC_OFFSET(15837, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
|
||||
NAME_FUNC_OFFSET(15857, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
|
||||
NAME_FUNC_OFFSET(15877, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
|
||||
NAME_FUNC_OFFSET(15894, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
|
||||
NAME_FUNC_OFFSET(15912, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
|
||||
NAME_FUNC_OFFSET(15929, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
|
||||
NAME_FUNC_OFFSET(15947, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
|
||||
NAME_FUNC_OFFSET(15964, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
|
||||
NAME_FUNC_OFFSET(15982, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
|
||||
NAME_FUNC_OFFSET(15999, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
|
||||
NAME_FUNC_OFFSET(16017, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
|
||||
NAME_FUNC_OFFSET(16034, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
|
||||
NAME_FUNC_OFFSET(16052, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
|
||||
NAME_FUNC_OFFSET(16069, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
|
||||
NAME_FUNC_OFFSET(16087, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
|
||||
NAME_FUNC_OFFSET(16104, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
|
||||
NAME_FUNC_OFFSET(16122, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
|
||||
NAME_FUNC_OFFSET(16139, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
|
||||
NAME_FUNC_OFFSET(16157, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
|
||||
NAME_FUNC_OFFSET(16174, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
|
||||
NAME_FUNC_OFFSET(16192, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
|
||||
NAME_FUNC_OFFSET(16211, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
|
||||
NAME_FUNC_OFFSET(16230, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
|
||||
NAME_FUNC_OFFSET(16249, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
|
||||
NAME_FUNC_OFFSET(16268, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
|
||||
NAME_FUNC_OFFSET(16288, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
|
||||
NAME_FUNC_OFFSET(16308, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
|
||||
NAME_FUNC_OFFSET(16328, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
|
||||
NAME_FUNC_OFFSET(16345, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
|
||||
NAME_FUNC_OFFSET(16363, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
|
||||
NAME_FUNC_OFFSET(16380, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
|
||||
NAME_FUNC_OFFSET(16398, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
|
||||
NAME_FUNC_OFFSET(16415, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
|
||||
NAME_FUNC_OFFSET(16433, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
|
||||
NAME_FUNC_OFFSET(16455, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
|
||||
NAME_FUNC_OFFSET(16468, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
|
||||
NAME_FUNC_OFFSET(16481, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
|
||||
NAME_FUNC_OFFSET(16497, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
|
||||
NAME_FUNC_OFFSET(16513, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
|
||||
NAME_FUNC_OFFSET(16526, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
|
||||
NAME_FUNC_OFFSET(16549, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
|
||||
NAME_FUNC_OFFSET(16569, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
|
||||
NAME_FUNC_OFFSET(16588, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
|
||||
NAME_FUNC_OFFSET(16599, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
|
||||
NAME_FUNC_OFFSET(16611, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
|
||||
NAME_FUNC_OFFSET(16625, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
|
||||
NAME_FUNC_OFFSET(16638, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
|
||||
NAME_FUNC_OFFSET(16654, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
|
||||
NAME_FUNC_OFFSET(16665, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
|
||||
NAME_FUNC_OFFSET(16678, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
|
||||
NAME_FUNC_OFFSET(16697, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
|
||||
NAME_FUNC_OFFSET(16717, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
|
||||
NAME_FUNC_OFFSET(16730, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
|
||||
NAME_FUNC_OFFSET(16740, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
|
||||
NAME_FUNC_OFFSET(16756, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
|
||||
NAME_FUNC_OFFSET(16775, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
|
||||
NAME_FUNC_OFFSET(16793, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
|
||||
NAME_FUNC_OFFSET(16814, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
|
||||
NAME_FUNC_OFFSET(16829, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
|
||||
NAME_FUNC_OFFSET(16844, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
|
||||
NAME_FUNC_OFFSET(16858, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
|
||||
NAME_FUNC_OFFSET(16873, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
|
||||
NAME_FUNC_OFFSET(16885, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
|
||||
NAME_FUNC_OFFSET(16898, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
|
||||
NAME_FUNC_OFFSET(16910, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
|
||||
NAME_FUNC_OFFSET(16923, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
|
||||
NAME_FUNC_OFFSET(16935, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
|
||||
NAME_FUNC_OFFSET(16948, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
|
||||
NAME_FUNC_OFFSET(16960, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
|
||||
NAME_FUNC_OFFSET(16973, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
|
||||
NAME_FUNC_OFFSET(16985, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
|
||||
NAME_FUNC_OFFSET(16998, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
|
||||
NAME_FUNC_OFFSET(17010, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
|
||||
NAME_FUNC_OFFSET(17023, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
|
||||
NAME_FUNC_OFFSET(17035, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
|
||||
NAME_FUNC_OFFSET(17048, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
|
||||
NAME_FUNC_OFFSET(17060, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
|
||||
NAME_FUNC_OFFSET(17073, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
|
||||
NAME_FUNC_OFFSET(17092, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
|
||||
NAME_FUNC_OFFSET(17111, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
|
||||
NAME_FUNC_OFFSET(17130, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
|
||||
NAME_FUNC_OFFSET(17143, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
|
||||
NAME_FUNC_OFFSET(17161, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
|
||||
NAME_FUNC_OFFSET(17182, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
|
||||
NAME_FUNC_OFFSET(17200, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
|
||||
NAME_FUNC_OFFSET(17220, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
|
||||
NAME_FUNC_OFFSET(17234, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
|
||||
NAME_FUNC_OFFSET(17251, gl_dispatch_stub_568, gl_dispatch_stub_568, NULL, _gloffset_SampleMaskSGIS),
|
||||
NAME_FUNC_OFFSET(17267, gl_dispatch_stub_569, gl_dispatch_stub_569, NULL, _gloffset_SamplePatternSGIS),
|
||||
NAME_FUNC_OFFSET(17286, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17304, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17325, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17347, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17366, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17388, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17411, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
|
||||
NAME_FUNC_OFFSET(17430, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
|
||||
NAME_FUNC_OFFSET(17450, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
|
||||
NAME_FUNC_OFFSET(17469, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
|
||||
NAME_FUNC_OFFSET(17489, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
|
||||
NAME_FUNC_OFFSET(17508, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
|
||||
NAME_FUNC_OFFSET(17528, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
|
||||
NAME_FUNC_OFFSET(17547, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
|
||||
NAME_FUNC_OFFSET(17567, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
|
||||
NAME_FUNC_OFFSET(17586, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
|
||||
NAME_FUNC_OFFSET(17606, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
|
||||
NAME_FUNC_OFFSET(17626, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
|
||||
NAME_FUNC_OFFSET(17647, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
|
||||
NAME_FUNC_OFFSET(17667, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
|
||||
NAME_FUNC_OFFSET(17688, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
|
||||
NAME_FUNC_OFFSET(17708, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
|
||||
NAME_FUNC_OFFSET(17729, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
|
||||
NAME_FUNC_OFFSET(17753, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
|
||||
NAME_FUNC_OFFSET(17771, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
|
||||
NAME_FUNC_OFFSET(17791, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
|
||||
NAME_FUNC_OFFSET(17809, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
|
||||
NAME_FUNC_OFFSET(17821, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
|
||||
NAME_FUNC_OFFSET(17834, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
|
||||
NAME_FUNC_OFFSET(17846, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
|
||||
NAME_FUNC_OFFSET(17859, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
|
||||
NAME_FUNC_OFFSET(17879, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
|
||||
NAME_FUNC_OFFSET(17903, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
|
||||
NAME_FUNC_OFFSET(17917, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
|
||||
NAME_FUNC_OFFSET(17934, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
|
||||
NAME_FUNC_OFFSET(17949, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
|
||||
NAME_FUNC_OFFSET(17967, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
|
||||
NAME_FUNC_OFFSET(17981, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
|
||||
NAME_FUNC_OFFSET(17998, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
|
||||
NAME_FUNC_OFFSET(18013, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
|
||||
NAME_FUNC_OFFSET(18031, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
|
||||
NAME_FUNC_OFFSET(18045, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
|
||||
NAME_FUNC_OFFSET(18062, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
|
||||
NAME_FUNC_OFFSET(18077, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
|
||||
NAME_FUNC_OFFSET(18095, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
|
||||
NAME_FUNC_OFFSET(18109, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
|
||||
NAME_FUNC_OFFSET(18126, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
|
||||
NAME_FUNC_OFFSET(18141, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
|
||||
NAME_FUNC_OFFSET(18159, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
|
||||
NAME_FUNC_OFFSET(18173, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
|
||||
NAME_FUNC_OFFSET(18190, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
|
||||
NAME_FUNC_OFFSET(18205, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
|
||||
NAME_FUNC_OFFSET(18223, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
|
||||
NAME_FUNC_OFFSET(18237, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
|
||||
NAME_FUNC_OFFSET(18254, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
|
||||
NAME_FUNC_OFFSET(18269, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
|
||||
NAME_FUNC_OFFSET(18287, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
|
||||
NAME_FUNC_OFFSET(18301, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
|
||||
NAME_FUNC_OFFSET(18318, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
|
||||
NAME_FUNC_OFFSET(18333, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
|
||||
NAME_FUNC_OFFSET(18351, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
|
||||
NAME_FUNC_OFFSET(18365, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
|
||||
NAME_FUNC_OFFSET(18382, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
|
||||
NAME_FUNC_OFFSET(18397, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
|
||||
NAME_FUNC_OFFSET(18415, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
|
||||
NAME_FUNC_OFFSET(18432, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
|
||||
NAME_FUNC_OFFSET(18452, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
|
||||
NAME_FUNC_OFFSET(18469, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
|
||||
NAME_FUNC_OFFSET(18495, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
|
||||
NAME_FUNC_OFFSET(18524, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
|
||||
NAME_FUNC_OFFSET(18539, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
|
||||
NAME_FUNC_OFFSET(18557, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
|
||||
NAME_FUNC_OFFSET(18576, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT),
|
||||
NAME_FUNC_OFFSET(18600, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT),
|
||||
NAME_FUNC_OFFSET(13470, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
|
||||
NAME_FUNC_OFFSET(13499, gl_dispatch_stub_769, gl_dispatch_stub_769, NULL, _gloffset_ProgramEnvParameters4fvEXT),
|
||||
NAME_FUNC_OFFSET(13528, gl_dispatch_stub_770, gl_dispatch_stub_770, NULL, _gloffset_ProgramLocalParameters4fvEXT),
|
||||
NAME_FUNC_OFFSET(13559, gl_dispatch_stub_771, gl_dispatch_stub_771, NULL, _gloffset_GetQueryObjecti64vEXT),
|
||||
NAME_FUNC_OFFSET(13583, gl_dispatch_stub_772, gl_dispatch_stub_772, NULL, _gloffset_GetQueryObjectui64vEXT),
|
||||
NAME_FUNC_OFFSET(13608, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
|
||||
NAME_FUNC_OFFSET(13626, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
|
||||
NAME_FUNC_OFFSET(13643, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
|
||||
NAME_FUNC_OFFSET(13659, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident),
|
||||
NAME_FUNC_OFFSET(13684, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
|
||||
NAME_FUNC_OFFSET(13704, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
|
||||
NAME_FUNC_OFFSET(13724, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
|
||||
NAME_FUNC_OFFSET(13747, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
|
||||
NAME_FUNC_OFFSET(13770, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures),
|
||||
NAME_FUNC_OFFSET(13790, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures),
|
||||
NAME_FUNC_OFFSET(13807, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
|
||||
NAME_FUNC_OFFSET(13824, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture),
|
||||
NAME_FUNC_OFFSET(13839, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
|
||||
NAME_FUNC_OFFSET(13863, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
|
||||
NAME_FUNC_OFFSET(13882, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
|
||||
NAME_FUNC_OFFSET(13901, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
|
||||
NAME_FUNC_OFFSET(13917, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
|
||||
NAME_FUNC_OFFSET(13936, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
|
||||
NAME_FUNC_OFFSET(13959, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
|
||||
NAME_FUNC_OFFSET(13975, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
|
||||
NAME_FUNC_OFFSET(13991, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(14018, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14045, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
|
||||
NAME_FUNC_OFFSET(14065, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
|
||||
NAME_FUNC_OFFSET(14084, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
|
||||
NAME_FUNC_OFFSET(14103, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(14133, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
|
||||
NAME_FUNC_OFFSET(14163, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14193, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
|
||||
NAME_FUNC_OFFSET(14223, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
|
||||
NAME_FUNC_OFFSET(14242, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
|
||||
NAME_FUNC_OFFSET(14265, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
|
||||
NAME_FUNC_OFFSET(14290, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
|
||||
NAME_FUNC_OFFSET(14315, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
|
||||
NAME_FUNC_OFFSET(14342, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
|
||||
NAME_FUNC_OFFSET(14370, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
|
||||
NAME_FUNC_OFFSET(14397, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
|
||||
NAME_FUNC_OFFSET(14425, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
|
||||
NAME_FUNC_OFFSET(14454, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
|
||||
NAME_FUNC_OFFSET(14483, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter),
|
||||
NAME_FUNC_OFFSET(14509, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv),
|
||||
NAME_FUNC_OFFSET(14540, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv),
|
||||
NAME_FUNC_OFFSET(14571, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter),
|
||||
NAME_FUNC_OFFSET(14595, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
|
||||
NAME_FUNC_OFFSET(14618, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram),
|
||||
NAME_FUNC_OFFSET(14636, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv),
|
||||
NAME_FUNC_OFFSET(14665, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv),
|
||||
NAME_FUNC_OFFSET(14694, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax),
|
||||
NAME_FUNC_OFFSET(14709, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv),
|
||||
NAME_FUNC_OFFSET(14735, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv),
|
||||
NAME_FUNC_OFFSET(14761, glHistogram, glHistogram, NULL, _gloffset_Histogram),
|
||||
NAME_FUNC_OFFSET(14776, glMinmax, glMinmax, NULL, _gloffset_Minmax),
|
||||
NAME_FUNC_OFFSET(14788, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
|
||||
NAME_FUNC_OFFSET(14808, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
|
||||
NAME_FUNC_OFFSET(14825, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
|
||||
NAME_FUNC_OFFSET(14841, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
|
||||
NAME_FUNC_OFFSET(14860, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
|
||||
NAME_FUNC_OFFSET(14883, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
|
||||
NAME_FUNC_OFFSET(14899, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
|
||||
NAME_FUNC_OFFSET(14921, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
|
||||
NAME_FUNC_OFFSET(14939, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
|
||||
NAME_FUNC_OFFSET(14958, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
|
||||
NAME_FUNC_OFFSET(14976, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
|
||||
NAME_FUNC_OFFSET(14995, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
|
||||
NAME_FUNC_OFFSET(15013, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
|
||||
NAME_FUNC_OFFSET(15032, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
|
||||
NAME_FUNC_OFFSET(15050, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
|
||||
NAME_FUNC_OFFSET(15069, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
|
||||
NAME_FUNC_OFFSET(15087, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
|
||||
NAME_FUNC_OFFSET(15106, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
|
||||
NAME_FUNC_OFFSET(15124, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
|
||||
NAME_FUNC_OFFSET(15143, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
|
||||
NAME_FUNC_OFFSET(15161, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
|
||||
NAME_FUNC_OFFSET(15180, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
|
||||
NAME_FUNC_OFFSET(15198, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
|
||||
NAME_FUNC_OFFSET(15217, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
|
||||
NAME_FUNC_OFFSET(15235, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
|
||||
NAME_FUNC_OFFSET(15254, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
|
||||
NAME_FUNC_OFFSET(15272, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
|
||||
NAME_FUNC_OFFSET(15291, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
|
||||
NAME_FUNC_OFFSET(15309, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
|
||||
NAME_FUNC_OFFSET(15328, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
|
||||
NAME_FUNC_OFFSET(15346, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
|
||||
NAME_FUNC_OFFSET(15365, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
|
||||
NAME_FUNC_OFFSET(15383, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
|
||||
NAME_FUNC_OFFSET(15402, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
|
||||
NAME_FUNC_OFFSET(15420, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
|
||||
NAME_FUNC_OFFSET(15439, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
|
||||
NAME_FUNC_OFFSET(15457, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
|
||||
NAME_FUNC_OFFSET(15476, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
|
||||
NAME_FUNC_OFFSET(15494, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
|
||||
NAME_FUNC_OFFSET(15513, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
|
||||
NAME_FUNC_OFFSET(15536, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
|
||||
NAME_FUNC_OFFSET(15559, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
|
||||
NAME_FUNC_OFFSET(15582, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
|
||||
NAME_FUNC_OFFSET(15605, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
|
||||
NAME_FUNC_OFFSET(15622, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
|
||||
NAME_FUNC_OFFSET(15645, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
|
||||
NAME_FUNC_OFFSET(15668, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
|
||||
NAME_FUNC_OFFSET(15691, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
|
||||
NAME_FUNC_OFFSET(15717, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
|
||||
NAME_FUNC_OFFSET(15743, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
|
||||
NAME_FUNC_OFFSET(15769, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
|
||||
NAME_FUNC_OFFSET(15793, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
|
||||
NAME_FUNC_OFFSET(15820, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
|
||||
NAME_FUNC_OFFSET(15846, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
|
||||
NAME_FUNC_OFFSET(15866, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
|
||||
NAME_FUNC_OFFSET(15886, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
|
||||
NAME_FUNC_OFFSET(15906, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
|
||||
NAME_FUNC_OFFSET(15923, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
|
||||
NAME_FUNC_OFFSET(15941, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
|
||||
NAME_FUNC_OFFSET(15958, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
|
||||
NAME_FUNC_OFFSET(15976, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
|
||||
NAME_FUNC_OFFSET(15993, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
|
||||
NAME_FUNC_OFFSET(16011, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
|
||||
NAME_FUNC_OFFSET(16028, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
|
||||
NAME_FUNC_OFFSET(16046, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
|
||||
NAME_FUNC_OFFSET(16063, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
|
||||
NAME_FUNC_OFFSET(16081, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
|
||||
NAME_FUNC_OFFSET(16098, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
|
||||
NAME_FUNC_OFFSET(16116, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
|
||||
NAME_FUNC_OFFSET(16133, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
|
||||
NAME_FUNC_OFFSET(16151, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
|
||||
NAME_FUNC_OFFSET(16168, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
|
||||
NAME_FUNC_OFFSET(16186, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
|
||||
NAME_FUNC_OFFSET(16203, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
|
||||
NAME_FUNC_OFFSET(16221, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
|
||||
NAME_FUNC_OFFSET(16240, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
|
||||
NAME_FUNC_OFFSET(16259, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
|
||||
NAME_FUNC_OFFSET(16278, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
|
||||
NAME_FUNC_OFFSET(16297, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
|
||||
NAME_FUNC_OFFSET(16317, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
|
||||
NAME_FUNC_OFFSET(16337, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
|
||||
NAME_FUNC_OFFSET(16357, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
|
||||
NAME_FUNC_OFFSET(16374, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
|
||||
NAME_FUNC_OFFSET(16392, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
|
||||
NAME_FUNC_OFFSET(16409, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
|
||||
NAME_FUNC_OFFSET(16427, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
|
||||
NAME_FUNC_OFFSET(16444, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
|
||||
NAME_FUNC_OFFSET(16462, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
|
||||
NAME_FUNC_OFFSET(16484, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
|
||||
NAME_FUNC_OFFSET(16497, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
|
||||
NAME_FUNC_OFFSET(16510, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
|
||||
NAME_FUNC_OFFSET(16526, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
|
||||
NAME_FUNC_OFFSET(16542, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
|
||||
NAME_FUNC_OFFSET(16555, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
|
||||
NAME_FUNC_OFFSET(16578, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
|
||||
NAME_FUNC_OFFSET(16598, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
|
||||
NAME_FUNC_OFFSET(16617, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
|
||||
NAME_FUNC_OFFSET(16628, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
|
||||
NAME_FUNC_OFFSET(16640, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
|
||||
NAME_FUNC_OFFSET(16654, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
|
||||
NAME_FUNC_OFFSET(16667, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
|
||||
NAME_FUNC_OFFSET(16683, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
|
||||
NAME_FUNC_OFFSET(16694, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
|
||||
NAME_FUNC_OFFSET(16707, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
|
||||
NAME_FUNC_OFFSET(16726, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
|
||||
NAME_FUNC_OFFSET(16746, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
|
||||
NAME_FUNC_OFFSET(16759, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
|
||||
NAME_FUNC_OFFSET(16769, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
|
||||
NAME_FUNC_OFFSET(16785, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
|
||||
NAME_FUNC_OFFSET(16804, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
|
||||
NAME_FUNC_OFFSET(16822, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
|
||||
NAME_FUNC_OFFSET(16843, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
|
||||
NAME_FUNC_OFFSET(16858, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
|
||||
NAME_FUNC_OFFSET(16873, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
|
||||
NAME_FUNC_OFFSET(16887, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
|
||||
NAME_FUNC_OFFSET(16902, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
|
||||
NAME_FUNC_OFFSET(16914, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
|
||||
NAME_FUNC_OFFSET(16927, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
|
||||
NAME_FUNC_OFFSET(16939, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
|
||||
NAME_FUNC_OFFSET(16952, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
|
||||
NAME_FUNC_OFFSET(16964, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
|
||||
NAME_FUNC_OFFSET(16977, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
|
||||
NAME_FUNC_OFFSET(16989, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
|
||||
NAME_FUNC_OFFSET(17002, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
|
||||
NAME_FUNC_OFFSET(17014, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
|
||||
NAME_FUNC_OFFSET(17027, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
|
||||
NAME_FUNC_OFFSET(17039, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
|
||||
NAME_FUNC_OFFSET(17052, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
|
||||
NAME_FUNC_OFFSET(17064, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
|
||||
NAME_FUNC_OFFSET(17077, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
|
||||
NAME_FUNC_OFFSET(17089, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
|
||||
NAME_FUNC_OFFSET(17102, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
|
||||
NAME_FUNC_OFFSET(17121, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
|
||||
NAME_FUNC_OFFSET(17140, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
|
||||
NAME_FUNC_OFFSET(17159, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
|
||||
NAME_FUNC_OFFSET(17172, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
|
||||
NAME_FUNC_OFFSET(17190, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
|
||||
NAME_FUNC_OFFSET(17211, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
|
||||
NAME_FUNC_OFFSET(17229, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
|
||||
NAME_FUNC_OFFSET(17249, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
|
||||
NAME_FUNC_OFFSET(17263, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
|
||||
NAME_FUNC_OFFSET(17280, gl_dispatch_stub_568, gl_dispatch_stub_568, NULL, _gloffset_SampleMaskSGIS),
|
||||
NAME_FUNC_OFFSET(17296, gl_dispatch_stub_569, gl_dispatch_stub_569, NULL, _gloffset_SamplePatternSGIS),
|
||||
NAME_FUNC_OFFSET(17315, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17333, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17354, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
|
||||
NAME_FUNC_OFFSET(17376, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17395, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17417, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
|
||||
NAME_FUNC_OFFSET(17440, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
|
||||
NAME_FUNC_OFFSET(17459, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
|
||||
NAME_FUNC_OFFSET(17479, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
|
||||
NAME_FUNC_OFFSET(17498, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
|
||||
NAME_FUNC_OFFSET(17518, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
|
||||
NAME_FUNC_OFFSET(17537, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
|
||||
NAME_FUNC_OFFSET(17557, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
|
||||
NAME_FUNC_OFFSET(17576, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
|
||||
NAME_FUNC_OFFSET(17596, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
|
||||
NAME_FUNC_OFFSET(17615, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
|
||||
NAME_FUNC_OFFSET(17635, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
|
||||
NAME_FUNC_OFFSET(17655, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
|
||||
NAME_FUNC_OFFSET(17676, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
|
||||
NAME_FUNC_OFFSET(17696, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
|
||||
NAME_FUNC_OFFSET(17717, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
|
||||
NAME_FUNC_OFFSET(17737, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
|
||||
NAME_FUNC_OFFSET(17758, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
|
||||
NAME_FUNC_OFFSET(17782, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
|
||||
NAME_FUNC_OFFSET(17800, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
|
||||
NAME_FUNC_OFFSET(17820, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
|
||||
NAME_FUNC_OFFSET(17838, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
|
||||
NAME_FUNC_OFFSET(17850, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
|
||||
NAME_FUNC_OFFSET(17863, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
|
||||
NAME_FUNC_OFFSET(17875, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
|
||||
NAME_FUNC_OFFSET(17888, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
|
||||
NAME_FUNC_OFFSET(17908, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
|
||||
NAME_FUNC_OFFSET(17932, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
|
||||
NAME_FUNC_OFFSET(17946, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
|
||||
NAME_FUNC_OFFSET(17963, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
|
||||
NAME_FUNC_OFFSET(17978, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
|
||||
NAME_FUNC_OFFSET(17996, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
|
||||
NAME_FUNC_OFFSET(18010, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
|
||||
NAME_FUNC_OFFSET(18027, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
|
||||
NAME_FUNC_OFFSET(18042, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
|
||||
NAME_FUNC_OFFSET(18060, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
|
||||
NAME_FUNC_OFFSET(18074, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
|
||||
NAME_FUNC_OFFSET(18091, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
|
||||
NAME_FUNC_OFFSET(18106, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
|
||||
NAME_FUNC_OFFSET(18124, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
|
||||
NAME_FUNC_OFFSET(18138, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
|
||||
NAME_FUNC_OFFSET(18155, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
|
||||
NAME_FUNC_OFFSET(18170, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
|
||||
NAME_FUNC_OFFSET(18188, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
|
||||
NAME_FUNC_OFFSET(18202, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
|
||||
NAME_FUNC_OFFSET(18219, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
|
||||
NAME_FUNC_OFFSET(18234, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
|
||||
NAME_FUNC_OFFSET(18252, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
|
||||
NAME_FUNC_OFFSET(18266, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
|
||||
NAME_FUNC_OFFSET(18283, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
|
||||
NAME_FUNC_OFFSET(18298, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
|
||||
NAME_FUNC_OFFSET(18316, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
|
||||
NAME_FUNC_OFFSET(18330, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
|
||||
NAME_FUNC_OFFSET(18347, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
|
||||
NAME_FUNC_OFFSET(18362, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
|
||||
NAME_FUNC_OFFSET(18380, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
|
||||
NAME_FUNC_OFFSET(18394, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
|
||||
NAME_FUNC_OFFSET(18411, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
|
||||
NAME_FUNC_OFFSET(18426, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
|
||||
NAME_FUNC_OFFSET(18444, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
|
||||
NAME_FUNC_OFFSET(18461, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
|
||||
NAME_FUNC_OFFSET(18481, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
|
||||
NAME_FUNC_OFFSET(18498, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
|
||||
NAME_FUNC_OFFSET(18524, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
|
||||
NAME_FUNC_OFFSET(18553, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
|
||||
NAME_FUNC_OFFSET(18568, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
|
||||
NAME_FUNC_OFFSET(18586, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
|
||||
NAME_FUNC_OFFSET(18605, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT),
|
||||
NAME_FUNC_OFFSET(18629, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT),
|
||||
NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -744,6 +744,18 @@ pop_texture_group(GLcontext *ctx, const struct gl_texture_attrib *texAttrib)
|
|||
target = GL_TEXTURE_RECTANGLE_NV;
|
||||
obj = &unit->SavedRect;
|
||||
break;
|
||||
case 5:
|
||||
if (!ctx->Extensions.MESA_texture_array)
|
||||
continue;
|
||||
target = GL_TEXTURE_1D_ARRAY_EXT;
|
||||
obj = &unit->Saved1DArray;
|
||||
break;
|
||||
case 6:
|
||||
if (!ctx->Extensions.MESA_texture_array)
|
||||
continue;
|
||||
target = GL_TEXTURE_2D_ARRAY_EXT;
|
||||
obj = &unit->Saved2DArray;
|
||||
break;
|
||||
default:
|
||||
; /* silence warnings */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,6 +108,9 @@
|
|||
/** Maximum rectangular texture size - GL_NV_texture_rectangle */
|
||||
#define MAX_TEXTURE_RECT_SIZE 2048
|
||||
|
||||
/** Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array */
|
||||
#define MAX_ARRAY_TEXTURE_LAYERS 64
|
||||
|
||||
/** Number of texture units - GL_ARB_multitexture
|
||||
* This needs to be the larger of MAX_TEXTURE_COORD_UNITS and
|
||||
* MAX_TEXTURE_IMAGE_UNITS seen below, since MAX_TEXTURE_UNITS is used
|
||||
|
|
|
|||
|
|
@ -467,12 +467,22 @@ alloc_shared_state( GLcontext *ctx )
|
|||
if (!ss->DefaultRect)
|
||||
goto cleanup;
|
||||
|
||||
ss->Default1DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_1D_ARRAY_EXT);
|
||||
if (!ss->Default1DArray)
|
||||
goto cleanup;
|
||||
|
||||
ss->Default2DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_2D_ARRAY_EXT);
|
||||
if (!ss->Default2DArray)
|
||||
goto cleanup;
|
||||
|
||||
/* Effectively bind the default textures to all texture units */
|
||||
ss->Default1D->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->Default2D->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->Default3D->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->DefaultCubeMap->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->DefaultRect->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->Default1DArray->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
ss->Default2DArray->RefCount += MAX_TEXTURE_IMAGE_UNITS;
|
||||
|
||||
_glthread_INIT_MUTEX(ss->TexMutex);
|
||||
ss->TextureStateStamp = 0;
|
||||
|
|
@ -772,6 +782,7 @@ _mesa_init_constants(GLcontext *ctx)
|
|||
ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS;
|
||||
ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS;
|
||||
ctx->Const.MaxTextureRectSize = MAX_TEXTURE_RECT_SIZE;
|
||||
ctx->Const.MaxArrayTextureLayers = MAX_ARRAY_TEXTURE_LAYERS;
|
||||
ctx->Const.MaxTextureCoordUnits = MAX_TEXTURE_COORD_UNITS;
|
||||
ctx->Const.MaxTextureImageUnits = MAX_TEXTURE_IMAGE_UNITS;
|
||||
ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureCoordUnits,
|
||||
|
|
|
|||
|
|
@ -922,6 +922,22 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state)
|
|||
ctx->ATIFragmentShader.Enabled = state;
|
||||
break;
|
||||
#endif
|
||||
|
||||
/* GL_MESA_texture_array */
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
CHECK_EXTENSION(MESA_texture_array, cap);
|
||||
if (!enable_texture(ctx, state, TEXTURE_1D_ARRAY_BIT)) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
CHECK_EXTENSION(MESA_texture_array, cap);
|
||||
if (!enable_texture(ctx, state, TEXTURE_2D_ARRAY_BIT)) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"%s(0x%x)", state ? "glEnable" : "glDisable", cap);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -145,6 +145,7 @@ static const struct {
|
|||
{ OFF, "GL_MESA_packed_depth_stencil", F(MESA_packed_depth_stencil) },
|
||||
{ OFF, "GL_MESA_program_debug", F(MESA_program_debug) },
|
||||
{ OFF, "GL_MESA_resize_buffers", F(MESA_resize_buffers) },
|
||||
{ OFF, "GL_MESA_texture_array", F(MESA_texture_array) },
|
||||
{ OFF, "GL_MESA_ycbcr_texture", F(MESA_ycbcr_texture) },
|
||||
{ ON, "GL_MESA_window_pos", F(ARB_window_pos) },
|
||||
{ OFF, "GL_NV_blend_square", F(NV_blend_square) },
|
||||
|
|
@ -270,6 +271,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx)
|
|||
ctx->Extensions.MESA_program_debug = GL_TRUE;
|
||||
#endif
|
||||
ctx->Extensions.MESA_resize_buffers = GL_TRUE;
|
||||
ctx->Extensions.MESA_texture_array = GL_TRUE;
|
||||
ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;
|
||||
ctx->Extensions.NV_blend_square = GL_TRUE;
|
||||
/*ctx->Extensions.NV_light_max_exponent = GL_TRUE;*/
|
||||
|
|
|
|||
|
|
@ -1179,9 +1179,16 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target,
|
|||
|
||||
texObj = _mesa_lookup_texture(ctx, texture);
|
||||
if (texObj != NULL) {
|
||||
err = (texObj->Target == GL_TEXTURE_CUBE_MAP)
|
||||
? !IS_CUBE_FACE(textarget)
|
||||
: (texObj->Target != textarget);
|
||||
if (textarget == 0) {
|
||||
err = (texObj->Target != GL_TEXTURE_3D) &&
|
||||
(texObj->Target != GL_TEXTURE_1D_ARRAY_EXT) &&
|
||||
(texObj->Target != GL_TEXTURE_2D_ARRAY_EXT);
|
||||
}
|
||||
else {
|
||||
err = (texObj->Target == GL_TEXTURE_CUBE_MAP)
|
||||
? !IS_CUBE_FACE(textarget)
|
||||
: (texObj->Target != textarget);
|
||||
}
|
||||
}
|
||||
|
||||
if (err) {
|
||||
|
|
@ -1195,11 +1202,19 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target,
|
|||
const GLint maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1);
|
||||
if (zoffset < 0 || zoffset >= maxSize) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glFramebufferTexture%sEXT(zoffset)",
|
||||
caller);
|
||||
"glFramebufferTexture%sEXT(zoffset)", caller);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if ((texObj->Target == GL_TEXTURE_1D_ARRAY_EXT) ||
|
||||
(texObj->Target == GL_TEXTURE_2D_ARRAY_EXT)) {
|
||||
if (zoffset < 0 || zoffset >= ctx->Const.MaxArrayTextureLayers) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glFramebufferTexture%sEXT(layer)", caller);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((level < 0) ||
|
||||
(level >= _mesa_max_texture_levels(ctx, texObj->Target))) {
|
||||
|
|
@ -1291,6 +1306,17 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLint layer)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
framebuffer_texture(ctx, "Layer", target, attachment, 0, texture,
|
||||
level, layer);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
|
||||
GLenum renderbufferTarget,
|
||||
|
|
|
|||
|
|
@ -112,6 +112,10 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
|
|||
GLenum textarget, GLuint texture,
|
||||
GLint level, GLint zoffset);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLint layer);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
|
||||
GLenum renderbuffertarget,
|
||||
|
|
|
|||
|
|
@ -425,12 +425,18 @@ StateVars = [
|
|||
( "GL_TEXTURE_1D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D)"], "", None ),
|
||||
( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", None ),
|
||||
( "GL_TEXTURE_3D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_3D)"], "", None ),
|
||||
( "GL_TEXTURE_1D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)"], "", ["MESA_texture_array"] ),
|
||||
( "GL_TEXTURE_2D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)"], "", ["MESA_texture_array"] ),
|
||||
( "GL_TEXTURE_BINDING_1D", GLint,
|
||||
["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name"], "", None ),
|
||||
( "GL_TEXTURE_BINDING_2D", GLint,
|
||||
["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name"], "", None ),
|
||||
( "GL_TEXTURE_BINDING_3D", GLint,
|
||||
["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name"], "", None ),
|
||||
( "GL_TEXTURE_BINDING_1D_ARRAY_EXT", GLint,
|
||||
["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1DArray->Name"], "", ["MESA_texture_array"] ),
|
||||
( "GL_TEXTURE_BINDING_2D_ARRAY_EXT", GLint,
|
||||
["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2DArray->Name"], "", ["MESA_texture_array"] ),
|
||||
( "GL_TEXTURE_ENV_COLOR", GLfloatN,
|
||||
["color[0]", "color[1]", "color[2]", "color[3]"],
|
||||
"const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;",
|
||||
|
|
|
|||
|
|
@ -551,7 +551,7 @@ make_2d_mipmap(const struct gl_texture_format *format, GLint border,
|
|||
|
||||
/* Compute src and dst pointers, skipping any border */
|
||||
srcA = srcPtr + border * ((srcWidth + 1) * bpt);
|
||||
if (srcHeight > 1)
|
||||
if (srcHeight > 1)
|
||||
srcB = srcA + srcRowStride;
|
||||
else
|
||||
srcB = srcA;
|
||||
|
|
@ -796,6 +796,136 @@ make_3d_mipmap(const struct gl_texture_format *format, GLint border,
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
make_1d_stack_mipmap(const struct gl_texture_format *format, GLint border,
|
||||
GLint srcWidth, GLubyte *srcPtr,
|
||||
GLint dstWidth, GLint dstHeight, GLubyte *dstPtr)
|
||||
{
|
||||
const GLint bpt = format->TexelBytes;
|
||||
const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
|
||||
const GLint dstWidthNB = dstWidth - 2 * border;
|
||||
const GLint dstHeightNB = dstHeight - 2 * border;
|
||||
const GLint srcRowStride = bpt * srcWidth;
|
||||
const GLint dstRowStride = bpt * dstWidth;
|
||||
const GLubyte *src;
|
||||
GLubyte *dst;
|
||||
GLint row;
|
||||
|
||||
/* Compute src and dst pointers, skipping any border */
|
||||
src = srcPtr + border * ((srcWidth + 1) * bpt);
|
||||
dst = dstPtr + border * ((dstWidth + 1) * bpt);
|
||||
|
||||
for (row = 0; row < dstHeightNB; row++) {
|
||||
do_row(format, srcWidthNB, src, src,
|
||||
dstWidthNB, dst);
|
||||
src += srcRowStride;
|
||||
dst += dstRowStride;
|
||||
}
|
||||
|
||||
if (border) {
|
||||
/* copy left-most pixel from source */
|
||||
MEMCPY(dstPtr, srcPtr, bpt);
|
||||
/* copy right-most pixel from source */
|
||||
MEMCPY(dstPtr + (dstWidth - 1) * bpt,
|
||||
srcPtr + (srcWidth - 1) * bpt,
|
||||
bpt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \bugs
|
||||
* There is quite a bit of refactoring that could be done with this function
|
||||
* and \c make_2d_mipmap.
|
||||
*/
|
||||
static void
|
||||
make_2d_stack_mipmap(const struct gl_texture_format *format, GLint border,
|
||||
GLint srcWidth, GLint srcHeight, const GLubyte *srcPtr,
|
||||
GLint dstWidth, GLint dstHeight, GLint dstDepth,
|
||||
GLubyte *dstPtr)
|
||||
{
|
||||
const GLint bpt = format->TexelBytes;
|
||||
const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
|
||||
const GLint dstWidthNB = dstWidth - 2 * border;
|
||||
const GLint dstHeightNB = dstHeight - 2 * border;
|
||||
const GLint dstDepthNB = dstDepth - 2 * border;
|
||||
const GLint srcRowStride = bpt * srcWidth;
|
||||
const GLint dstRowStride = bpt * dstWidth;
|
||||
const GLubyte *srcA, *srcB;
|
||||
GLubyte *dst;
|
||||
GLint layer;
|
||||
GLint row;
|
||||
|
||||
/* Compute src and dst pointers, skipping any border */
|
||||
srcA = srcPtr + border * ((srcWidth + 1) * bpt);
|
||||
if (srcHeight > 1)
|
||||
srcB = srcA + srcRowStride;
|
||||
else
|
||||
srcB = srcA;
|
||||
dst = dstPtr + border * ((dstWidth + 1) * bpt);
|
||||
|
||||
for (layer = 0; layer < dstDepthNB; layer++) {
|
||||
for (row = 0; row < dstHeightNB; row++) {
|
||||
do_row(format, srcWidthNB, srcA, srcB,
|
||||
dstWidthNB, dst);
|
||||
srcA += 2 * srcRowStride;
|
||||
srcB += 2 * srcRowStride;
|
||||
dst += dstRowStride;
|
||||
}
|
||||
|
||||
/* This is ugly but probably won't be used much */
|
||||
if (border > 0) {
|
||||
/* fill in dest border */
|
||||
/* lower-left border pixel */
|
||||
MEMCPY(dstPtr, srcPtr, bpt);
|
||||
/* lower-right border pixel */
|
||||
MEMCPY(dstPtr + (dstWidth - 1) * bpt,
|
||||
srcPtr + (srcWidth - 1) * bpt, bpt);
|
||||
/* upper-left border pixel */
|
||||
MEMCPY(dstPtr + dstWidth * (dstHeight - 1) * bpt,
|
||||
srcPtr + srcWidth * (srcHeight - 1) * bpt, bpt);
|
||||
/* upper-right border pixel */
|
||||
MEMCPY(dstPtr + (dstWidth * dstHeight - 1) * bpt,
|
||||
srcPtr + (srcWidth * srcHeight - 1) * bpt, bpt);
|
||||
/* lower border */
|
||||
do_row(format, srcWidthNB,
|
||||
srcPtr + bpt,
|
||||
srcPtr + bpt,
|
||||
dstWidthNB, dstPtr + bpt);
|
||||
/* upper border */
|
||||
do_row(format, srcWidthNB,
|
||||
srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt,
|
||||
srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt,
|
||||
dstWidthNB,
|
||||
dstPtr + (dstWidth * (dstHeight - 1) + 1) * bpt);
|
||||
/* left and right borders */
|
||||
if (srcHeight == dstHeight) {
|
||||
/* copy border pixel from src to dst */
|
||||
for (row = 1; row < srcHeight; row++) {
|
||||
MEMCPY(dstPtr + dstWidth * row * bpt,
|
||||
srcPtr + srcWidth * row * bpt, bpt);
|
||||
MEMCPY(dstPtr + (dstWidth * row + dstWidth - 1) * bpt,
|
||||
srcPtr + (srcWidth * row + srcWidth - 1) * bpt, bpt);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* average two src pixels each dest pixel */
|
||||
for (row = 0; row < dstHeightNB; row += 2) {
|
||||
do_row(format, 1,
|
||||
srcPtr + (srcWidth * (row * 2 + 1)) * bpt,
|
||||
srcPtr + (srcWidth * (row * 2 + 2)) * bpt,
|
||||
1, dstPtr + (dstWidth * row + 1) * bpt);
|
||||
do_row(format, 1,
|
||||
srcPtr + (srcWidth * (row * 2 + 1) + srcWidth - 1) * bpt,
|
||||
srcPtr + (srcWidth * (row * 2 + 2) + srcWidth - 1) * bpt,
|
||||
1, dstPtr + (dstWidth * row + 1 + dstWidth - 1) * bpt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* For GL_SGIX_generate_mipmap:
|
||||
* Generate a complete set of mipmaps from texObj's base-level image.
|
||||
|
|
@ -897,13 +1027,15 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||
else {
|
||||
dstWidth = srcWidth; /* can't go smaller */
|
||||
}
|
||||
if (srcHeight - 2 * border > 1) {
|
||||
if ((srcHeight - 2 * border > 1) &&
|
||||
(texObj->Target != GL_TEXTURE_1D_ARRAY_EXT)) {
|
||||
dstHeight = (srcHeight - 2 * border) / 2 + 2 * border;
|
||||
}
|
||||
else {
|
||||
dstHeight = srcHeight; /* can't go smaller */
|
||||
}
|
||||
if (srcDepth - 2 * border > 1) {
|
||||
if ((srcDepth - 2 * border > 1) &&
|
||||
(texObj->Target != GL_TEXTURE_2D_ARRAY_EXT)) {
|
||||
dstDepth = (srcDepth - 2 * border) / 2 + 2 * border;
|
||||
}
|
||||
else {
|
||||
|
|
@ -1007,6 +1139,16 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||
srcWidth, srcHeight, srcDepth, srcData,
|
||||
dstWidth, dstHeight, dstDepth, dstData);
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
make_1d_stack_mipmap(convertFormat, border,
|
||||
srcWidth, srcData,
|
||||
dstWidth, dstHeight, dstData);
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
make_2d_stack_mipmap(convertFormat, border,
|
||||
srcWidth, srcHeight, srcData,
|
||||
dstWidth, dstHeight, dstDepth, dstData);
|
||||
break;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
/* no mipmaps, do nothing */
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1127,7 +1127,7 @@ struct gl_stencil_attrib
|
|||
};
|
||||
|
||||
|
||||
#define NUM_TEXTURE_TARGETS 5 /* 1D, 2D, 3D, CUBE and RECT */
|
||||
#define NUM_TEXTURE_TARGETS 7 /* 1D, 2D, 3D, CUBE, RECT, 1D_STACK, and 2D_STACK */
|
||||
|
||||
/**
|
||||
* An index for each type of texture object
|
||||
|
|
@ -1138,6 +1138,8 @@ struct gl_stencil_attrib
|
|||
#define TEXTURE_3D_INDEX 2
|
||||
#define TEXTURE_CUBE_INDEX 3
|
||||
#define TEXTURE_RECT_INDEX 4
|
||||
#define TEXTURE_1D_ARRAY_INDEX 5
|
||||
#define TEXTURE_2D_ARRAY_INDEX 6
|
||||
/*@}*/
|
||||
|
||||
/**
|
||||
|
|
@ -1150,6 +1152,8 @@ struct gl_stencil_attrib
|
|||
#define TEXTURE_3D_BIT (1 << TEXTURE_3D_INDEX)
|
||||
#define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX)
|
||||
#define TEXTURE_RECT_BIT (1 << TEXTURE_RECT_INDEX)
|
||||
#define TEXTURE_1D_ARRAY_BIT (1 << TEXTURE_1D_ARRAY_INDEX)
|
||||
#define TEXTURE_2D_ARRAY_BIT (1 << TEXTURE_2D_ARRAY_INDEX)
|
||||
/*@}*/
|
||||
|
||||
|
||||
|
|
@ -1520,6 +1524,8 @@ struct gl_texture_unit
|
|||
struct gl_texture_object *Current3D;
|
||||
struct gl_texture_object *CurrentCubeMap; /**< GL_ARB_texture_cube_map */
|
||||
struct gl_texture_object *CurrentRect; /**< GL_NV_texture_rectangle */
|
||||
struct gl_texture_object *Current1DArray; /**< GL_MESA_texture_array */
|
||||
struct gl_texture_object *Current2DArray; /**< GL_MESA_texture_array */
|
||||
|
||||
struct gl_texture_object *_Current; /**< Points to really enabled tex obj */
|
||||
|
||||
|
|
@ -1528,6 +1534,8 @@ struct gl_texture_unit
|
|||
struct gl_texture_object Saved3D;
|
||||
struct gl_texture_object SavedCubeMap;
|
||||
struct gl_texture_object SavedRect;
|
||||
struct gl_texture_object Saved1DArray;
|
||||
struct gl_texture_object Saved2DArray;
|
||||
|
||||
/* GL_SGI_texture_color_table */
|
||||
struct gl_color_table ColorTable;
|
||||
|
|
@ -1572,6 +1580,8 @@ struct gl_texture_attrib
|
|||
struct gl_texture_object *Proxy3D;
|
||||
struct gl_texture_object *ProxyCubeMap;
|
||||
struct gl_texture_object *ProxyRect;
|
||||
struct gl_texture_object *Proxy1DArray;
|
||||
struct gl_texture_object *Proxy2DArray;
|
||||
|
||||
/** GL_EXT_shared_texture_palette */
|
||||
GLboolean SharedPalette;
|
||||
|
|
@ -2156,6 +2166,8 @@ struct gl_shared_state
|
|||
struct gl_texture_object *Default3D;
|
||||
struct gl_texture_object *DefaultCubeMap;
|
||||
struct gl_texture_object *DefaultRect;
|
||||
struct gl_texture_object *Default1DArray;
|
||||
struct gl_texture_object *Default2DArray;
|
||||
/*@}*/
|
||||
|
||||
/**
|
||||
|
|
@ -2322,17 +2334,24 @@ struct gl_renderbuffer
|
|||
*/
|
||||
struct gl_renderbuffer_attachment
|
||||
{
|
||||
GLenum Type; /* GL_NONE or GL_TEXTURE or GL_RENDERBUFFER_EXT */
|
||||
GLenum Type; /**< \c GL_NONE or \c GL_TEXTURE or \c GL_RENDERBUFFER_EXT */
|
||||
GLboolean Complete;
|
||||
|
||||
/* IF Type == GL_RENDERBUFFER_EXT: */
|
||||
/**
|
||||
* If \c Type is \c GL_RENDERBUFFER_EXT, this stores a pointer to the
|
||||
* application supplied renderbuffer object.
|
||||
*/
|
||||
struct gl_renderbuffer *Renderbuffer;
|
||||
|
||||
/* IF Type == GL_TEXTURE: */
|
||||
/**
|
||||
* If \c Type is \c GL_TEXTURE, this stores a pointer to the application
|
||||
* supplied texture object.
|
||||
*/
|
||||
struct gl_texture_object *Texture;
|
||||
GLuint TextureLevel;
|
||||
GLuint CubeMapFace; /* 0 .. 5, for cube map textures */
|
||||
GLuint Zoffset; /* for 3D textures */
|
||||
GLuint TextureLevel; /**< Attached mipmap level. */
|
||||
GLuint CubeMapFace; /**< 0 .. 5, for cube map textures. */
|
||||
GLuint Zoffset; /**< Slice for 3D textures, or layer for both 1D
|
||||
* and 2D array textures */
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -2438,6 +2457,7 @@ struct gl_constants
|
|||
GLint MaxTextureLevels; /**< Maximum number of allowed mipmap levels. */
|
||||
GLint Max3DTextureLevels; /**< Maximum number of allowed mipmap levels for 3D texture targets. */
|
||||
GLint MaxCubeTextureLevels; /**< Maximum number of allowed mipmap levels for GL_ARB_texture_cube_map */
|
||||
GLint MaxArrayTextureLayers; /**< Maximum number of layers in an array texture. */
|
||||
GLint MaxTextureRectSize; /* GL_NV_texture_rectangle */
|
||||
GLuint MaxTextureCoordUnits;
|
||||
GLuint MaxTextureImageUnits;
|
||||
|
|
@ -2586,6 +2606,7 @@ struct gl_extensions
|
|||
GLboolean MESA_program_debug;
|
||||
GLboolean MESA_resize_buffers;
|
||||
GLboolean MESA_ycbcr_texture;
|
||||
GLboolean MESA_texture_array;
|
||||
GLboolean NV_blend_square;
|
||||
GLboolean NV_fragment_program;
|
||||
GLboolean NV_light_max_exponent;
|
||||
|
|
|
|||
|
|
@ -812,6 +812,11 @@ _mesa_init_exec_table(struct _glapi_table *exec)
|
|||
SET_ProgramEnvParameters4fvEXT(exec, _mesa_ProgramEnvParameters4fvEXT);
|
||||
SET_ProgramLocalParameters4fvEXT(exec, _mesa_ProgramLocalParameters4fvEXT);
|
||||
#endif
|
||||
|
||||
/* GL_MESA_texture_array / GL_EXT_texture_array */
|
||||
#if FEATURE_EXT_framebuffer_object
|
||||
SET_FramebufferTextureLayerEXT(exec, _mesa_FramebufferTextureLayerEXT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -629,6 +629,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj,
|
|||
case GL_TEXTURE_1D:
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_3D:
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
tObj->Image[0][level] = texImage;
|
||||
break;
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
|
||||
|
|
@ -733,7 +735,9 @@ _mesa_is_proxy_texture(GLenum target)
|
|||
target == GL_PROXY_TEXTURE_2D ||
|
||||
target == GL_PROXY_TEXTURE_3D ||
|
||||
target == GL_PROXY_TEXTURE_CUBE_MAP_ARB ||
|
||||
target == GL_PROXY_TEXTURE_RECTANGLE_NV);
|
||||
target == GL_PROXY_TEXTURE_RECTANGLE_NV ||
|
||||
target == GL_PROXY_TEXTURE_1D_ARRAY_EXT ||
|
||||
target == GL_PROXY_TEXTURE_2D_ARRAY_EXT);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -783,6 +787,18 @@ _mesa_select_tex_object(GLcontext *ctx, const struct gl_texture_unit *texUnit,
|
|||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
return ctx->Extensions.NV_texture_rectangle
|
||||
? ctx->Texture.ProxyRect : NULL;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array
|
||||
? texUnit->Current1DArray : NULL;
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array
|
||||
? ctx->Texture.Proxy1DArray : NULL;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array
|
||||
? texUnit->Current2DArray : NULL;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array
|
||||
? ctx->Texture.Proxy2DArray : NULL;
|
||||
default:
|
||||
_mesa_problem(NULL, "bad target in _mesa_select_tex_object()");
|
||||
return NULL;
|
||||
|
|
@ -848,6 +864,13 @@ _mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_object *texObj,
|
|||
else
|
||||
return NULL;
|
||||
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
return (ctx->Extensions.MESA_texture_array)
|
||||
? texObj->Image[0][level] : NULL;
|
||||
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -973,6 +996,36 @@ _mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level)
|
|||
texImage->TexObject = ctx->Texture.ProxyRect;
|
||||
}
|
||||
return texImage;
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.Proxy1DArray->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.Proxy1DArray->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.Proxy1DArray;
|
||||
}
|
||||
return texImage;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.Proxy2DArray->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.Proxy2DArray->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.Proxy2DArray;
|
||||
}
|
||||
return texImage;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -998,6 +1051,10 @@ _mesa_max_texture_levels(GLcontext *ctx, GLenum target)
|
|||
case GL_PROXY_TEXTURE_1D:
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_PROXY_TEXTURE_2D:
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
return ctx->Const.MaxTextureLevels;
|
||||
case GL_TEXTURE_3D:
|
||||
case GL_PROXY_TEXTURE_3D:
|
||||
|
|
@ -1292,6 +1349,36 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
return GL_FALSE;
|
||||
}
|
||||
return GL_TRUE;
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or level */
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (height < 1 || height > ctx->Const.MaxArrayTextureLayers) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
return GL_TRUE;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
height < 2 * border || height > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(height - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or height or level */
|
||||
return GL_FALSE;
|
||||
}
|
||||
if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
return GL_TRUE;
|
||||
default:
|
||||
_mesa_problem(ctx, "Invalid target in _mesa_test_proxy_teximage");
|
||||
return GL_FALSE;
|
||||
|
|
@ -1398,6 +1485,10 @@ texture_error_check( GLcontext *ctx, GLenum target,
|
|||
}
|
||||
proxy_target = GL_PROXY_TEXTURE_RECTANGLE_NV;
|
||||
}
|
||||
else if (target == GL_PROXY_TEXTURE_1D_ARRAY_EXT ||
|
||||
target == GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
proxy_target = GL_PROXY_TEXTURE_1D_ARRAY_EXT;
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glTexImage2D(target)");
|
||||
return GL_TRUE;
|
||||
|
|
@ -1407,6 +1498,10 @@ texture_error_check( GLcontext *ctx, GLenum target,
|
|||
if (target == GL_PROXY_TEXTURE_3D || target == GL_TEXTURE_3D) {
|
||||
proxy_target = GL_PROXY_TEXTURE_3D;
|
||||
}
|
||||
else if (target == GL_PROXY_TEXTURE_2D_ARRAY_EXT ||
|
||||
target == GL_TEXTURE_2D_ARRAY_EXT) {
|
||||
proxy_target = GL_PROXY_TEXTURE_2D_ARRAY_EXT;
|
||||
}
|
||||
else {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexImage3D(target)" );
|
||||
return GL_TRUE;
|
||||
|
|
@ -1595,13 +1690,25 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (target == GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (target != GL_TEXTURE_2D) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (dimensions == 3) {
|
||||
if (target != GL_TEXTURE_3D) {
|
||||
if (target == GL_TEXTURE_2D_ARRAY_EXT) {
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (target != GL_TEXTURE_3D) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
@ -1855,6 +1962,17 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
format, type,
|
||||
width, height, 1, border);
|
||||
}
|
||||
else if (target == GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)");
|
||||
return GL_TRUE;
|
||||
}
|
||||
sizeOK = ctx->Driver.TestProxyTexImage(ctx,
|
||||
GL_PROXY_TEXTURE_1D_ARRAY_EXT,
|
||||
level, internalFormat,
|
||||
format, type,
|
||||
width, height, 1, border);
|
||||
}
|
||||
else {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)" );
|
||||
return GL_TRUE;
|
||||
|
|
@ -1968,15 +2086,23 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (target == GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (target != GL_TEXTURE_2D) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
else if (dimensions == 3) {
|
||||
if (target != GL_TEXTURE_3D) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3D(target)" );
|
||||
return GL_TRUE;
|
||||
if (((target != GL_TEXTURE_2D_ARRAY_EXT) ||
|
||||
(!ctx->Extensions.MESA_texture_array))
|
||||
&& (target != GL_TEXTURE_3D)) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3D(target)" );
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2393,7 +2519,9 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
|
||||
target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) ||
|
||||
(ctx->Extensions.NV_texture_rectangle &&
|
||||
target == GL_TEXTURE_RECTANGLE_NV)) {
|
||||
target == GL_TEXTURE_RECTANGLE_NV) ||
|
||||
(ctx->Extensions.MESA_texture_array &&
|
||||
target == GL_TEXTURE_1D_ARRAY_EXT)) {
|
||||
/* non-proxy target */
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
|
@ -2451,7 +2579,9 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
(target == GL_PROXY_TEXTURE_CUBE_MAP_ARB &&
|
||||
ctx->Extensions.ARB_texture_cube_map) ||
|
||||
(target == GL_PROXY_TEXTURE_RECTANGLE_NV &&
|
||||
ctx->Extensions.NV_texture_rectangle)) {
|
||||
ctx->Extensions.NV_texture_rectangle) ||
|
||||
(ctx->Extensions.MESA_texture_array &&
|
||||
target == GL_PROXY_TEXTURE_1D_ARRAY_EXT)) {
|
||||
/* Proxy texture: check for errors and update proxy state */
|
||||
struct gl_texture_image *texImage;
|
||||
texImage = _mesa_get_proxy_tex_image(ctx, target, level);
|
||||
|
|
@ -2491,7 +2621,9 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
if (target == GL_TEXTURE_3D) {
|
||||
if (target == GL_TEXTURE_3D ||
|
||||
(ctx->Extensions.MESA_texture_array &&
|
||||
target == GL_TEXTURE_2D_ARRAY_EXT)) {
|
||||
/* non-proxy target */
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
|
@ -2544,7 +2676,9 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
|
|||
out:
|
||||
_mesa_unlock_texture(ctx, texObj);
|
||||
}
|
||||
else if (target == GL_PROXY_TEXTURE_3D) {
|
||||
else if (target == GL_PROXY_TEXTURE_3D ||
|
||||
(ctx->Extensions.MESA_texture_array &&
|
||||
target == GL_PROXY_TEXTURE_2D_ARRAY_EXT)) {
|
||||
/* Proxy texture: check for errors and update proxy state */
|
||||
struct gl_texture_image *texImage;
|
||||
texImage = _mesa_get_proxy_tex_image(ctx, target, level);
|
||||
|
|
|
|||
|
|
@ -104,7 +104,9 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
|
|||
target == GL_TEXTURE_2D ||
|
||||
target == GL_TEXTURE_3D ||
|
||||
target == GL_TEXTURE_CUBE_MAP_ARB ||
|
||||
target == GL_TEXTURE_RECTANGLE_NV);
|
||||
target == GL_TEXTURE_RECTANGLE_NV ||
|
||||
target == GL_TEXTURE_1D_ARRAY_EXT ||
|
||||
target == GL_TEXTURE_2D_ARRAY_EXT);
|
||||
|
||||
_mesa_bzero(obj, sizeof(*obj));
|
||||
/* init the non-zero fields */
|
||||
|
|
@ -279,11 +281,13 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
|
|||
}
|
||||
|
||||
/* Compute _MaxLevel */
|
||||
if (t->Target == GL_TEXTURE_1D) {
|
||||
if ((t->Target == GL_TEXTURE_1D) ||
|
||||
(t->Target == GL_TEXTURE_1D_ARRAY_EXT)) {
|
||||
maxLog2 = t->Image[0][baseLevel]->WidthLog2;
|
||||
maxLevels = ctx->Const.MaxTextureLevels;
|
||||
}
|
||||
else if (t->Target == GL_TEXTURE_2D) {
|
||||
else if ((t->Target == GL_TEXTURE_2D) ||
|
||||
(t->Target == GL_TEXTURE_2D_ARRAY_EXT)) {
|
||||
maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2,
|
||||
t->Image[0][baseLevel]->HeightLog2);
|
||||
maxLevels = ctx->Const.MaxTextureLevels;
|
||||
|
|
@ -365,7 +369,8 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
|
|||
}
|
||||
|
||||
/* Test things which depend on number of texture image dimensions */
|
||||
if (t->Target == GL_TEXTURE_1D) {
|
||||
if ((t->Target == GL_TEXTURE_1D) ||
|
||||
(t->Target == GL_TEXTURE_1D_ARRAY_EXT)) {
|
||||
/* Test 1-D mipmaps */
|
||||
GLuint width = t->Image[0][baseLevel]->Width2;
|
||||
for (i = baseLevel + 1; i < maxLevels; i++) {
|
||||
|
|
@ -389,7 +394,8 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (t->Target == GL_TEXTURE_2D) {
|
||||
else if ((t->Target == GL_TEXTURE_2D) ||
|
||||
(t->Target == GL_TEXTURE_2D_ARRAY_EXT)) {
|
||||
/* Test 2-D mipmaps */
|
||||
GLuint width = t->Image[0][baseLevel]->Width2;
|
||||
GLuint height = t->Image[0][baseLevel]->Height2;
|
||||
|
|
@ -652,6 +658,14 @@ unbind_texobj_from_texunits(GLcontext *ctx, struct gl_texture_object *texObj)
|
|||
curr = &unit->CurrentRect;
|
||||
unit->CurrentRect = ctx->Shared->DefaultRect;
|
||||
}
|
||||
else if (texObj == unit->Current1DArray) {
|
||||
curr = &unit->Current1DArray;
|
||||
unit->CurrentRect = ctx->Shared->Default1DArray;
|
||||
}
|
||||
else if (texObj == unit->Current2DArray) {
|
||||
curr = &unit->Current1DArray;
|
||||
unit->CurrentRect = ctx->Shared->Default2DArray;
|
||||
}
|
||||
|
||||
if (curr) {
|
||||
(*curr)->RefCount++;
|
||||
|
|
@ -796,6 +810,20 @@ _mesa_BindTexture( GLenum target, GLuint texName )
|
|||
}
|
||||
oldTexObj = texUnit->CurrentRect;
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" );
|
||||
return;
|
||||
}
|
||||
oldTexObj = texUnit->Current1DArray;
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" );
|
||||
return;
|
||||
}
|
||||
oldTexObj = texUnit->Current2DArray;
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" );
|
||||
return;
|
||||
|
|
@ -832,6 +860,12 @@ _mesa_BindTexture( GLenum target, GLuint texName )
|
|||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
newTexObj = ctx->Shared->DefaultRect;
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
newTexObj = ctx->Shared->Default1DArray;
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
newTexObj = ctx->Shared->Default2DArray;
|
||||
break;
|
||||
default:
|
||||
; /* Bad targets are caught above */
|
||||
}
|
||||
|
|
@ -902,6 +936,12 @@ _mesa_BindTexture( GLenum target, GLuint texName )
|
|||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
texUnit->CurrentRect = newTexObj;
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
texUnit->Current1DArray = newTexObj;
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
texUnit->Current2DArray = newTexObj;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "bad target in BindTexture");
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -16,10 +16,13 @@
|
|||
*/
|
||||
struct texture_renderbuffer
|
||||
{
|
||||
struct gl_renderbuffer Base; /* Base class object */
|
||||
struct gl_renderbuffer Base; /**< Base class object */
|
||||
struct gl_texture_image *TexImage;
|
||||
StoreTexelFunc Store;
|
||||
GLint Zoffset;
|
||||
GLint Yoffset; /**< Layer for 1D array textures. */
|
||||
GLint Zoffset; /**< Layer for 2D array textures, or slice
|
||||
* for 3D textures
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -38,6 +41,8 @@ texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
ASSERT(trb->TexImage->Width == rb->Width);
|
||||
ASSERT(trb->TexImage->Height == rb->Height);
|
||||
|
||||
y += trb->Yoffset;
|
||||
|
||||
if (rb->DataType == CHAN_TYPE) {
|
||||
GLchan *rgbaOut = (GLchan *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
|
|
@ -87,15 +92,16 @@ texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
if (rb->DataType == CHAN_TYPE) {
|
||||
GLchan *rgbaOut = (GLchan *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i], z,
|
||||
rgbaOut + 4 * i);
|
||||
trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i] + trb->Yoffset,
|
||||
z, rgbaOut + 4 * i);
|
||||
}
|
||||
}
|
||||
else if (rb->DataType == GL_UNSIGNED_INT) {
|
||||
GLuint *zValues = (GLuint *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
GLfloat flt;
|
||||
trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i], z, &flt);
|
||||
trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i] + trb->Yoffset,
|
||||
z, &flt);
|
||||
#if 0
|
||||
zValues[i] = (GLuint) (flt * 0xffffffff);
|
||||
#else
|
||||
|
|
@ -107,7 +113,8 @@ texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
GLuint *zValues = (GLuint *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
GLfloat flt;
|
||||
trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i], z, &flt);
|
||||
trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i] + trb->Yoffset,
|
||||
z, &flt);
|
||||
zValues[i] = ((GLuint) (flt * 0xffffff)) << 8;
|
||||
}
|
||||
}
|
||||
|
|
@ -129,6 +136,8 @@ texture_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
const GLint z = trb->Zoffset;
|
||||
GLuint i;
|
||||
|
||||
y += trb->Yoffset;
|
||||
|
||||
if (rb->DataType == CHAN_TYPE) {
|
||||
const GLchan *rgba = (const GLchan *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
|
|
@ -170,6 +179,8 @@ texture_put_mono_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
const GLint z = trb->Zoffset;
|
||||
GLuint i;
|
||||
|
||||
y += trb->Yoffset;
|
||||
|
||||
if (rb->DataType == CHAN_TYPE) {
|
||||
const GLchan *rgba = (const GLchan *) value;
|
||||
for (i = 0; i < count; i++) {
|
||||
|
|
@ -215,7 +226,7 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
const GLchan *rgba = (const GLchan *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, rgba);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, rgba);
|
||||
}
|
||||
rgba += 4;
|
||||
}
|
||||
|
|
@ -224,7 +235,8 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
const GLuint *zValues = (const GLuint *) values;
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, zValues + i);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z,
|
||||
zValues + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -233,7 +245,7 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
|
|||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
GLfloat flt = (zValues[i] >> 8) * (1.0 / 0xffffff);
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, &flt);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &flt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -257,7 +269,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||
const GLchan *rgba = (const GLchan *) value;
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, rgba);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, rgba);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -265,7 +277,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||
const GLuint zValue = *((const GLuint *) value);
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, &zValue);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &zValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -274,7 +286,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||
const GLfloat flt = (zValue >> 8) * (1.0 / 0xffffff);
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!mask || mask[i]) {
|
||||
trb->Store(trb->TexImage, x[i], y[i], z, &flt);
|
||||
trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &flt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -350,7 +362,14 @@ update_wrapper(GLcontext *ctx, const struct gl_renderbuffer_attachment *att)
|
|||
trb->Store = trb->TexImage->TexFormat->StoreTexel;
|
||||
ASSERT(trb->Store);
|
||||
|
||||
trb->Zoffset = att->Zoffset;
|
||||
if (att->Texture->Target == GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
trb->Yoffset = att->Zoffset;
|
||||
trb->Zoffset = 0;
|
||||
}
|
||||
else {
|
||||
trb->Yoffset = 0;
|
||||
trb->Zoffset = att->Zoffset;
|
||||
}
|
||||
|
||||
trb->Base.Width = trb->TexImage->Width;
|
||||
trb->Base.Height = trb->TexImage->Height;
|
||||
|
|
|
|||
|
|
@ -154,6 +154,10 @@ _mesa_copy_texture_state( const GLcontext *src, GLcontext *dst )
|
|||
src->Texture.Unit[i].CurrentCubeMap);
|
||||
copy_texture_binding(src, &dst->Texture.Unit[i].CurrentRect,
|
||||
src->Texture.Unit[i].CurrentRect);
|
||||
copy_texture_binding(src, &dst->Texture.Unit[i].Current1DArray,
|
||||
src->Texture.Unit[i].Current1DArray);
|
||||
copy_texture_binding(src, &dst->Texture.Unit[i].Current2DArray,
|
||||
src->Texture.Unit[i].Current2DArray);
|
||||
|
||||
_mesa_unlock_context_textures(dst);
|
||||
}
|
||||
|
|
@ -1221,6 +1225,20 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
|
|||
}
|
||||
texObj = texUnit->CurrentRect;
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" );
|
||||
return;
|
||||
}
|
||||
texObj = texUnit->Current1DArray;
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
if (!ctx->Extensions.MESA_texture_array) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" );
|
||||
return;
|
||||
}
|
||||
texObj = texUnit->Current2DArray;
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" );
|
||||
return;
|
||||
|
|
@ -1574,6 +1592,12 @@ tex_image_dimensions(GLcontext *ctx, GLenum target)
|
|||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
return ctx->Extensions.NV_texture_rectangle ? 2 : 0;
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array ? 2 : 0;
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
return ctx->Extensions.MESA_texture_array ? 3 : 0;
|
||||
default:
|
||||
_mesa_problem(ctx, "bad target in _mesa_tex_target_dimensions()");
|
||||
return 0;
|
||||
|
|
@ -2864,6 +2888,10 @@ update_texture_state( GLcontext *ctx )
|
|||
* complete. That's the one we'll use for texturing. If we're using
|
||||
* a fragment program we're guaranteed that bitcount(enabledBits) <= 1.
|
||||
*/
|
||||
texture_override(ctx, texUnit, enableBits,
|
||||
texUnit->Current2DArray, TEXTURE_2D_ARRAY_BIT);
|
||||
texture_override(ctx, texUnit, enableBits,
|
||||
texUnit->Current1DArray, TEXTURE_1D_ARRAY_BIT);
|
||||
texture_override(ctx, texUnit, enableBits,
|
||||
texUnit->CurrentCubeMap, TEXTURE_CUBE_BIT);
|
||||
texture_override(ctx, texUnit, enableBits,
|
||||
|
|
@ -3032,6 +3060,14 @@ alloc_proxy_textures( GLcontext *ctx )
|
|||
if (!ctx->Texture.ProxyRect)
|
||||
goto cleanup;
|
||||
|
||||
ctx->Texture.Proxy1DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_1D_ARRAY_EXT);
|
||||
if (!ctx->Texture.Proxy1DArray)
|
||||
goto cleanup;
|
||||
|
||||
ctx->Texture.Proxy2DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_2D_ARRAY_EXT);
|
||||
if (!ctx->Texture.Proxy2DArray)
|
||||
goto cleanup;
|
||||
|
||||
return GL_TRUE;
|
||||
|
||||
cleanup:
|
||||
|
|
@ -3045,6 +3081,10 @@ alloc_proxy_textures( GLcontext *ctx )
|
|||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyCubeMap);
|
||||
if (ctx->Texture.ProxyRect)
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyRect);
|
||||
if (ctx->Texture.Proxy1DArray)
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy1DArray);
|
||||
if (ctx->Texture.Proxy2DArray)
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy2DArray);
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -3092,6 +3132,8 @@ init_texture_unit( GLcontext *ctx, GLuint unit )
|
|||
texUnit->Current3D = ctx->Shared->Default3D;
|
||||
texUnit->CurrentCubeMap = ctx->Shared->DefaultCubeMap;
|
||||
texUnit->CurrentRect = ctx->Shared->DefaultRect;
|
||||
texUnit->Current1DArray = ctx->Shared->Default1DArray;
|
||||
texUnit->Current2DArray = ctx->Shared->Default2DArray;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3112,6 +3154,8 @@ _mesa_init_texture(GLcontext *ctx)
|
|||
ctx->Shared->Default3D->RefCount += MAX_TEXTURE_UNITS;
|
||||
ctx->Shared->DefaultCubeMap->RefCount += MAX_TEXTURE_UNITS;
|
||||
ctx->Shared->DefaultRect->RefCount += MAX_TEXTURE_UNITS;
|
||||
ctx->Shared->Default1DArray->RefCount += MAX_TEXTURE_UNITS;
|
||||
ctx->Shared->Default2DArray->RefCount += MAX_TEXTURE_UNITS;
|
||||
|
||||
/* Texture group */
|
||||
ctx->Texture.CurrentUnit = 0; /* multitexture */
|
||||
|
|
@ -3145,6 +3189,8 @@ _mesa_free_texture_data(GLcontext *ctx)
|
|||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy3D );
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyCubeMap );
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyRect );
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy1DArray );
|
||||
(ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy2DArray );
|
||||
|
||||
for (i = 0; i < MAX_TEXTURE_IMAGE_UNITS; i++)
|
||||
_mesa_free_colortable_data( &ctx->Texture.Unit[i].ColorTable );
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ LONGSTRING static char arb_grammar_text[] =
|
|||
- changed and merged V_* and F_* opcode values to OP_*.
|
||||
- added GL_ARB_fragment_program_shadow specific tokens (michal)
|
||||
*/
|
||||
#define REVISION 0x09
|
||||
#define REVISION 0x0a
|
||||
|
||||
/* program type */
|
||||
#define FRAGMENT_PROGRAM 0x01
|
||||
|
|
@ -209,6 +209,9 @@ LONGSTRING static char arb_grammar_text[] =
|
|||
/* GL_ARB_draw_buffers option */
|
||||
#define ARB_DRAW_BUFFERS 0x07
|
||||
|
||||
/* GL_MESA_texture_array option */
|
||||
#define MESA_TEXTURE_ARRAY 0x08
|
||||
|
||||
/* GL_ARB_fragment_program instruction class */
|
||||
#define OP_ALU_INST 0x00
|
||||
#define OP_TEX_INST 0x01
|
||||
|
|
@ -368,6 +371,9 @@ LONGSTRING static char arb_grammar_text[] =
|
|||
#define TEXTARGET_SHADOW1D 0x06
|
||||
#define TEXTARGET_SHADOW2D 0x07
|
||||
#define TEXTARGET_SHADOWRECT 0x08
|
||||
/* GL_MESA_texture_array */
|
||||
#define TEXTARGET_1D_ARRAY 0x09
|
||||
#define TEXTARGET_2D_ARRAY 0x0a
|
||||
|
||||
/* face type */
|
||||
#define FACE_FRONT 0x00
|
||||
|
|
@ -2990,6 +2996,12 @@ parse_fp_instruction (GLcontext * ctx, const GLubyte ** inst,
|
|||
case TEXTARGET_SHADOWRECT:
|
||||
/* TODO ARB_fragment_program_shadow code */
|
||||
break;
|
||||
case TEXTARGET_1D_ARRAY:
|
||||
fp->TexSrcTarget = TEXTURE_1D_ARRAY_INDEX;
|
||||
break;
|
||||
case TEXTARGET_2D_ARRAY:
|
||||
fp->TexSrcTarget = TEXTURE_2D_ARRAY_INDEX;
|
||||
break;
|
||||
}
|
||||
Program->TexturesUsed[texcoord] |= (1 << fp->TexSrcTarget);
|
||||
/* Check that both "2D" and "CUBE" (for example) aren't both used */
|
||||
|
|
@ -3464,6 +3476,10 @@ parse_instructions(GLcontext * ctx, const GLubyte * inst,
|
|||
/* do nothing for now */
|
||||
}
|
||||
break;
|
||||
|
||||
case MESA_TEXTURE_ARRAY:
|
||||
/* do nothing for now */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -3603,7 +3619,9 @@ enable_parser_extensions(GLcontext *ctx, grammar id)
|
|||
if (ctx->Extensions.ARB_draw_buffers
|
||||
&& !enable_ext(ctx, id, "draw_buffers"))
|
||||
return GL_FALSE;
|
||||
|
||||
if (ctx->Extensions.MESA_texture_array
|
||||
&& !enable_ext(ctx, id, "texture_array"))
|
||||
return GL_FALSE;
|
||||
#if 1
|
||||
/* hack for Warcraft (see bug 8060) */
|
||||
enable_ext(ctx, id, "vertex_blend");
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
compares the value with its REVISION value. If they do not match, the loader is not up
|
||||
to date.
|
||||
*/
|
||||
.emtcode REVISION 0x09
|
||||
.emtcode REVISION 0x0a
|
||||
|
||||
/* program type */
|
||||
.emtcode FRAGMENT_PROGRAM 0x01
|
||||
|
|
@ -64,6 +64,9 @@
|
|||
/* GL_ARB_draw_buffers option */
|
||||
.emtcode ARB_DRAW_BUFFERS 0x07
|
||||
|
||||
/* GL_MESA_texture_array option */
|
||||
.emtcode MESA_TEXTURE_ARRAY 0x08
|
||||
|
||||
/* GL_ARB_fragment_program instruction class */
|
||||
.emtcode OP_ALU_INST 0x00
|
||||
.emtcode OP_TEX_INST 0x01
|
||||
|
|
@ -223,6 +226,8 @@
|
|||
.emtcode TEXTARGET_SHADOW1D 0x06
|
||||
.emtcode TEXTARGET_SHADOW2D 0x07
|
||||
.emtcode TEXTARGET_SHADOWRECT 0x08
|
||||
.emtcode TEXTARGET_1D_ARRAY 0x09
|
||||
.emtcode TEXTARGET_2D_ARRAY 0x0a
|
||||
|
||||
/* face type */
|
||||
.emtcode FACE_FRONT 0x00
|
||||
|
|
@ -436,6 +441,9 @@
|
|||
/* GL_ARB_draw_buffers */
|
||||
.regbyte draw_buffers 0x00
|
||||
|
||||
/* GL_MESA_texture_array */
|
||||
.regbyte texture_array 0x00
|
||||
|
||||
/* option presence condition registers */
|
||||
/* they are all initially set to zero - when a particular OPTION is encountered, the appropriate */
|
||||
/* register is set to 1 to indicate that the OPTION was specified. */
|
||||
|
|
@ -456,6 +464,9 @@
|
|||
/* GL_ARB_draw_buffers */
|
||||
.regbyte ARB_draw_buffers 0x00
|
||||
|
||||
/* GL_MESA_texture_array */
|
||||
.regbyte MESA_texture_array 0x00
|
||||
|
||||
/* program target condition register */
|
||||
/* this syntax script deals with two program targets - VERTEX_PROGRAM and FRAGMENT_PROGRAM. */
|
||||
/* to distinguish between them we need a register that will store for us the current target. */
|
||||
|
|
@ -523,7 +534,9 @@ fp_optionString
|
|||
.if (fragment_program_shadow != 0x00) "ARB_fragment_program_shadow"
|
||||
.emit ARB_FRAGMENT_PROGRAM_SHADOW .load ARB_fragment_program_shadow 0x01 .or
|
||||
.if (draw_buffers != 0x00) "ARB_draw_buffers" .emit ARB_DRAW_BUFFERS
|
||||
.load ARB_draw_buffers 0x01;
|
||||
.load ARB_draw_buffers 0x01 .or
|
||||
.if (texture_array != 0x00) "MESA_texture_array" .emit MESA_TEXTURE_ARRAY
|
||||
.load MESA_texture_array 0x01;
|
||||
vp_optionString
|
||||
"ARB_position_invariant" .emit ARB_POSITION_INVARIANT .load ARB_position_invariant 0x01;
|
||||
fp_ARB_fog_exp
|
||||
|
|
@ -906,7 +919,9 @@ texTarget
|
|||
"3D" .emit TEXTARGET_3D .or
|
||||
.if (texture_rectangle != 0x00) "RECT" .emit TEXTARGET_RECT .or
|
||||
"CUBE" .emit TEXTARGET_CUBE .or
|
||||
.if (ARB_fragment_program_shadow != 0x00) shadowTarget;
|
||||
.if (ARB_fragment_program_shadow != 0x00) shadowTarget .or
|
||||
.if (MESA_texture_array != 0x00) "ARRAY1D" .emit TEXTARGET_1D_ARRAY .or
|
||||
.if (MESA_texture_array != 0x00) "ARRAY2D" .emit TEXTARGET_2D_ARRAY;
|
||||
|
||||
/*
|
||||
GL_ARB_fragment_program_shadow
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
".syntax program;\n"
|
||||
".emtcode REVISION 0x09\n"
|
||||
".emtcode REVISION 0x0a\n"
|
||||
".emtcode FRAGMENT_PROGRAM 0x01\n"
|
||||
".emtcode VERTEX_PROGRAM 0x02\n"
|
||||
".emtcode OPTION 0x01\n"
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
".emtcode ARB_POSITION_INVARIANT 0x05\n"
|
||||
".emtcode ARB_FRAGMENT_PROGRAM_SHADOW 0x06\n"
|
||||
".emtcode ARB_DRAW_BUFFERS 0x07\n"
|
||||
".emtcode MESA_TEXTURE_ARRAY 0x08\n"
|
||||
".emtcode OP_ALU_INST 0x00\n"
|
||||
".emtcode OP_TEX_INST 0x01\n"
|
||||
".emtcode OP_ALU_VECTOR 0x00\n"
|
||||
|
|
@ -120,6 +121,8 @@
|
|||
".emtcode TEXTARGET_SHADOW1D 0x06\n"
|
||||
".emtcode TEXTARGET_SHADOW2D 0x07\n"
|
||||
".emtcode TEXTARGET_SHADOWRECT 0x08\n"
|
||||
".emtcode TEXTARGET_1D_ARRAY 0x09\n"
|
||||
".emtcode TEXTARGET_2D_ARRAY 0x0A\n"
|
||||
".emtcode FACE_FRONT 0x00\n"
|
||||
".emtcode FACE_BACK 0x01\n"
|
||||
".emtcode COLOR_PRIMARY 0x00\n"
|
||||
|
|
@ -264,6 +267,7 @@
|
|||
".regbyte texture_rectangle 0x00\n"
|
||||
".regbyte fragment_program_shadow 0x00\n"
|
||||
".regbyte draw_buffers 0x00\n"
|
||||
".regbyte texture_array 0x00\n"
|
||||
".regbyte ARB_precision_hint_fastest 0x00\n"
|
||||
".regbyte ARB_precision_hint_nicest 0x00\n"
|
||||
".regbyte ARB_fog_exp 0x00\n"
|
||||
|
|
@ -272,6 +276,7 @@
|
|||
".regbyte ARB_position_invariant 0x00\n"
|
||||
".regbyte ARB_fragment_program_shadow 0x00\n"
|
||||
".regbyte ARB_draw_buffers 0x00\n"
|
||||
".regbyte MESA_texture_array 0x00\n"
|
||||
".regbyte program_target 0x00\n"
|
||||
"program\n"
|
||||
" programs .error UNKNOWN_PROGRAM_SIGNATURE .emit REVISION;\n"
|
||||
|
|
@ -309,7 +314,9 @@
|
|||
" .if (fragment_program_shadow != 0x00) \"ARB_fragment_program_shadow\"\n"
|
||||
" .emit ARB_FRAGMENT_PROGRAM_SHADOW .load ARB_fragment_program_shadow 0x01 .or\n"
|
||||
" .if (draw_buffers != 0x00) \"ARB_draw_buffers\" .emit ARB_DRAW_BUFFERS\n"
|
||||
" .load ARB_draw_buffers 0x01;\n"
|
||||
" .load ARB_draw_buffers 0x01 .or\n"
|
||||
" .if (texture_array != 0x00) \"MESA_texture_array\" .emit MESA_TEXTURE_ARRAY\n"
|
||||
" .load MESA_texture_array 0x01;\n"
|
||||
"vp_optionString\n"
|
||||
" \"ARB_position_invariant\" .emit ARB_POSITION_INVARIANT .load ARB_position_invariant 0x01;\n"
|
||||
"fp_ARB_fog_exp\n"
|
||||
|
|
@ -471,7 +478,9 @@
|
|||
" \"3D\" .emit TEXTARGET_3D .or\n"
|
||||
" .if (texture_rectangle != 0x00) \"RECT\" .emit TEXTARGET_RECT .or\n"
|
||||
" \"CUBE\" .emit TEXTARGET_CUBE .or\n"
|
||||
" .if (ARB_fragment_program_shadow != 0x00) shadowTarget;\n"
|
||||
" .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or\n"
|
||||
" .if (MESA_texture_array != 0x00) \"ARRAY1D\" .emit TEXTARGET_1D_ARRAY .or\n"
|
||||
" .if (MESA_texture_array != 0x00) \"ARRAY2D\" .emit TEXTARGET_2D_ARRAY;\n"
|
||||
"shadowTarget\n"
|
||||
" \"SHADOW1D\" .emit TEXTARGET_SHADOW1D .or\n"
|
||||
" \"SHADOW2D\" .emit TEXTARGET_SHADOW2D .or\n"
|
||||
|
|
|
|||
|
|
@ -833,10 +833,11 @@ __glapi_sparc_icache_flush: /* %o0 = insn_addr */
|
|||
.globl glIsRenderbufferEXT ; .type glIsRenderbufferEXT,#function
|
||||
.globl glRenderbufferStorageEXT ; .type glRenderbufferStorageEXT,#function
|
||||
.globl gl_dispatch_stub_767 ; .type gl_dispatch_stub_767,#function
|
||||
.globl gl_dispatch_stub_768 ; .type gl_dispatch_stub_768,#function
|
||||
.globl glFramebufferTextureLayerEXT ; .type glFramebufferTextureLayerEXT,#function
|
||||
.globl gl_dispatch_stub_769 ; .type gl_dispatch_stub_769,#function
|
||||
.globl gl_dispatch_stub_770 ; .type gl_dispatch_stub_770,#function
|
||||
.globl gl_dispatch_stub_771 ; .type gl_dispatch_stub_771,#function
|
||||
.globl gl_dispatch_stub_772 ; .type gl_dispatch_stub_772,#function
|
||||
.globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function
|
||||
_mesa_sparc_glapi_begin:
|
||||
|
||||
|
|
@ -1608,10 +1609,11 @@ _mesa_sparc_glapi_begin:
|
|||
GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT)
|
||||
GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT)
|
||||
GL_STUB(gl_dispatch_stub_767, _gloffset__dispatch_stub_767)
|
||||
GL_STUB(gl_dispatch_stub_768, _gloffset__dispatch_stub_768)
|
||||
GL_STUB(glFramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT)
|
||||
GL_STUB(gl_dispatch_stub_769, _gloffset__dispatch_stub_769)
|
||||
GL_STUB(gl_dispatch_stub_770, _gloffset__dispatch_stub_770)
|
||||
GL_STUB(gl_dispatch_stub_771, _gloffset__dispatch_stub_771)
|
||||
GL_STUB(gl_dispatch_stub_772, _gloffset__dispatch_stub_772)
|
||||
|
||||
.globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function
|
||||
_mesa_sparc_glapi_end:
|
||||
|
|
|
|||
|
|
@ -2267,6 +2267,597 @@ sample_lambda_rect( GLcontext *ctx,
|
|||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* 2D Texture Array Sampling Functions */
|
||||
/**********************************************************************/
|
||||
|
||||
/*
|
||||
* Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter.
|
||||
*/
|
||||
static void
|
||||
sample_2d_array_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
const struct gl_texture_image *img,
|
||||
const GLfloat texcoord[4],
|
||||
GLchan rgba[4])
|
||||
{
|
||||
const GLint width = img->Width2; /* without border, power of two */
|
||||
const GLint height = img->Height2; /* without border, power of two */
|
||||
const GLint depth = img->Depth;
|
||||
GLint i, j;
|
||||
GLint array;
|
||||
(void) ctx;
|
||||
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i);
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoord[1], height, j);
|
||||
array = clamp_rect_coord_nearest(tObj->WrapR, texcoord[2], depth);
|
||||
|
||||
if (i < 0 || i >= (GLint) img->Width ||
|
||||
j < 0 || j >= (GLint) img->Height ||
|
||||
array < 0 || array >= (GLint) img->Depth) {
|
||||
/* Need this test for GL_CLAMP_TO_BORDER mode */
|
||||
COPY_CHAN4(rgba, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i, j, array, rgba);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter.
|
||||
*/
|
||||
static void
|
||||
sample_2d_array_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
const struct gl_texture_image *img,
|
||||
const GLfloat texcoord[4],
|
||||
GLchan rgba[4])
|
||||
{
|
||||
const GLint width = img->Width2;
|
||||
const GLint height = img->Height2;
|
||||
const GLint depth = img->Depth;
|
||||
GLint i0, j0, i1, j1;
|
||||
GLint array;
|
||||
GLbitfield useBorderColor = 0x0;
|
||||
GLfloat u, v;
|
||||
GLfloat a, b;
|
||||
GLchan t00[4], t01[4], t10[4], t11[4];
|
||||
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1);
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoord[1], v, height, j0, j1);
|
||||
array = clamp_rect_coord_nearest(tObj->WrapR, texcoord[2], depth);
|
||||
|
||||
if (array < 0 || array >= depth) {
|
||||
COPY_CHAN4(rgba, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
if (img->Border) {
|
||||
i0 += img->Border;
|
||||
i1 += img->Border;
|
||||
j0 += img->Border;
|
||||
j1 += img->Border;
|
||||
}
|
||||
else {
|
||||
/* check if sampling texture border color */
|
||||
if (i0 < 0 || i0 >= width) useBorderColor |= I0BIT;
|
||||
if (i1 < 0 || i1 >= width) useBorderColor |= I1BIT;
|
||||
if (j0 < 0 || j0 >= height) useBorderColor |= J0BIT;
|
||||
if (j1 < 0 || j1 >= height) useBorderColor |= J1BIT;
|
||||
}
|
||||
|
||||
/* Fetch texels */
|
||||
if (useBorderColor & (I0BIT | J0BIT)) {
|
||||
COPY_CHAN4(t00, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i0, j0, array, t00);
|
||||
}
|
||||
if (useBorderColor & (I1BIT | J0BIT)) {
|
||||
COPY_CHAN4(t10, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i1, j0, array, t10);
|
||||
}
|
||||
if (useBorderColor & (I0BIT | J1BIT)) {
|
||||
COPY_CHAN4(t01, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i0, j1, array, t01);
|
||||
}
|
||||
if (useBorderColor & (I1BIT | J1BIT)) {
|
||||
COPY_CHAN4(t11, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i1, j1, array, t11);
|
||||
}
|
||||
|
||||
/* trilinear interpolation of samples */
|
||||
a = FRAC(u);
|
||||
b = FRAC(v);
|
||||
lerp_rgba_2d(rgba, a, b, t00, t10, t01, t11);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
sample_2d_array_nearest_mipmap_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4] )
|
||||
{
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = nearest_mipmap_level(tObj, lambda[i]);
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level], texcoord[i],
|
||||
rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_2d_array_linear_mipmap_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = nearest_mipmap_level(tObj, lambda[i]);
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][level],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_2d_array_nearest_mipmap_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = linear_mipmap_level(tObj, lambda[i]);
|
||||
if (level >= tObj->_MaxLevel) {
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->_MaxLevel],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
else {
|
||||
GLchan t0[4], t1[4]; /* texels */
|
||||
const GLfloat f = FRAC(lambda[i]);
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0);
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1);
|
||||
lerp_rgba(rgba[i], f, t0, t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_2d_array_linear_mipmap_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = linear_mipmap_level(tObj, lambda[i]);
|
||||
if (level >= tObj->_MaxLevel) {
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->_MaxLevel],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
else {
|
||||
GLchan t0[4], t1[4]; /* texels */
|
||||
const GLfloat f = FRAC(lambda[i]);
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0);
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1);
|
||||
lerp_rgba(rgba[i], f, t0, t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_nearest_2d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4], const GLfloat lambda[],
|
||||
GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel];
|
||||
(void) lambda;
|
||||
for (i=0;i<n;i++) {
|
||||
sample_2d_array_nearest(ctx, tObj, image, texcoords[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
sample_linear_2d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel];
|
||||
(void) lambda;
|
||||
for (i=0;i<n;i++) {
|
||||
sample_2d_array_linear(ctx, tObj, image, texcoords[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Given an (s,t,r) texture coordinate and lambda (level of detail) value,
|
||||
* return a texture sample.
|
||||
*/
|
||||
static void
|
||||
sample_lambda_2d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4], const GLfloat lambda[],
|
||||
GLchan rgba[][4])
|
||||
{
|
||||
GLuint minStart, minEnd; /* texels with minification */
|
||||
GLuint magStart, magEnd; /* texels with magnification */
|
||||
GLuint i;
|
||||
|
||||
ASSERT(lambda != NULL);
|
||||
compute_min_mag_ranges(tObj, n, lambda,
|
||||
&minStart, &minEnd, &magStart, &magEnd);
|
||||
|
||||
if (minStart < minEnd) {
|
||||
/* do the minified texels */
|
||||
GLuint m = minEnd - minStart;
|
||||
switch (tObj->MinFilter) {
|
||||
case GL_NEAREST:
|
||||
for (i = minStart; i < minEnd; i++)
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_LINEAR:
|
||||
for (i = minStart; i < minEnd; i++)
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_NEAREST_MIPMAP_NEAREST:
|
||||
sample_2d_array_nearest_mipmap_nearest(ctx, tObj, m, texcoords + minStart,
|
||||
lambda + minStart, rgba + minStart);
|
||||
break;
|
||||
case GL_LINEAR_MIPMAP_NEAREST:
|
||||
sample_2d_array_linear_mipmap_nearest(ctx, tObj, m,
|
||||
texcoords + minStart,
|
||||
lambda + minStart,
|
||||
rgba + minStart);
|
||||
break;
|
||||
case GL_NEAREST_MIPMAP_LINEAR:
|
||||
sample_2d_array_nearest_mipmap_linear(ctx, tObj, m, texcoords + minStart,
|
||||
lambda + minStart, rgba + minStart);
|
||||
break;
|
||||
case GL_LINEAR_MIPMAP_LINEAR:
|
||||
sample_2d_array_linear_mipmap_linear(ctx, tObj, m,
|
||||
texcoords + minStart,
|
||||
lambda + minStart,
|
||||
rgba + minStart);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad min filter in sample_2d_array_texture");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (magStart < magEnd) {
|
||||
/* do the magnified texels */
|
||||
switch (tObj->MagFilter) {
|
||||
case GL_NEAREST:
|
||||
for (i = magStart; i < magEnd; i++)
|
||||
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_LINEAR:
|
||||
for (i = magStart; i < magEnd; i++)
|
||||
sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad mag filter in sample_2d_array_texture");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* 1D Texture Array Sampling Functions */
|
||||
/**********************************************************************/
|
||||
|
||||
/*
|
||||
* Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter.
|
||||
*/
|
||||
static void
|
||||
sample_1d_array_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
const struct gl_texture_image *img,
|
||||
const GLfloat texcoord[4],
|
||||
GLchan rgba[4])
|
||||
{
|
||||
const GLint width = img->Width2; /* without border, power of two */
|
||||
const GLint height = img->Height;
|
||||
GLint i;
|
||||
GLint array;
|
||||
(void) ctx;
|
||||
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i);
|
||||
array = clamp_rect_coord_nearest(tObj->WrapT, texcoord[1], height);
|
||||
|
||||
if (i < 0 || i >= (GLint) img->Width ||
|
||||
array < 0 || array >= (GLint) img->Height) {
|
||||
/* Need this test for GL_CLAMP_TO_BORDER mode */
|
||||
COPY_CHAN4(rgba, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i, array, 0, rgba);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter.
|
||||
*/
|
||||
static void
|
||||
sample_1d_array_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
const struct gl_texture_image *img,
|
||||
const GLfloat texcoord[4],
|
||||
GLchan rgba[4])
|
||||
{
|
||||
const GLint width = img->Width2;
|
||||
const GLint height = img->Height;
|
||||
GLint i0, i1;
|
||||
GLint array;
|
||||
GLbitfield useBorderColor = 0x0;
|
||||
GLfloat u;
|
||||
GLfloat a;
|
||||
GLchan t0[4], t1[4];
|
||||
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1);
|
||||
array = clamp_rect_coord_nearest(tObj->WrapT, texcoord[1], height);
|
||||
|
||||
if (img->Border) {
|
||||
i0 += img->Border;
|
||||
i1 += img->Border;
|
||||
}
|
||||
else {
|
||||
/* check if sampling texture border color */
|
||||
if (i0 < 0 || i0 >= width) useBorderColor |= I0BIT;
|
||||
if (i1 < 0 || i1 >= width) useBorderColor |= I1BIT;
|
||||
}
|
||||
|
||||
if (array < 0 || array >= height) useBorderColor |= K0BIT;
|
||||
|
||||
/* Fetch texels */
|
||||
if (useBorderColor & (I0BIT | K0BIT)) {
|
||||
COPY_CHAN4(t0, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i0, array, 0, t0);
|
||||
}
|
||||
if (useBorderColor & (I1BIT | K0BIT)) {
|
||||
COPY_CHAN4(t1, tObj->_BorderChan);
|
||||
}
|
||||
else {
|
||||
img->FetchTexelc(img, i1, array, 0, t1);
|
||||
}
|
||||
|
||||
/* bilinear interpolation of samples */
|
||||
a = FRAC(u);
|
||||
lerp_rgba(rgba, a, t0, t1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
sample_1d_array_nearest_mipmap_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4] )
|
||||
{
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = nearest_mipmap_level(tObj, lambda[i]);
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level], texcoord[i],
|
||||
rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_1d_array_linear_mipmap_nearest(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = nearest_mipmap_level(tObj, lambda[i]);
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][level],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_1d_array_nearest_mipmap_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = linear_mipmap_level(tObj, lambda[i]);
|
||||
if (level >= tObj->_MaxLevel) {
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->_MaxLevel],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
else {
|
||||
GLchan t0[4], t1[4]; /* texels */
|
||||
const GLfloat f = FRAC(lambda[i]);
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0);
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1);
|
||||
lerp_rgba(rgba[i], f, t0, t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_1d_array_linear_mipmap_linear(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj,
|
||||
GLuint n, const GLfloat texcoord[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
ASSERT(lambda != NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
GLint level = linear_mipmap_level(tObj, lambda[i]);
|
||||
if (level >= tObj->_MaxLevel) {
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->_MaxLevel],
|
||||
texcoord[i], rgba[i]);
|
||||
}
|
||||
else {
|
||||
GLchan t0[4], t1[4]; /* texels */
|
||||
const GLfloat f = FRAC(lambda[i]);
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0);
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1);
|
||||
lerp_rgba(rgba[i], f, t0, t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sample_nearest_1d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4], const GLfloat lambda[],
|
||||
GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel];
|
||||
(void) lambda;
|
||||
for (i=0;i<n;i++) {
|
||||
sample_1d_array_nearest(ctx, tObj, image, texcoords[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
sample_linear_1d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4],
|
||||
const GLfloat lambda[], GLchan rgba[][4])
|
||||
{
|
||||
GLuint i;
|
||||
struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel];
|
||||
(void) lambda;
|
||||
for (i=0;i<n;i++) {
|
||||
sample_1d_array_linear(ctx, tObj, image, texcoords[i], rgba[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Given an (s,t,r) texture coordinate and lambda (level of detail) value,
|
||||
* return a texture sample.
|
||||
*/
|
||||
static void
|
||||
sample_lambda_1d_array(GLcontext *ctx,
|
||||
const struct gl_texture_object *tObj, GLuint n,
|
||||
const GLfloat texcoords[][4], const GLfloat lambda[],
|
||||
GLchan rgba[][4])
|
||||
{
|
||||
GLuint minStart, minEnd; /* texels with minification */
|
||||
GLuint magStart, magEnd; /* texels with magnification */
|
||||
GLuint i;
|
||||
|
||||
ASSERT(lambda != NULL);
|
||||
compute_min_mag_ranges(tObj, n, lambda,
|
||||
&minStart, &minEnd, &magStart, &magEnd);
|
||||
|
||||
if (minStart < minEnd) {
|
||||
/* do the minified texels */
|
||||
GLuint m = minEnd - minStart;
|
||||
switch (tObj->MinFilter) {
|
||||
case GL_NEAREST:
|
||||
for (i = minStart; i < minEnd; i++)
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_LINEAR:
|
||||
for (i = minStart; i < minEnd; i++)
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_NEAREST_MIPMAP_NEAREST:
|
||||
sample_1d_array_nearest_mipmap_nearest(ctx, tObj, m, texcoords + minStart,
|
||||
lambda + minStart, rgba + minStart);
|
||||
break;
|
||||
case GL_LINEAR_MIPMAP_NEAREST:
|
||||
sample_1d_array_linear_mipmap_nearest(ctx, tObj, m,
|
||||
texcoords + minStart,
|
||||
lambda + minStart,
|
||||
rgba + minStart);
|
||||
break;
|
||||
case GL_NEAREST_MIPMAP_LINEAR:
|
||||
sample_1d_array_nearest_mipmap_linear(ctx, tObj, m, texcoords + minStart,
|
||||
lambda + minStart, rgba + minStart);
|
||||
break;
|
||||
case GL_LINEAR_MIPMAP_LINEAR:
|
||||
sample_1d_array_linear_mipmap_linear(ctx, tObj, m,
|
||||
texcoords + minStart,
|
||||
lambda + minStart,
|
||||
rgba + minStart);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad min filter in sample_1d_array_texture");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (magStart < magEnd) {
|
||||
/* do the magnified texels */
|
||||
switch (tObj->MagFilter) {
|
||||
case GL_NEAREST:
|
||||
for (i = magStart; i < magEnd; i++)
|
||||
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
case GL_LINEAR:
|
||||
for (i = magStart; i < magEnd; i++)
|
||||
sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
|
||||
texcoords[i], rgba[i]);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad mag filter in sample_1d_array_texture");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Sample a shadow/depth texture.
|
||||
*/
|
||||
|
|
@ -2280,6 +2871,9 @@ sample_depth_texture( GLcontext *ctx,
|
|||
const struct gl_texture_image *img = tObj->Image[0][baseLevel];
|
||||
const GLint width = img->Width;
|
||||
const GLint height = img->Height;
|
||||
const GLint depth = img->Depth;
|
||||
const GLuint compare_coord = (tObj->Target == GL_TEXTURE_2D_ARRAY_EXT)
|
||||
? 3 : 2;
|
||||
GLchan ambient;
|
||||
GLenum function;
|
||||
GLchan result;
|
||||
|
|
@ -2291,7 +2885,9 @@ sample_depth_texture( GLcontext *ctx,
|
|||
|
||||
ASSERT(tObj->Target == GL_TEXTURE_1D ||
|
||||
tObj->Target == GL_TEXTURE_2D ||
|
||||
tObj->Target == GL_TEXTURE_RECTANGLE_NV);
|
||||
tObj->Target == GL_TEXTURE_RECTANGLE_NV ||
|
||||
tObj->Target == GL_TEXTURE_1D_ARRAY_EXT ||
|
||||
tObj->Target == GL_TEXTURE_2D_ARRAY_EXT);
|
||||
|
||||
UNCLAMPED_FLOAT_TO_CHAN(ambient, tObj->ShadowAmbient);
|
||||
|
||||
|
|
@ -2320,20 +2916,48 @@ sample_depth_texture( GLcontext *ctx,
|
|||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
GLfloat depthSample;
|
||||
GLint col, row;
|
||||
GLint col, row, slice;
|
||||
|
||||
if (tObj->Target == GL_TEXTURE_RECTANGLE_ARB) {
|
||||
switch (tObj->Target) {
|
||||
case GL_TEXTURE_RECTANGLE_ARB:
|
||||
col = clamp_rect_coord_nearest(tObj->WrapS, texcoords[i][0], width);
|
||||
row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height);
|
||||
}
|
||||
else {
|
||||
slice = 0;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D:
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0],
|
||||
width, col);
|
||||
row = 0;
|
||||
slice = 0;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_2D:
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0],
|
||||
width, col);
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1],
|
||||
height, row);
|
||||
slice = 0;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0],
|
||||
width, col);
|
||||
row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height);
|
||||
slice = 0;
|
||||
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0],
|
||||
width, col);
|
||||
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1],
|
||||
height, row);
|
||||
slice = clamp_rect_coord_nearest(tObj->WrapR, texcoords[i][2], depth);
|
||||
break;
|
||||
}
|
||||
if (col >= 0 && row >= 0 && col < width && row < height) {
|
||||
img->FetchTexelf(img, col, row, 0, &depthSample);
|
||||
|
||||
if (col >= 0 && row >= 0 && col < width && row < height &&
|
||||
slice >= 0 && slice < depth) {
|
||||
img->FetchTexelf(img, col, row, slice, &depthSample);
|
||||
}
|
||||
else {
|
||||
depthSample = tObj->BorderColor[0];
|
||||
|
|
@ -2341,22 +2965,22 @@ sample_depth_texture( GLcontext *ctx,
|
|||
|
||||
switch (function) {
|
||||
case GL_LEQUAL:
|
||||
result = (texcoords[i][2] <= depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] <= depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_GEQUAL:
|
||||
result = (texcoords[i][2] >= depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] >= depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_LESS:
|
||||
result = (texcoords[i][2] < depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] < depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_GREATER:
|
||||
result = (texcoords[i][2] > depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] > depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_EQUAL:
|
||||
result = (texcoords[i][2] == depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] == depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_NOTEQUAL:
|
||||
result = (texcoords[i][2] != depthSample) ? CHAN_MAX : ambient;
|
||||
result = (texcoords[i][compare_coord] != depthSample) ? CHAN_MAX : ambient;
|
||||
break;
|
||||
case GL_ALWAYS:
|
||||
result = CHAN_MAX;
|
||||
|
|
@ -2402,28 +3026,52 @@ sample_depth_texture( GLcontext *ctx,
|
|||
for (i = 0; i < n; i++) {
|
||||
GLfloat depth00, depth01, depth10, depth11;
|
||||
GLint i0, i1, j0, j1;
|
||||
GLint slice;
|
||||
GLfloat u, v;
|
||||
GLuint useBorderTexel;
|
||||
|
||||
if (tObj->Target == GL_TEXTURE_RECTANGLE_ARB) {
|
||||
switch (tObj->Target) {
|
||||
case GL_TEXTURE_RECTANGLE_ARB:
|
||||
clamp_rect_coord_linear(tObj->WrapS, texcoords[i][0],
|
||||
width, &i0, &i1);
|
||||
clamp_rect_coord_linear(tObj->WrapT, texcoords[i][1],
|
||||
height, &j0, &j1);
|
||||
}
|
||||
else {
|
||||
slice = 0;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D:
|
||||
case GL_TEXTURE_2D:
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0],
|
||||
u, width, i0, i1);
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoords[i][1],
|
||||
v, height,j0, j1);
|
||||
slice = 0;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0],
|
||||
u, width, i0, i1);
|
||||
j0 = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height);
|
||||
j1 = j0;
|
||||
slice = 0;
|
||||
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0],
|
||||
u, width, i0, i1);
|
||||
COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoords[i][1],
|
||||
v, height,j0, j1);
|
||||
slice = clamp_rect_coord_nearest(tObj->WrapR, texcoords[i][2], depth);
|
||||
break;
|
||||
}
|
||||
|
||||
useBorderTexel = 0;
|
||||
if (img->Border) {
|
||||
i0 += img->Border;
|
||||
i1 += img->Border;
|
||||
j0 += img->Border;
|
||||
j1 += img->Border;
|
||||
if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
j0 += img->Border;
|
||||
j1 += img->Border;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (i0 < 0 || i0 >= (GLint) width) useBorderTexel |= I0BIT;
|
||||
|
|
@ -2432,30 +3080,45 @@ sample_depth_texture( GLcontext *ctx,
|
|||
if (j1 < 0 || j1 >= (GLint) height) useBorderTexel |= J1BIT;
|
||||
}
|
||||
|
||||
/* get four depth samples from the texture */
|
||||
if (useBorderTexel & (I0BIT | J0BIT)) {
|
||||
if (slice < 0 || slice >= (GLint) depth) {
|
||||
depth00 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i0, j0, 0, &depth00);
|
||||
}
|
||||
if (useBorderTexel & (I1BIT | J0BIT)) {
|
||||
depth10 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i1, j0, 0, &depth10);
|
||||
}
|
||||
if (useBorderTexel & (I0BIT | J1BIT)) {
|
||||
depth01 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i0, j1, 0, &depth01);
|
||||
}
|
||||
if (useBorderTexel & (I1BIT | J1BIT)) {
|
||||
depth10 = tObj->BorderColor[0];
|
||||
depth11 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i1, j1, 0, &depth11);
|
||||
/* get four depth samples from the texture */
|
||||
if (useBorderTexel & (I0BIT | J0BIT)) {
|
||||
depth00 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i0, j0, slice, &depth00);
|
||||
}
|
||||
if (useBorderTexel & (I1BIT | J0BIT)) {
|
||||
depth10 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i1, j0, slice, &depth10);
|
||||
}
|
||||
|
||||
if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) {
|
||||
if (useBorderTexel & (I0BIT | J1BIT)) {
|
||||
depth01 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i0, j1, slice, &depth01);
|
||||
}
|
||||
if (useBorderTexel & (I1BIT | J1BIT)) {
|
||||
depth11 = tObj->BorderColor[0];
|
||||
}
|
||||
else {
|
||||
img->FetchTexelf(img, i1, j1, slice, &depth11);
|
||||
}
|
||||
}
|
||||
else {
|
||||
depth01 = depth00;
|
||||
depth11 = depth10;
|
||||
}
|
||||
}
|
||||
|
||||
if (0) {
|
||||
|
|
@ -2464,8 +3127,8 @@ sample_depth_texture( GLcontext *ctx,
|
|||
const GLfloat b = FRAC(v + 1.0F);
|
||||
const GLfloat depthSample
|
||||
= lerp_2d(a, b, depth00, depth10, depth01, depth11);
|
||||
if ((depthSample <= texcoords[i][2] && function == GL_LEQUAL) ||
|
||||
(depthSample >= texcoords[i][2] && function == GL_GEQUAL)) {
|
||||
if ((depthSample <= texcoords[i][compare_coord] && function == GL_LEQUAL) ||
|
||||
(depthSample >= texcoords[i][compare_coord] && function == GL_GEQUAL)) {
|
||||
result = ambient;
|
||||
}
|
||||
else {
|
||||
|
|
@ -2482,45 +3145,45 @@ sample_depth_texture( GLcontext *ctx,
|
|||
|
||||
switch (function) {
|
||||
case GL_LEQUAL:
|
||||
if (depth00 <= texcoords[i][2]) luminance -= d;
|
||||
if (depth01 <= texcoords[i][2]) luminance -= d;
|
||||
if (depth10 <= texcoords[i][2]) luminance -= d;
|
||||
if (depth11 <= texcoords[i][2]) luminance -= d;
|
||||
if (depth00 <= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 <= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 <= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 <= texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_GEQUAL:
|
||||
if (depth00 >= texcoords[i][2]) luminance -= d;
|
||||
if (depth01 >= texcoords[i][2]) luminance -= d;
|
||||
if (depth10 >= texcoords[i][2]) luminance -= d;
|
||||
if (depth11 >= texcoords[i][2]) luminance -= d;
|
||||
if (depth00 >= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 >= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 >= texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 >= texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_LESS:
|
||||
if (depth00 < texcoords[i][2]) luminance -= d;
|
||||
if (depth01 < texcoords[i][2]) luminance -= d;
|
||||
if (depth10 < texcoords[i][2]) luminance -= d;
|
||||
if (depth11 < texcoords[i][2]) luminance -= d;
|
||||
if (depth00 < texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 < texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 < texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 < texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_GREATER:
|
||||
if (depth00 > texcoords[i][2]) luminance -= d;
|
||||
if (depth01 > texcoords[i][2]) luminance -= d;
|
||||
if (depth10 > texcoords[i][2]) luminance -= d;
|
||||
if (depth11 > texcoords[i][2]) luminance -= d;
|
||||
if (depth00 > texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 > texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 > texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 > texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_EQUAL:
|
||||
if (depth00 == texcoords[i][2]) luminance -= d;
|
||||
if (depth01 == texcoords[i][2]) luminance -= d;
|
||||
if (depth10 == texcoords[i][2]) luminance -= d;
|
||||
if (depth11 == texcoords[i][2]) luminance -= d;
|
||||
if (depth00 == texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 == texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 == texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 == texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_NOTEQUAL:
|
||||
if (depth00 != texcoords[i][2]) luminance -= d;
|
||||
if (depth01 != texcoords[i][2]) luminance -= d;
|
||||
if (depth10 != texcoords[i][2]) luminance -= d;
|
||||
if (depth11 != texcoords[i][2]) luminance -= d;
|
||||
if (depth00 != texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth01 != texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth10 != texcoords[i][compare_coord]) luminance -= d;
|
||||
if (depth11 != texcoords[i][compare_coord]) luminance -= d;
|
||||
result = (GLchan) luminance;
|
||||
break;
|
||||
case GL_ALWAYS:
|
||||
|
|
@ -2792,6 +3455,28 @@ _swrast_choose_texture_sample_func( GLcontext *ctx,
|
|||
ASSERT(t->MinFilter == GL_NEAREST);
|
||||
return &sample_nearest_rect;
|
||||
}
|
||||
case GL_TEXTURE_1D_ARRAY_EXT:
|
||||
if (needLambda) {
|
||||
return &sample_lambda_1d_array;
|
||||
}
|
||||
else if (t->MinFilter == GL_LINEAR) {
|
||||
return &sample_linear_1d_array;
|
||||
}
|
||||
else {
|
||||
ASSERT(t->MinFilter == GL_NEAREST);
|
||||
return &sample_nearest_1d_array;
|
||||
}
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
if (needLambda) {
|
||||
return &sample_lambda_2d_array;
|
||||
}
|
||||
else if (t->MinFilter == GL_LINEAR) {
|
||||
return &sample_linear_2d_array;
|
||||
}
|
||||
else {
|
||||
ASSERT(t->MinFilter == GL_NEAREST);
|
||||
return &sample_nearest_2d_array;
|
||||
}
|
||||
default:
|
||||
_mesa_problem(ctx,
|
||||
"invalid target in _swrast_choose_texture_sample_func");
|
||||
|
|
|
|||
|
|
@ -29071,10 +29071,9 @@ GL_PREFIX(_dispatch_stub_767):
|
|||
.size GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767)
|
||||
|
||||
.p2align 4,,15
|
||||
.globl GL_PREFIX(_dispatch_stub_768)
|
||||
.type GL_PREFIX(_dispatch_stub_768), @function
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_768))
|
||||
GL_PREFIX(_dispatch_stub_768):
|
||||
.globl GL_PREFIX(FramebufferTextureLayerEXT)
|
||||
.type GL_PREFIX(FramebufferTextureLayerEXT), @function
|
||||
GL_PREFIX(FramebufferTextureLayerEXT):
|
||||
#if defined(GLX_USE_TLS)
|
||||
call _x86_64_get_dispatch@PLT
|
||||
movq 6144(%rax), %r11
|
||||
|
|
@ -29084,9 +29083,9 @@ GL_PREFIX(_dispatch_stub_768):
|
|||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rbp
|
||||
pushq %r8
|
||||
call _x86_64_get_dispatch@PLT
|
||||
popq %rbp
|
||||
popq %r8
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
|
|
@ -29104,9 +29103,9 @@ GL_PREFIX(_dispatch_stub_768):
|
|||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rbp
|
||||
pushq %r8
|
||||
call _glapi_get_dispatch
|
||||
popq %rbp
|
||||
popq %r8
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
|
|
@ -29114,7 +29113,7 @@ GL_PREFIX(_dispatch_stub_768):
|
|||
movq 6144(%rax), %r11
|
||||
jmp *%r11
|
||||
#endif /* defined(GLX_USE_TLS) */
|
||||
.size GL_PREFIX(_dispatch_stub_768), .-GL_PREFIX(_dispatch_stub_768)
|
||||
.size GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT)
|
||||
|
||||
.p2align 4,,15
|
||||
.globl GL_PREFIX(_dispatch_stub_769)
|
||||
|
|
@ -29175,7 +29174,11 @@ GL_PREFIX(_dispatch_stub_770):
|
|||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rbp
|
||||
call _x86_64_get_dispatch@PLT
|
||||
popq %rbp
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
|
|
@ -29191,7 +29194,11 @@ GL_PREFIX(_dispatch_stub_770):
|
|||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rbp
|
||||
call _glapi_get_dispatch
|
||||
popq %rbp
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
|
|
@ -29238,6 +29245,44 @@ GL_PREFIX(_dispatch_stub_771):
|
|||
#endif /* defined(GLX_USE_TLS) */
|
||||
.size GL_PREFIX(_dispatch_stub_771), .-GL_PREFIX(_dispatch_stub_771)
|
||||
|
||||
.p2align 4,,15
|
||||
.globl GL_PREFIX(_dispatch_stub_772)
|
||||
.type GL_PREFIX(_dispatch_stub_772), @function
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_772))
|
||||
GL_PREFIX(_dispatch_stub_772):
|
||||
#if defined(GLX_USE_TLS)
|
||||
call _x86_64_get_dispatch@PLT
|
||||
movq 6176(%rax), %r11
|
||||
jmp *%r11
|
||||
#elif defined(PTHREADS)
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
call _x86_64_get_dispatch@PLT
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
movq 6176(%rax), %r11
|
||||
jmp *%r11
|
||||
#else
|
||||
movq _glapi_Dispatch(%rip), %rax
|
||||
testq %rax, %rax
|
||||
je 1f
|
||||
movq 6176(%rax), %r11
|
||||
jmp *%r11
|
||||
1:
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
call _glapi_get_dispatch
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
movq 6176(%rax), %r11
|
||||
jmp *%r11
|
||||
#endif /* defined(GLX_USE_TLS) */
|
||||
.size GL_PREFIX(_dispatch_stub_772), .-GL_PREFIX(_dispatch_stub_772)
|
||||
|
||||
.globl GL_PREFIX(ArrayElementEXT) ; .set GL_PREFIX(ArrayElementEXT), GL_PREFIX(ArrayElement)
|
||||
.globl GL_PREFIX(BindTextureEXT) ; .set GL_PREFIX(BindTextureEXT), GL_PREFIX(BindTexture)
|
||||
.globl GL_PREFIX(DrawArraysEXT) ; .set GL_PREFIX(DrawArraysEXT), GL_PREFIX(DrawArrays)
|
||||
|
|
|
|||
|
|
@ -938,14 +938,15 @@ GLNAME(gl_dispatch_functions_start):
|
|||
GL_STUB(RenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT, RenderbufferStorageEXT@16)
|
||||
GL_STUB(_dispatch_stub_767, _gloffset_BlitFramebufferEXT, _dispatch_stub_767@40)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@40))
|
||||
GL_STUB(_dispatch_stub_768, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_768@16)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_768, _dispatch_stub_768@16))
|
||||
GL_STUB(_dispatch_stub_769, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_769@16)
|
||||
GL_STUB(FramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
|
||||
GL_STUB(_dispatch_stub_769, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_769@16)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_769, _dispatch_stub_769@16))
|
||||
GL_STUB(_dispatch_stub_770, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_770@12)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_770, _dispatch_stub_770@12))
|
||||
GL_STUB(_dispatch_stub_771, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_771@12)
|
||||
GL_STUB(_dispatch_stub_770, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_770@16)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_770, _dispatch_stub_770@16))
|
||||
GL_STUB(_dispatch_stub_771, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_771@12)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_771, _dispatch_stub_771@12))
|
||||
GL_STUB(_dispatch_stub_772, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_772@12)
|
||||
HIDDEN(GL_PREFIX(_dispatch_stub_772, _dispatch_stub_772@12))
|
||||
GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
|
||||
GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
|
||||
GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue