mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 04:50:11 +01:00
glthread: track pointers and strides for Pointer & EXT_dsa attrib functions
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
This commit is contained in:
parent
befbd54864
commit
c9c9f57b02
7 changed files with 102 additions and 43 deletions
|
|
@ -52,7 +52,7 @@
|
|||
</function>
|
||||
|
||||
<function name="VertexAttribLPointer" no_error="true" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);">
|
||||
<param name="index" type="GLuint"/>
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
|
|
@ -66,7 +66,8 @@
|
|||
<param name="params" type="GLdouble *"/>
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayVertexAttribLOffsetEXT">
|
||||
<function name="VertexArrayVertexAttribLOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_GENERIC(index), size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="index" type="GLuint" />
|
||||
|
|
|
|||
|
|
@ -658,7 +658,7 @@
|
|||
</function>
|
||||
|
||||
<function name="MultiTexCoordPointerEXT" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(texunit - GL_TEXTURE0));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(texunit - GL_TEXTURE0), size, type, stride, pointer);">
|
||||
<param name="texunit" type="GLenum" />
|
||||
<param name="size" type="GLint" />
|
||||
<param name="type" type="GLenum" />
|
||||
|
|
@ -1055,7 +1055,8 @@
|
|||
<param name="size" type="GLsizeiptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayVertexOffsetEXT">
|
||||
<function name="VertexArrayVertexOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_POS, size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="size" type="GLint" />
|
||||
|
|
@ -1064,7 +1065,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayColorOffsetEXT">
|
||||
<function name="VertexArrayColorOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_COLOR0, size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="size" type="GLint" />
|
||||
|
|
@ -1073,14 +1075,16 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayEdgeFlagOffsetEXT">
|
||||
<function name="VertexArrayEdgeFlagOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="stride" type="GLsizei" />
|
||||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayIndexOffsetEXT">
|
||||
<function name="VertexArrayIndexOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_COLOR_INDEX, 1, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="type" type="GLenum" />
|
||||
|
|
@ -1088,7 +1092,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayNormalOffsetEXT">
|
||||
<function name="VertexArrayNormalOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_NORMAL, 3, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="type" type="GLenum" />
|
||||
|
|
@ -1096,7 +1101,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayTexCoordOffsetEXT">
|
||||
<function name="VertexArrayTexCoordOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture), size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="size" type="GLint" />
|
||||
|
|
@ -1105,7 +1111,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayMultiTexCoordOffsetEXT">
|
||||
<function name="VertexArrayMultiTexCoordOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_TEX(texunit - GL_TEXTURE0), size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="texunit" type="GLenum" />
|
||||
|
|
@ -1115,7 +1122,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayFogCoordOffsetEXT">
|
||||
<function name="VertexArrayFogCoordOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_FOG, 1, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="type" type="GLenum" />
|
||||
|
|
@ -1123,7 +1131,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArraySecondaryColorOffsetEXT">
|
||||
<function name="VertexArraySecondaryColorOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_COLOR1, size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="size" type="GLint" />
|
||||
|
|
@ -1132,7 +1141,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayVertexAttribOffsetEXT">
|
||||
<function name="VertexArrayVertexAttribOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_GENERIC(index), size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="index" type="GLuint" />
|
||||
|
|
@ -1143,7 +1153,8 @@
|
|||
<param name="offset" type="GLintptr" />
|
||||
</function>
|
||||
|
||||
<function name="VertexArrayVertexAttribIOffsetEXT">
|
||||
<function name="VertexArrayVertexAttribIOffsetEXT"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_GENERIC(index), size, type, stride, offset);">
|
||||
<param name="vaobj" type="GLuint" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="index" type="GLuint" />
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@
|
|||
|
||||
<function name="VertexAttribIPointer" es2="3.0" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);">
|
||||
<param name="index" type="GLuint"/>
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@
|
|||
|
||||
<function name="PointSizePointerOES" es1="1.0" desktop="false"
|
||||
no_error="true" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POINT_SIZE);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POINT_SIZE, 1, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLvoid *"/>
|
||||
|
|
|
|||
|
|
@ -3166,7 +3166,7 @@
|
|||
|
||||
<function name="ColorPointer" es1="1.0" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0, size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -3199,7 +3199,7 @@
|
|||
|
||||
<function name="EdgeFlagPointer" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE, stride, pointer);">
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLvoid *"/>
|
||||
<glx handcode="true"/>
|
||||
|
|
@ -3219,7 +3219,7 @@
|
|||
|
||||
<function name="IndexPointer" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX, 1, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLvoid *"/>
|
||||
|
|
@ -3235,7 +3235,7 @@
|
|||
|
||||
<function name="NormalPointer" es1="1.0" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL, 3, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLvoid *"/>
|
||||
|
|
@ -3244,7 +3244,7 @@
|
|||
|
||||
<function name="TexCoordPointer" es1="1.0" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture), size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -3254,7 +3254,7 @@
|
|||
|
||||
<function name="VertexPointer" es1="1.0" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS, size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -4751,7 +4751,7 @@
|
|||
|
||||
<function name="FogCoordPointer" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_FOG);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_FOG, 1, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLvoid *"/>
|
||||
|
|
@ -4892,7 +4892,7 @@
|
|||
|
||||
<function name="SecondaryColorPointer" deprecated="3.1" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR1);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR1, size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -5853,7 +5853,7 @@
|
|||
|
||||
<function name="VertexAttribPointer" es2="2.0" marshal="async"
|
||||
no_error="true"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);">
|
||||
<param name="index" type="GLuint"/>
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
|
|
@ -9251,7 +9251,7 @@
|
|||
</function>
|
||||
|
||||
<function name="ColorPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0, size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -9267,7 +9267,7 @@
|
|||
</function>
|
||||
|
||||
<function name="EdgeFlagPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE, stride, pointer);">
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="count" type="GLsizei"/>
|
||||
<param name="pointer" type="const GLboolean *"/>
|
||||
|
|
@ -9280,7 +9280,7 @@
|
|||
</function>
|
||||
|
||||
<function name="IndexPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX, 1, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="count" type="GLsizei"/>
|
||||
|
|
@ -9289,7 +9289,7 @@
|
|||
</function>
|
||||
|
||||
<function name="NormalPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL, 3, type, stride, pointer);">
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
<param name="count" type="GLsizei"/>
|
||||
|
|
@ -9298,7 +9298,7 @@
|
|||
</function>
|
||||
|
||||
<function name="TexCoordPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture));">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture), size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
@ -9308,7 +9308,7 @@
|
|||
</function>
|
||||
|
||||
<function name="VertexPointerEXT" deprecated="3.1" marshal="async"
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS);">
|
||||
marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS, size, type, stride, pointer);">
|
||||
<param name="size" type="GLint"/>
|
||||
<param name="type" type="GLenum"/>
|
||||
<param name="stride" type="GLsizei"/>
|
||||
|
|
|
|||
|
|
@ -64,6 +64,12 @@ struct glthread_vao {
|
|||
GLuint CurrentElementBufferName;
|
||||
GLbitfield Enabled;
|
||||
GLbitfield UserPointerMask;
|
||||
|
||||
struct {
|
||||
GLuint ElementSize;
|
||||
GLsizei Stride;
|
||||
const void *Pointer;
|
||||
} Attrib[VERT_ATTRIB_MAX];
|
||||
};
|
||||
|
||||
/** A single batch of commands queued up for execution. */
|
||||
|
|
@ -156,7 +162,12 @@ void _mesa_glthread_GenVertexArrays(struct gl_context *ctx,
|
|||
GLsizei n, GLuint *arrays);
|
||||
void _mesa_glthread_ClientState(struct gl_context *ctx, GLuint *vaobj,
|
||||
gl_vert_attrib attrib, bool enable);
|
||||
void _mesa_glthread_AttribPointer(struct gl_context *ctx,
|
||||
gl_vert_attrib attrib);
|
||||
void _mesa_glthread_AttribPointer(struct gl_context *ctx, gl_vert_attrib attrib,
|
||||
GLint size, GLenum type, GLsizei stride,
|
||||
const void *pointer);
|
||||
void _mesa_glthread_DSAAttribPointer(struct gl_context *ctx, GLuint vao,
|
||||
GLuint buffer, gl_vert_attrib attrib,
|
||||
GLint size, GLenum type, GLsizei stride,
|
||||
GLintptr offset);
|
||||
|
||||
#endif /* _GLTHREAD_H*/
|
||||
|
|
|
|||
|
|
@ -27,16 +27,14 @@
|
|||
*/
|
||||
|
||||
#include "main/glthread.h"
|
||||
#include "main/glformats.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "main/hash.h"
|
||||
#include "main/dispatch.h"
|
||||
|
||||
/* TODO:
|
||||
* - Implement better tracking of user pointers
|
||||
* - These can unbind user pointers:
|
||||
* ARB_vertex_attrib_binding
|
||||
* ARB_direct_state_access
|
||||
* EXT_direct_state_access
|
||||
* - Handle GL_ARB_instanced_arrays (incl. EXT_dsa)
|
||||
* - Handle ARB_vertex_attrib_binding (incl. EXT_dsa and ARB_dsa)
|
||||
*/
|
||||
|
||||
static struct glthread_vao *
|
||||
|
|
@ -157,14 +155,52 @@ _mesa_glthread_ClientState(struct gl_context *ctx, GLuint *vaobj,
|
|||
vao->Enabled &= ~(1u << attrib);
|
||||
}
|
||||
|
||||
void
|
||||
_mesa_glthread_AttribPointer(struct gl_context *ctx, gl_vert_attrib attrib)
|
||||
static void
|
||||
attrib_pointer(struct glthread_state *glthread, struct glthread_vao *vao,
|
||||
GLuint buffer, gl_vert_attrib attrib,
|
||||
GLint size, GLenum type, GLsizei stride,
|
||||
const void *pointer)
|
||||
{
|
||||
struct glthread_state *glthread = &ctx->GLThread;
|
||||
struct glthread_vao *vao = glthread->CurrentVAO;
|
||||
if (attrib >= VERT_ATTRIB_MAX)
|
||||
return;
|
||||
|
||||
if (glthread->CurrentArrayBufferName != 0)
|
||||
unsigned elem_size = _mesa_bytes_per_vertex_attrib(size, type);
|
||||
|
||||
vao->Attrib[attrib].ElementSize = elem_size;
|
||||
vao->Attrib[attrib].Stride = stride ? stride : elem_size;
|
||||
vao->Attrib[attrib].Pointer = pointer;
|
||||
|
||||
if (buffer != 0)
|
||||
vao->UserPointerMask &= ~(1u << attrib);
|
||||
else
|
||||
vao->UserPointerMask |= 1u << attrib;
|
||||
}
|
||||
|
||||
void
|
||||
_mesa_glthread_AttribPointer(struct gl_context *ctx, gl_vert_attrib attrib,
|
||||
GLint size, GLenum type, GLsizei stride,
|
||||
const void *pointer)
|
||||
{
|
||||
struct glthread_state *glthread = &ctx->GLThread;
|
||||
|
||||
attrib_pointer(glthread, glthread->CurrentVAO,
|
||||
glthread->CurrentArrayBufferName,
|
||||
attrib, size, type, stride, pointer);
|
||||
}
|
||||
|
||||
void
|
||||
_mesa_glthread_DSAAttribPointer(struct gl_context *ctx, GLuint vaobj,
|
||||
GLuint buffer, gl_vert_attrib attrib,
|
||||
GLint size, GLenum type, GLsizei stride,
|
||||
GLintptr offset)
|
||||
{
|
||||
struct glthread_state *glthread = &ctx->GLThread;
|
||||
struct glthread_vao *vao;
|
||||
|
||||
vao = lookup_vao(ctx, vaobj);
|
||||
if (!vao)
|
||||
return;
|
||||
|
||||
attrib_pointer(glthread, vao, buffer, attrib, size, type, stride,
|
||||
(const void*)offset);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue