diff --git a/src/mapi/glapi/gen/api_vtxfmt_init_h.py b/src/mapi/glapi/gen/api_vtxfmt_init_h.py index 30b8ae42a21..6bd9bb1f107 100644 --- a/src/mapi/glapi/gen/api_vtxfmt_init_h.py +++ b/src/mapi/glapi/gen/api_vtxfmt_init_h.py @@ -58,12 +58,14 @@ class PrintCode(gl_XML.gl_print_base): re.match('VertexAttrib[1-4].*ARB', f.name)): # These functions should map to an *ES callback for GLES2. settings_by_condition['_mesa_is_desktop_gl(ctx)'].append( - 'SET_{0}(tab, vfmt->{0});'.format(f.name)) + 'SET_{0}(tab, NAME({0}));'.format(f.name)) settings_by_condition['ctx->API == API_OPENGLES2'].append( - 'SET_{0}(tab, vfmt->{1}ES);'.format(f.name, f.name[:-3])) + 'SET_{0}(tab, NAME_ES({0}));'.format(f.name)) else: + macro = ('NAME_CALLLIST' if f.name[0:8] == 'CallList' else + 'NAME_AE' if f.name == 'ArrayElement' else 'NAME') settings_by_condition[condition].append( - 'SET_{0}(tab, vfmt->{0});'.format(f.name)) + 'SET_{0}(tab, {1}({0}));'.format(f.name, macro)) # Print out an if statement for each unique condition, with # the SET_* calls nested inside it. diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 1058fb7ae72..0b62f088ad2 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -141,7 +141,6 @@ #include "math/m_matrix.h" #include "main/dispatch.h" /* for _gloffset_COUNT */ #include "macros.h" -#include "vtxfmt.h" #include "git_sha1.h" #ifdef USE_SPARC_ASM @@ -1072,9 +1071,9 @@ _mesa_initialize_dispatch_tables(struct gl_context *ctx) if (ctx->Save) _mesa_initialize_save_table(ctx); - _mesa_install_exec_vtxfmt(ctx, &ctx->vbo_context.exec.vtxfmt); + vbo_install_exec_vtxfmt(ctx); if (ctx->API == API_OPENGL_COMPAT) - _mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt); + _mesa_install_save_vtxfmt(ctx); } /** diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 680e6641e27..33d94f40029 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -315,448 +315,4 @@ struct dd_function_table { GLboolean (*ValidateEGLImage)(struct gl_context *ctx, GLeglImageOES image_handle); }; - -/** - * Per-vertex functions. - * - * These are the functions which can appear between glBegin and glEnd. - * Depending on whether we're inside or outside a glBegin/End pair - * and whether we're in immediate mode or building a display list, these - * functions behave differently. This structure allows us to switch - * between those modes more easily. - * - * Generally, these pointers point to functions in the VBO module. - */ -typedef struct { - void (GLAPIENTRYP ArrayElement)( GLint ); - void (GLAPIENTRYP Color3f)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP Color3fv)( const GLfloat * ); - void (GLAPIENTRYP Color4f)( GLfloat, GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP Color4fv)( const GLfloat * ); - void (GLAPIENTRYP EdgeFlag)( GLboolean ); - void (GLAPIENTRYP EvalCoord1f)( GLfloat ); - void (GLAPIENTRYP EvalCoord1fv)( const GLfloat * ); - void (GLAPIENTRYP EvalCoord2f)( GLfloat, GLfloat ); - void (GLAPIENTRYP EvalCoord2fv)( const GLfloat * ); - void (GLAPIENTRYP EvalPoint1)( GLint ); - void (GLAPIENTRYP EvalPoint2)( GLint, GLint ); - void (GLAPIENTRYP FogCoordfEXT)( GLfloat ); - void (GLAPIENTRYP FogCoordfvEXT)( const GLfloat * ); - void (GLAPIENTRYP Indexf)( GLfloat ); - void (GLAPIENTRYP Indexfv)( const GLfloat * ); - void (GLAPIENTRYP Materialfv)( GLenum face, GLenum pname, const GLfloat * ); - void (GLAPIENTRYP MultiTexCoord1fARB)( GLenum, GLfloat ); - void (GLAPIENTRYP MultiTexCoord1fvARB)( GLenum, const GLfloat * ); - void (GLAPIENTRYP MultiTexCoord2fARB)( GLenum, GLfloat, GLfloat ); - void (GLAPIENTRYP MultiTexCoord2fvARB)( GLenum, const GLfloat * ); - void (GLAPIENTRYP MultiTexCoord3fARB)( GLenum, GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP MultiTexCoord3fvARB)( GLenum, const GLfloat * ); - void (GLAPIENTRYP MultiTexCoord4fARB)( GLenum, GLfloat, GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP MultiTexCoord4fvARB)( GLenum, const GLfloat * ); - void (GLAPIENTRYP Normal3f)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP Normal3fv)( const GLfloat * ); - void (GLAPIENTRYP SecondaryColor3fEXT)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP SecondaryColor3fvEXT)( const GLfloat * ); - void (GLAPIENTRYP TexCoord1f)( GLfloat ); - void (GLAPIENTRYP TexCoord1fv)( const GLfloat * ); - void (GLAPIENTRYP TexCoord2f)( GLfloat, GLfloat ); - void (GLAPIENTRYP TexCoord2fv)( const GLfloat * ); - void (GLAPIENTRYP TexCoord3f)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP TexCoord3fv)( const GLfloat * ); - void (GLAPIENTRYP TexCoord4f)( GLfloat, GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP TexCoord4fv)( const GLfloat * ); - void (GLAPIENTRYP Vertex2f)( GLfloat, GLfloat ); - void (GLAPIENTRYP Vertex2fv)( const GLfloat * ); - void (GLAPIENTRYP Vertex3f)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP Vertex3fv)( const GLfloat * ); - void (GLAPIENTRYP Vertex4f)( GLfloat, GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP Vertex4fv)( const GLfloat * ); - void (GLAPIENTRYP CallList)( GLuint ); - void (GLAPIENTRYP CallLists)( GLsizei, GLenum, const GLvoid * ); - void (GLAPIENTRYP Begin)( GLenum ); - void (GLAPIENTRYP End)( void ); - void (GLAPIENTRYP PrimitiveRestartNV)( void ); - /* Originally for GL_NV_vertex_program, now used only dlist.c and friends */ - void (GLAPIENTRYP VertexAttrib1fNV)( GLuint index, GLfloat x ); - void (GLAPIENTRYP VertexAttrib1fvNV)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib2fNV)( GLuint index, GLfloat x, GLfloat y ); - void (GLAPIENTRYP VertexAttrib2fvNV)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib3fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z ); - void (GLAPIENTRYP VertexAttrib3fvNV)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib4fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w ); - void (GLAPIENTRYP VertexAttrib4fvNV)( GLuint index, const GLfloat *v ); - /* GL_ARB_vertex_program */ - void (GLAPIENTRYP VertexAttrib1fARB)( GLuint index, GLfloat x ); - void (GLAPIENTRYP VertexAttrib1fvARB)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib2fARB)( GLuint index, GLfloat x, GLfloat y ); - void (GLAPIENTRYP VertexAttrib2fvARB)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib3fARB)( GLuint index, GLfloat x, GLfloat y, GLfloat z ); - void (GLAPIENTRYP VertexAttrib3fvARB)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib4fARB)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w ); - void (GLAPIENTRYP VertexAttrib4fvARB)( GLuint index, const GLfloat *v ); - /* OpenGL ES variants of the above. */ - void (GLAPIENTRYP VertexAttrib1fES)( GLuint index, GLfloat x ); - void (GLAPIENTRYP VertexAttrib1fvES)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib2fES)( GLuint index, GLfloat x, GLfloat y ); - void (GLAPIENTRYP VertexAttrib2fvES)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib3fES)( GLuint index, GLfloat x, GLfloat y, GLfloat z ); - void (GLAPIENTRYP VertexAttrib3fvES)( GLuint index, const GLfloat *v ); - void (GLAPIENTRYP VertexAttrib4fES)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w ); - void (GLAPIENTRYP VertexAttrib4fvES)( GLuint index, const GLfloat *v ); - - /* GL_EXT_gpu_shader4 / GL 3.0 */ - void (GLAPIENTRYP VertexAttribI1iEXT)( GLuint index, GLint x); - void (GLAPIENTRYP VertexAttribI2iEXT)( GLuint index, GLint x, GLint y); - void (GLAPIENTRYP VertexAttribI3iEXT)( GLuint index, GLint x, GLint y, GLint z); - void (GLAPIENTRYP VertexAttribI4iEXT)( GLuint index, GLint x, GLint y, GLint z, GLint w); - void (GLAPIENTRYP VertexAttribI2ivEXT)( GLuint index, const GLint *v); - void (GLAPIENTRYP VertexAttribI3ivEXT)( GLuint index, const GLint *v); - void (GLAPIENTRYP VertexAttribI4ivEXT)( GLuint index, const GLint *v); - - void (GLAPIENTRYP VertexAttribI1uiEXT)( GLuint index, GLuint x); - void (GLAPIENTRYP VertexAttribI2uiEXT)( GLuint index, GLuint x, GLuint y); - void (GLAPIENTRYP VertexAttribI3uiEXT)( GLuint index, GLuint x, GLuint y, GLuint z); - void (GLAPIENTRYP VertexAttribI4uiEXT)( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); - void (GLAPIENTRYP VertexAttribI2uivEXT)( GLuint index, const GLuint *v); - void (GLAPIENTRYP VertexAttribI3uivEXT)( GLuint index, const GLuint *v); - void (GLAPIENTRYP VertexAttribI4uivEXT)( GLuint index, const GLuint *v); - - /* GL_ARB_vertex_type_10_10_10_2_rev / GL3.3 */ - void (GLAPIENTRYP VertexP2ui)( GLenum type, GLuint value ); - void (GLAPIENTRYP VertexP2uiv)( GLenum type, const GLuint *value); - - void (GLAPIENTRYP VertexP3ui)( GLenum type, GLuint value ); - void (GLAPIENTRYP VertexP3uiv)( GLenum type, const GLuint *value); - - void (GLAPIENTRYP VertexP4ui)( GLenum type, GLuint value ); - void (GLAPIENTRYP VertexP4uiv)( GLenum type, const GLuint *value); - - void (GLAPIENTRYP TexCoordP1ui)( GLenum type, GLuint coords ); - void (GLAPIENTRYP TexCoordP1uiv)( GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP TexCoordP2ui)( GLenum type, GLuint coords ); - void (GLAPIENTRYP TexCoordP2uiv)( GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP TexCoordP3ui)( GLenum type, GLuint coords ); - void (GLAPIENTRYP TexCoordP3uiv)( GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP TexCoordP4ui)( GLenum type, GLuint coords ); - void (GLAPIENTRYP TexCoordP4uiv)( GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP MultiTexCoordP1ui)( GLenum texture, GLenum type, GLuint coords ); - void (GLAPIENTRYP MultiTexCoordP1uiv)( GLenum texture, GLenum type, const GLuint *coords ); - void (GLAPIENTRYP MultiTexCoordP2ui)( GLenum texture, GLenum type, GLuint coords ); - void (GLAPIENTRYP MultiTexCoordP2uiv)( GLenum texture, GLenum type, const GLuint *coords ); - void (GLAPIENTRYP MultiTexCoordP3ui)( GLenum texture, GLenum type, GLuint coords ); - void (GLAPIENTRYP MultiTexCoordP3uiv)( GLenum texture, GLenum type, const GLuint *coords ); - void (GLAPIENTRYP MultiTexCoordP4ui)( GLenum texture, GLenum type, GLuint coords ); - void (GLAPIENTRYP MultiTexCoordP4uiv)( GLenum texture, GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP NormalP3ui)( GLenum type, GLuint coords ); - void (GLAPIENTRYP NormalP3uiv)( GLenum type, const GLuint *coords ); - - void (GLAPIENTRYP ColorP3ui)( GLenum type, GLuint color ); - void (GLAPIENTRYP ColorP3uiv)( GLenum type, const GLuint *color ); - - void (GLAPIENTRYP ColorP4ui)( GLenum type, GLuint color ); - void (GLAPIENTRYP ColorP4uiv)( GLenum type, const GLuint *color ); - - void (GLAPIENTRYP SecondaryColorP3ui)( GLenum type, GLuint color ); - void (GLAPIENTRYP SecondaryColorP3uiv)( GLenum type, const GLuint *color ); - - void (GLAPIENTRYP VertexAttribP1ui)( GLuint index, GLenum type, - GLboolean normalized, GLuint value); - void (GLAPIENTRYP VertexAttribP2ui)( GLuint index, GLenum type, - GLboolean normalized, GLuint value); - void (GLAPIENTRYP VertexAttribP3ui)( GLuint index, GLenum type, - GLboolean normalized, GLuint value); - void (GLAPIENTRYP VertexAttribP4ui)( GLuint index, GLenum type, - GLboolean normalized, GLuint value); - void (GLAPIENTRYP VertexAttribP1uiv)( GLuint index, GLenum type, - GLboolean normalized, - const GLuint *value); - void (GLAPIENTRYP VertexAttribP2uiv)( GLuint index, GLenum type, - GLboolean normalized, - const GLuint *value); - void (GLAPIENTRYP VertexAttribP3uiv)( GLuint index, GLenum type, - GLboolean normalized, - const GLuint *value); - void (GLAPIENTRYP VertexAttribP4uiv)( GLuint index, GLenum type, - GLboolean normalized, - const GLuint *value); - - /* GL_ARB_vertex_attrib_64bit / GL 4.1 */ - void (GLAPIENTRYP VertexAttribL1d)( GLuint index, GLdouble x); - void (GLAPIENTRYP VertexAttribL2d)( GLuint index, GLdouble x, GLdouble y); - void (GLAPIENTRYP VertexAttribL3d)( GLuint index, GLdouble x, GLdouble y, GLdouble z); - void (GLAPIENTRYP VertexAttribL4d)( GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); - - - void (GLAPIENTRYP VertexAttribL1dv)( GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttribL2dv)( GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttribL3dv)( GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttribL4dv)( GLuint index, const GLdouble *v); - - void (GLAPIENTRYP VertexAttribL1ui64ARB)( GLuint index, GLuint64EXT x); - void (GLAPIENTRYP VertexAttribL1ui64vARB)( GLuint index, const GLuint64EXT *v); - - /* GL_NV_half_float */ - void (GLAPIENTRYP Vertex2hNV)( GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Vertex2hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP Vertex3hNV)( GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Vertex3hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP Vertex4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Vertex4hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP Normal3hNV)( GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Normal3hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP Color3hNV)( GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Color3hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP Color4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP Color4hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP TexCoord1hNV)( GLhalfNV ); - void (GLAPIENTRYP TexCoord1hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP TexCoord2hNV)( GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP TexCoord2hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP TexCoord3hNV)( GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP TexCoord3hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP TexCoord4hNV)( GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP TexCoord4hvNV)( const GLhalfNV * ); - void (GLAPIENTRYP MultiTexCoord1hNV)( GLenum, GLhalfNV ); - void (GLAPIENTRYP MultiTexCoord1hvNV)( GLenum, const GLhalfNV * ); - void (GLAPIENTRYP MultiTexCoord2hNV)( GLenum, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP MultiTexCoord2hvNV)( GLenum, const GLhalfNV * ); - void (GLAPIENTRYP MultiTexCoord3hNV)( GLenum, GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP MultiTexCoord3hvNV)( GLenum, const GLhalfNV * ); - void (GLAPIENTRYP MultiTexCoord4hNV)( GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP MultiTexCoord4hvNV)( GLenum, const GLhalfNV * ); - void (GLAPIENTRYP VertexAttrib1hNV)( GLuint index, GLhalfNV x ); - void (GLAPIENTRYP VertexAttrib1hvNV)( GLuint index, const GLhalfNV *v ); - void (GLAPIENTRYP VertexAttrib2hNV)( GLuint index, GLhalfNV x, GLhalfNV y ); - void (GLAPIENTRYP VertexAttrib2hvNV)( GLuint index, const GLhalfNV *v ); - void (GLAPIENTRYP VertexAttrib3hNV)( GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z ); - void (GLAPIENTRYP VertexAttrib3hvNV)( GLuint index, const GLhalfNV *v ); - void (GLAPIENTRYP VertexAttrib4hNV)( GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w ); - void (GLAPIENTRYP VertexAttrib4hvNV)( GLuint index, const GLhalfNV *v ); - void (GLAPIENTRYP VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); - void (GLAPIENTRYP VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); - void (GLAPIENTRYP VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); - void (GLAPIENTRYP VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); - void (GLAPIENTRYP FogCoordhNV)( GLhalfNV ); - void (GLAPIENTRYP FogCoordhvNV)( const GLhalfNV * ); - void (GLAPIENTRYP SecondaryColor3hNV)( GLhalfNV, GLhalfNV, GLhalfNV ); - void (GLAPIENTRYP SecondaryColor3hvNV)( const GLhalfNV * ); - - void (GLAPIENTRYP Color3b)( GLbyte red, GLbyte green, GLbyte blue ); - void (GLAPIENTRYP Color3d)( GLdouble red, GLdouble green, GLdouble blue ); - void (GLAPIENTRYP Color3i)( GLint red, GLint green, GLint blue ); - void (GLAPIENTRYP Color3s)( GLshort red, GLshort green, GLshort blue ); - void (GLAPIENTRYP Color3ui)( GLuint red, GLuint green, GLuint blue ); - void (GLAPIENTRYP Color3us)( GLushort red, GLushort green, GLushort blue ); - void (GLAPIENTRYP Color3ub)( GLubyte red, GLubyte green, GLubyte blue ); - void (GLAPIENTRYP Color3bv)( const GLbyte *v ); - void (GLAPIENTRYP Color3dv)( const GLdouble *v ); - void (GLAPIENTRYP Color3iv)( const GLint *v ); - void (GLAPIENTRYP Color3sv)( const GLshort *v ); - void (GLAPIENTRYP Color3uiv)( const GLuint *v ); - void (GLAPIENTRYP Color3usv)( const GLushort *v ); - void (GLAPIENTRYP Color3ubv)( const GLubyte *v ); - void (GLAPIENTRYP Color4b)( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ); - void (GLAPIENTRYP Color4d)( GLdouble red, GLdouble green, GLdouble blue, - GLdouble alpha ); - void (GLAPIENTRYP Color4i)( GLint red, GLint green, GLint blue, GLint alpha ); - void (GLAPIENTRYP Color4s)( GLshort red, GLshort green, GLshort blue, - GLshort alpha ); - void (GLAPIENTRYP Color4ui)( GLuint red, GLuint green, GLuint blue, GLuint alpha ); - void (GLAPIENTRYP Color4us)( GLushort red, GLushort green, GLushort blue, - GLushort alpha ); - void (GLAPIENTRYP Color4ub)( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); - void (GLAPIENTRYP Color4iv)( const GLint *v ); - void (GLAPIENTRYP Color4bv)( const GLbyte *v ); - void (GLAPIENTRYP Color4dv)( const GLdouble *v ); - void (GLAPIENTRYP Color4sv)( const GLshort *v); - void (GLAPIENTRYP Color4uiv)( const GLuint *v); - void (GLAPIENTRYP Color4usv)( const GLushort *v); - void (GLAPIENTRYP Color4ubv)( const GLubyte *v); - void (GLAPIENTRYP FogCoordd)( GLdouble d ); - void (GLAPIENTRYP FogCoorddv)( const GLdouble *v ); - void (GLAPIENTRYP Indexd)( GLdouble c ); - void (GLAPIENTRYP Indexi)( GLint c ); - void (GLAPIENTRYP Indexs)( GLshort c ); - void (GLAPIENTRYP Indexub)( GLubyte c ); - void (GLAPIENTRYP Indexdv)( const GLdouble *c ); - void (GLAPIENTRYP Indexiv)( const GLint *c ); - void (GLAPIENTRYP Indexsv)( const GLshort *c ); - void (GLAPIENTRYP Indexubv)( const GLubyte *c ); - void (GLAPIENTRYP EdgeFlagv)(const GLboolean *flag); - void (GLAPIENTRYP Normal3b)( GLbyte nx, GLbyte ny, GLbyte nz ); - void (GLAPIENTRYP Normal3d)( GLdouble nx, GLdouble ny, GLdouble nz ); - void (GLAPIENTRYP Normal3i)( GLint nx, GLint ny, GLint nz ); - void (GLAPIENTRYP Normal3s)( GLshort nx, GLshort ny, GLshort nz ); - void (GLAPIENTRYP Normal3bv)( const GLbyte *v ); - void (GLAPIENTRYP Normal3dv)( const GLdouble *v ); - void (GLAPIENTRYP Normal3iv)( const GLint *v ); - void (GLAPIENTRYP Normal3sv)( const GLshort *v ); - void (GLAPIENTRYP TexCoord1d)( GLdouble s ); - void (GLAPIENTRYP TexCoord1i)( GLint s ); - void (GLAPIENTRYP TexCoord1s)( GLshort s ); - void (GLAPIENTRYP TexCoord2d)( GLdouble s, GLdouble t ); - void (GLAPIENTRYP TexCoord2s)( GLshort s, GLshort t ); - void (GLAPIENTRYP TexCoord2i)( GLint s, GLint t ); - void (GLAPIENTRYP TexCoord3d)( GLdouble s, GLdouble t, GLdouble r ); - void (GLAPIENTRYP TexCoord3i)( GLint s, GLint t, GLint r ); - void (GLAPIENTRYP TexCoord3s)( GLshort s, GLshort t, GLshort r ); - void (GLAPIENTRYP TexCoord4d)( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); - void (GLAPIENTRYP TexCoord4i)( GLint s, GLint t, GLint r, GLint q ); - void (GLAPIENTRYP TexCoord4s)( GLshort s, GLshort t, GLshort r, GLshort q ); - void (GLAPIENTRYP TexCoord1dv)( const GLdouble *v ); - void (GLAPIENTRYP TexCoord1iv)( const GLint *v ); - void (GLAPIENTRYP TexCoord1sv)( const GLshort *v ); - void (GLAPIENTRYP TexCoord2dv)( const GLdouble *v ); - void (GLAPIENTRYP TexCoord2iv)( const GLint *v ); - void (GLAPIENTRYP TexCoord2sv)( const GLshort *v ); - void (GLAPIENTRYP TexCoord3dv)( const GLdouble *v ); - void (GLAPIENTRYP TexCoord3iv)( const GLint *v ); - void (GLAPIENTRYP TexCoord3sv)( const GLshort *v ); - void (GLAPIENTRYP TexCoord4dv)( const GLdouble *v ); - void (GLAPIENTRYP TexCoord4iv)( const GLint *v ); - void (GLAPIENTRYP TexCoord4sv)( const GLshort *v ); - void (GLAPIENTRYP Vertex2d)( GLdouble x, GLdouble y ); - void (GLAPIENTRYP Vertex2i)( GLint x, GLint y ); - void (GLAPIENTRYP Vertex2s)( GLshort x, GLshort y ); - void (GLAPIENTRYP Vertex3d)( GLdouble x, GLdouble y, GLdouble z ); - void (GLAPIENTRYP Vertex3i)( GLint x, GLint y, GLint z ); - void (GLAPIENTRYP Vertex3s)( GLshort x, GLshort y, GLshort z ); - void (GLAPIENTRYP Vertex4d)( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); - void (GLAPIENTRYP Vertex4i)( GLint x, GLint y, GLint z, GLint w ); - void (GLAPIENTRYP Vertex4s)( GLshort x, GLshort y, GLshort z, GLshort w ); - void (GLAPIENTRYP Vertex2dv)( const GLdouble *v ); - void (GLAPIENTRYP Vertex2iv)( const GLint *v ); - void (GLAPIENTRYP Vertex2sv)( const GLshort *v ); - void (GLAPIENTRYP Vertex3dv)( const GLdouble *v ); - void (GLAPIENTRYP Vertex3iv)( const GLint *v ); - void (GLAPIENTRYP Vertex3sv)( const GLshort *v ); - void (GLAPIENTRYP Vertex4dv)( const GLdouble *v ); - void (GLAPIENTRYP Vertex4iv)( const GLint *v ); - void (GLAPIENTRYP Vertex4sv)( const GLshort *v ); - void (GLAPIENTRYP MultiTexCoord1d)(GLenum target, GLdouble s); - void (GLAPIENTRYP MultiTexCoord1dv)(GLenum target, const GLdouble *v); - void (GLAPIENTRYP MultiTexCoord1i)(GLenum target, GLint s); - void (GLAPIENTRYP MultiTexCoord1iv)(GLenum target, const GLint *v); - void (GLAPIENTRYP MultiTexCoord1s)(GLenum target, GLshort s); - void (GLAPIENTRYP MultiTexCoord1sv)(GLenum target, const GLshort *v); - void (GLAPIENTRYP MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t); - void (GLAPIENTRYP MultiTexCoord2dv)(GLenum target, const GLdouble *v); - void (GLAPIENTRYP MultiTexCoord2i)(GLenum target, GLint s, GLint t); - void (GLAPIENTRYP MultiTexCoord2iv)(GLenum target, const GLint *v); - void (GLAPIENTRYP MultiTexCoord2s)(GLenum target, GLshort s, GLshort t); - void (GLAPIENTRYP MultiTexCoord2sv)(GLenum target, const GLshort *v); - void (GLAPIENTRYP MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r); - void (GLAPIENTRYP MultiTexCoord3dv)(GLenum target, const GLdouble *v); - void (GLAPIENTRYP MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r); - void (GLAPIENTRYP MultiTexCoord3iv)(GLenum target, const GLint *v); - void (GLAPIENTRYP MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r); - void (GLAPIENTRYP MultiTexCoord3sv)(GLenum target, const GLshort *v); - void (GLAPIENTRYP MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, - GLdouble q); - void (GLAPIENTRYP MultiTexCoord4dv)(GLenum target, const GLdouble *v); - void (GLAPIENTRYP MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q); - void (GLAPIENTRYP MultiTexCoord4iv)(GLenum target, const GLint *v); - void (GLAPIENTRYP MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, - GLshort q); - void (GLAPIENTRYP MultiTexCoord4sv)(GLenum target, const GLshort *v); - void (GLAPIENTRYP EvalCoord2dv)( const GLdouble *u ); - void (GLAPIENTRYP EvalCoord2d)( GLdouble u, GLdouble v ); - void (GLAPIENTRYP EvalCoord1dv)( const GLdouble *u ); - void (GLAPIENTRYP EvalCoord1d)( GLdouble u ); - void (GLAPIENTRYP Materialf)( GLenum face, GLenum pname, GLfloat param ); - void (GLAPIENTRYP Materiali)(GLenum face, GLenum pname, GLint param ); - void (GLAPIENTRYP Materialiv)(GLenum face, GLenum pname, const GLint *params ); - void (GLAPIENTRYP SecondaryColor3b)( GLbyte red, GLbyte green, GLbyte blue ); - void (GLAPIENTRYP SecondaryColor3d)( GLdouble red, GLdouble green, GLdouble blue ); - void (GLAPIENTRYP SecondaryColor3i)( GLint red, GLint green, GLint blue ); - void (GLAPIENTRYP SecondaryColor3s)( GLshort red, GLshort green, GLshort blue ); - void (GLAPIENTRYP SecondaryColor3ui)( GLuint red, GLuint green, GLuint blue ); - void (GLAPIENTRYP SecondaryColor3us)( GLushort red, GLushort green, GLushort blue ); - void (GLAPIENTRYP SecondaryColor3ub)( GLubyte red, GLubyte green, GLubyte blue ); - void (GLAPIENTRYP SecondaryColor3bv)( const GLbyte *v ); - void (GLAPIENTRYP SecondaryColor3dv)( const GLdouble *v ); - void (GLAPIENTRYP SecondaryColor3iv)( const GLint *v ); - void (GLAPIENTRYP SecondaryColor3sv)( const GLshort *v ); - void (GLAPIENTRYP SecondaryColor3uiv)( const GLuint *v ); - void (GLAPIENTRYP SecondaryColor3usv)( const GLushort *v ); - void (GLAPIENTRYP SecondaryColor3ubv)( const GLubyte *v ); - void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); - void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); - void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); - void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); - void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); - void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); - void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, - GLshort w); - void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, - GLdouble w); - void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, - GLubyte w); - void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte *v); - void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v); - void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v); - void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v); - void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v); - void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v); - void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v); - void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v); - void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v); - void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v); - void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v); - void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v); - void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v); - void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v); - void (GLAPIENTRYP VertexAttrib1s)(GLuint index, GLshort x); - void (GLAPIENTRYP VertexAttrib1d)(GLuint index, GLdouble x); - void (GLAPIENTRYP VertexAttrib2s)(GLuint index, GLshort x, GLshort y); - void (GLAPIENTRYP VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); - void (GLAPIENTRYP VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z); - void (GLAPIENTRYP VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); - void (GLAPIENTRYP VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, - GLshort w); - void (GLAPIENTRYP VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, - GLdouble w); - void (GLAPIENTRYP VertexAttrib1sv)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib1dv)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib2sv)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib2dv)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib3sv)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib3dv)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib4sv)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttrib4dv)(GLuint index, const GLdouble *v); - void (GLAPIENTRYP VertexAttrib4bv)(GLuint index, const GLbyte * v); - void (GLAPIENTRYP VertexAttrib4iv)(GLuint index, const GLint * v); - void (GLAPIENTRYP VertexAttrib4ubv)(GLuint index, const GLubyte * v); - void (GLAPIENTRYP VertexAttrib4usv)(GLuint index, const GLushort * v); - void (GLAPIENTRYP VertexAttrib4uiv)(GLuint index, const GLuint * v); - void (GLAPIENTRYP VertexAttrib4Nbv)(GLuint index, const GLbyte * v); - void (GLAPIENTRYP VertexAttrib4Nsv)(GLuint index, const GLshort * v); - void (GLAPIENTRYP VertexAttrib4Niv)(GLuint index, const GLint * v); - void (GLAPIENTRYP VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, - GLubyte w); - void (GLAPIENTRYP VertexAttrib4Nubv)(GLuint index, const GLubyte * v); - void (GLAPIENTRYP VertexAttrib4Nusv)(GLuint index, const GLushort * v); - void (GLAPIENTRYP VertexAttrib4Nuiv)(GLuint index, const GLuint * v); - void (GLAPIENTRYP VertexAttribI1iv)(GLuint index, const GLint *v); - void (GLAPIENTRYP VertexAttribI1uiv)(GLuint index, const GLuint *v); - void (GLAPIENTRYP VertexAttribI4bv)(GLuint index, const GLbyte *v); - void (GLAPIENTRYP VertexAttribI4sv)(GLuint index, const GLshort *v); - void (GLAPIENTRYP VertexAttribI4ubv)(GLuint index, const GLubyte *v); - void (GLAPIENTRYP VertexAttribI4usv)(GLuint index, const GLushort *v); -} GLvertexformat; - - #endif /* DD_INCLUDED */ diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 8993272be6c..bbe5ef6c290 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -14454,8 +14454,6 @@ mesa_print_display_list(GLuint list) void _mesa_init_display_list(struct gl_context *ctx) { - GLvertexformat *vfmt = &ctx->ListState.ListVtxfmt; - /* Display list */ ctx->ListState.CallDepth = 1; ctx->ExecuteFlag = GL_TRUE; @@ -14466,11 +14464,19 @@ _mesa_init_display_list(struct gl_context *ctx) /* Display List group */ ctx->List.ListBase = 0; +} + + +void +_mesa_install_save_vtxfmt(struct gl_context *ctx) +{ + struct _glapi_table *tab = ctx->Save; + assert(ctx->API == API_OPENGL_COMPAT); #define NAME_AE(x) _ae_##x #define NAME_CALLLIST(x) save_##x #define NAME(x) save_##x #define NAME_ES(x) save_##x -#include "vbo/vbo_init_tmp.h" + #include "api_vtxfmt_init.h" } diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index 4c35ce8eeb1..04c54d1e459 100644 --- a/src/mesa/main/dlist.h +++ b/src/mesa/main/dlist.h @@ -151,6 +151,9 @@ _mesa_initialize_save_table(const struct gl_context *); void _mesa_init_display_list(struct gl_context * ctx); +void +_mesa_install_save_vtxfmt(struct gl_context *ctx); + bool _mesa_get_list(struct gl_context *ctx, GLuint list, struct gl_display_list **dlist, diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 15b507c277a..3d62d4be4d2 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -4748,8 +4748,6 @@ struct gl_dlist_state GLuint CallDepth; /**< Current recursion calling depth */ GLuint LastInstSize; /**< Size of the last node. */ - GLvertexformat ListVtxfmt; - GLubyte ActiveAttribSize[VERT_ATTRIB_MAX]; uint32_t CurrentAttrib[VERT_ATTRIB_MAX][8]; @@ -5218,8 +5216,7 @@ struct gl_context struct _glapi_table *Save; /** * The dispatch table used between glBegin() and glEnd() (outside of a - * display list). Only valid functions between those two are set, which is - * mostly just the set in a GLvertexformat struct. + * display list). Only valid functions between those two are set. */ struct _glapi_table *BeginEnd; /** diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c deleted file mode 100644 index 0dfa0008a40..00000000000 --- a/src/mesa/main/vtxfmt.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Mesa 3-D graphics library - * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Keith Whitwell Gareth Hughes - */ - -#include "glheader.h" -#include "api_arrayelt.h" -#include "context.h" - -#include "mtypes.h" -#include "vtxfmt.h" -#include "eval.h" -#include "dlist.h" -#include "main/dispatch.h" -#include "vbo/vbo.h" - - -/** - * Copy the functions found in the GLvertexformat object into the - * dispatch table. - */ -static void -install_vtxfmt(struct gl_context *ctx, struct _glapi_table *tab, - const GLvertexformat *vfmt) -{ - assert(ctx->Version > 0); - -#include "api_vtxfmt_init.h" -} - - -/** - * Install per-vertex functions into the API dispatch table for execution. - */ -void -_mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) -{ - install_vtxfmt(ctx, ctx->Exec, vfmt); - if (ctx->BeginEnd) - install_vtxfmt(ctx, ctx->BeginEnd, vfmt); -} - - -/** - * Install per-vertex functions into the API dispatch table for display - * list compilation. - */ -void -_mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) -{ - if (_mesa_is_desktop_gl(ctx)) - install_vtxfmt(ctx, ctx->Save, vfmt); -} diff --git a/src/mesa/main/vtxfmt.h b/src/mesa/main/vtxfmt.h deleted file mode 100644 index c57309553b1..00000000000 --- a/src/mesa/main/vtxfmt.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - * \file vtxfmt.h - * - * \author Keith Whitwell - * \author Gareth Hughes - */ - -/* - * Mesa 3-D graphics library - * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef _VTXFMT_H_ -#define _VTXFMT_H_ - -#include "dd.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gl_context; - -extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); -extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* _VTXFMT_H_ */ diff --git a/src/mesa/meson.build b/src/mesa/meson.build index 1ed15d51bd7..0435292d725 100644 --- a/src/mesa/meson.build +++ b/src/mesa/meson.build @@ -278,8 +278,8 @@ files_libmesa = files( 'main/version.h', 'main/viewport.c', 'main/viewport.h', - 'main/vtxfmt.c', - 'main/vtxfmt.h', + 'main/es1_conversion.c', + 'main/es1_conversion.h', 'math/m_debug.h', 'math/m_debug_clip.c', 'math/m_debug_norm.c', @@ -465,10 +465,8 @@ files_libmesa = files( 'vbo/vbo_exec_api.c', 'vbo/vbo_exec_draw.c', 'vbo/vbo_exec_eval.c', - 'vbo/vbo_init_tmp.h', 'vbo/vbo_minmax_index.c', 'vbo/vbo_noop.c', - 'vbo/vbo_noop.h', 'vbo/vbo_save.c', 'vbo/vbo_save.h', 'vbo/vbo_save_api.c', diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index cb173507acf..3d11daf7f4b 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -33,7 +33,6 @@ #include "main/shaderobj.h" #include "main/state.h" #include "main/version.h" -#include "main/vtxfmt.h" #include "main/hash.h" #include "program/prog_cache.h" #include "vbo/vbo.h" diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h index 44f1f126c72..08d21ada97a 100644 --- a/src/mesa/vbo/vbo.h +++ b/src/mesa/vbo/vbo.h @@ -101,9 +101,6 @@ struct vbo_markers struct vbo_exec_context { - GLvertexformat vtxfmt; - GLvertexformat vtxfmt_noop; - struct { /* Multi draw where the mode can vary between draws. */ struct pipe_draw_info info; @@ -153,8 +150,6 @@ struct vbo_exec_context struct vbo_save_context { - GLvertexformat vtxfmt; - GLbitfield64 enabled; /**< mask of enabled vbo arrays. */ GLubyte attrsz[VBO_ATTRIB_MAX]; /**< 1, 2, 3 or 4 */ GLenum16 attrtype[VBO_ATTRIB_MAX]; /**< GL_FLOAT, GL_INT, etc */ @@ -183,12 +178,24 @@ struct vbo_save_context { bool no_current_update; }; +GLboolean +_mesa_using_noop_vtxfmt(const struct _glapi_table *dispatch); + GLboolean _vbo_CreateContext(struct gl_context *ctx); void _vbo_DestroyContext(struct gl_context *ctx); +void +vbo_install_exec_vtxfmt(struct gl_context *ctx); + +void +vbo_install_exec_vtxfmt_noop(struct gl_context *ctx); + +void +vbo_install_save_vtxfmt_noop(struct gl_context *ctx); + void vbo_exec_update_eval_maps(struct gl_context *ctx); diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 24e0ed97341..89dc1486ee9 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -28,7 +28,6 @@ #include "main/errors.h" #include "main/bufferobj.h" #include "math/m_eval.h" -#include "main/vtxfmt.h" #include "main/api_arrayelt.h" #include "main/arrayobj.h" #include "main/varray.h" diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index fbc65bed865..58b315022f5 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -29,7 +29,6 @@ #include "main/glheader.h" #include "main/arrayobj.h" #include "main/api_arrayelt.h" -#include "main/vtxfmt.h" #include "vbo_private.h" const GLubyte diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 435f1043db5..243f3a1415d 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -34,7 +34,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/bufferobj.h" #include "main/context.h" #include "main/macros.h" -#include "main/vtxfmt.h" #include "main/dlist.h" #include "main/eval.h" #include "main/state.h" @@ -45,7 +44,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "util/bitscan.h" #include "util/u_memory.h" -#include "vbo_noop.h" #include "vbo_private.h" #include "state_tracker/st_cb_bufferobjects.h" @@ -998,17 +996,21 @@ vbo_exec_PrimitiveRestartNV(void) } -static void -vbo_exec_vtxfmt_init(struct vbo_exec_context *exec) +void +vbo_install_exec_vtxfmt(struct gl_context *ctx) { - GLvertexformat *vfmt = &exec->vtxfmt; - #define NAME_AE(x) _ae_##x #define NAME_CALLLIST(x) _mesa_##x #define NAME(x) vbo_exec_##x #define NAME_ES(x) _es_##x -#include "vbo_init_tmp.h" + struct _glapi_table *tab = ctx->Exec; + #include "api_vtxfmt_init.h" + + if (ctx->BeginEnd) { + tab = ctx->BeginEnd; + #include "api_vtxfmt_init.h" + } } @@ -1036,9 +1038,6 @@ vbo_exec_vtx_init(struct vbo_exec_context *exec) exec->vtx.bufferobj = st_bufferobj_alloc(ctx, IMM_BUFFER_NAME); - vbo_exec_vtxfmt_init(exec); - _mesa_noop_vtxfmt_init(ctx, &exec->vtxfmt_noop); - exec->vtx.enabled = u_bit_consecutive64(0, VBO_ATTRIB_MAX); /* reset all */ vbo_reset_all_attr(exec); diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 499b93e317d..4fb3d5eb210 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -34,9 +34,7 @@ #include "main/enums.h" #include "main/state.h" #include "main/varray.h" -#include "main/vtxfmt.h" -#include "vbo_noop.h" #include "vbo_private.h" #include "state_tracker/st_cb_bufferobjects.h" @@ -275,15 +273,15 @@ vbo_exec_vtx_map(struct vbo_exec_context *exec) if (!exec->vtx.buffer_map) { /* out of memory */ - _mesa_install_exec_vtxfmt(ctx, &exec->vtxfmt_noop); + vbo_install_exec_vtxfmt_noop(ctx); } else { if (_mesa_using_noop_vtxfmt(ctx->Exec)) { /* The no-op functions are installed so switch back to regular * functions. We do this test just to avoid frequent and needless - * calls to _mesa_install_exec_vtxfmt(). + * calls to vbo_install_exec_vtxfmt(). */ - _mesa_install_exec_vtxfmt(ctx, &exec->vtxfmt); + vbo_install_exec_vtxfmt(ctx); } } diff --git a/src/mesa/vbo/vbo_init_tmp.h b/src/mesa/vbo/vbo_init_tmp.h deleted file mode 100644 index d18f34492a9..00000000000 --- a/src/mesa/vbo/vbo_init_tmp.h +++ /dev/null @@ -1,442 +0,0 @@ -/************************************************************************** - * - * Copyright 2020 Advanced Micro Devices, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -vfmt->ArrayElement = NAME_AE(ArrayElement); - -vfmt->Begin = NAME(Begin); -vfmt->End = NAME(End); -vfmt->PrimitiveRestartNV = NAME(PrimitiveRestartNV); - -vfmt->CallList = NAME_CALLLIST(CallList); -vfmt->CallLists = NAME_CALLLIST(CallLists); - -vfmt->EvalCoord1f = NAME(EvalCoord1f); -vfmt->EvalCoord1fv = NAME(EvalCoord1fv); -vfmt->EvalCoord2f = NAME(EvalCoord2f); -vfmt->EvalCoord2fv = NAME(EvalCoord2fv); -vfmt->EvalPoint1 = NAME(EvalPoint1); -vfmt->EvalPoint2 = NAME(EvalPoint2); - -vfmt->Color3f = NAME(Color3f); -vfmt->Color3fv = NAME(Color3fv); -vfmt->Color4f = NAME(Color4f); -vfmt->Color4fv = NAME(Color4fv); -vfmt->FogCoordfEXT = NAME(FogCoordfEXT); -vfmt->FogCoordfvEXT = NAME(FogCoordfvEXT); -vfmt->MultiTexCoord1fARB = NAME(MultiTexCoord1fARB); -vfmt->MultiTexCoord1fvARB = NAME(MultiTexCoord1fvARB); -vfmt->MultiTexCoord2fARB = NAME(MultiTexCoord2fARB); -vfmt->MultiTexCoord2fvARB = NAME(MultiTexCoord2fvARB); -vfmt->MultiTexCoord3fARB = NAME(MultiTexCoord3fARB); -vfmt->MultiTexCoord3fvARB = NAME(MultiTexCoord3fvARB); -vfmt->MultiTexCoord4fARB = NAME(MultiTexCoord4fARB); -vfmt->MultiTexCoord4fvARB = NAME(MultiTexCoord4fvARB); -vfmt->Normal3f = NAME(Normal3f); -vfmt->Normal3fv = NAME(Normal3fv); -vfmt->SecondaryColor3fEXT = NAME(SecondaryColor3fEXT); -vfmt->SecondaryColor3fvEXT = NAME(SecondaryColor3fvEXT); -vfmt->TexCoord1f = NAME(TexCoord1f); -vfmt->TexCoord1fv = NAME(TexCoord1fv); -vfmt->TexCoord2f = NAME(TexCoord2f); -vfmt->TexCoord2fv = NAME(TexCoord2fv); -vfmt->TexCoord3f = NAME(TexCoord3f); -vfmt->TexCoord3fv = NAME(TexCoord3fv); -vfmt->TexCoord4f = NAME(TexCoord4f); -vfmt->TexCoord4fv = NAME(TexCoord4fv); -vfmt->Vertex2f = NAME(Vertex2f); -vfmt->Vertex2fv = NAME(Vertex2fv); -vfmt->Vertex3f = NAME(Vertex3f); -vfmt->Vertex3fv = NAME(Vertex3fv); -vfmt->Vertex4f = NAME(Vertex4f); -vfmt->Vertex4fv = NAME(Vertex4fv); - -vfmt->VertexAttrib1fES = NAME_ES(VertexAttrib1fARB); -vfmt->VertexAttrib1fvES = NAME_ES(VertexAttrib1fvARB); -vfmt->VertexAttrib2fES = NAME_ES(VertexAttrib2fARB); -vfmt->VertexAttrib2fvES = NAME_ES(VertexAttrib2fvARB); -vfmt->VertexAttrib3fES = NAME_ES(VertexAttrib3fARB); -vfmt->VertexAttrib3fvES = NAME_ES(VertexAttrib3fvARB); -vfmt->VertexAttrib4fES = NAME_ES(VertexAttrib4fARB); -vfmt->VertexAttrib4fvES = NAME_ES(VertexAttrib4fvARB); - -vfmt->VertexAttrib1fARB = NAME(VertexAttrib1fARB); -vfmt->VertexAttrib1fvARB = NAME(VertexAttrib1fvARB); -vfmt->VertexAttrib2fARB = NAME(VertexAttrib2fARB); -vfmt->VertexAttrib2fvARB = NAME(VertexAttrib2fvARB); -vfmt->VertexAttrib3fARB = NAME(VertexAttrib3fARB); -vfmt->VertexAttrib3fvARB = NAME(VertexAttrib3fvARB); -vfmt->VertexAttrib4fARB = NAME(VertexAttrib4fARB); -vfmt->VertexAttrib4fvARB = NAME(VertexAttrib4fvARB); - -/* half float */ -vfmt->Vertex2hNV = NAME(Vertex2hNV); -vfmt->Vertex2hvNV = NAME(Vertex2hvNV); -vfmt->Vertex3hNV = NAME(Vertex3hNV); -vfmt->Vertex3hvNV = NAME(Vertex3hvNV); -vfmt->Vertex4hNV = NAME(Vertex4hNV); -vfmt->Vertex4hvNV = NAME(Vertex4hvNV); -vfmt->Normal3hNV = NAME(Normal3hNV); -vfmt->Normal3hvNV = NAME(Normal3hvNV); -vfmt->Color3hNV = NAME(Color3hNV); -vfmt->Color3hvNV = NAME(Color3hvNV); -vfmt->Color4hNV = NAME(Color4hNV); -vfmt->Color4hvNV = NAME(Color4hvNV); -vfmt->TexCoord1hNV = NAME(TexCoord1hNV); -vfmt->TexCoord1hvNV = NAME(TexCoord1hvNV); -vfmt->TexCoord2hNV = NAME(TexCoord2hNV); -vfmt->TexCoord2hvNV = NAME(TexCoord2hvNV); -vfmt->TexCoord3hNV = NAME(TexCoord3hNV); -vfmt->TexCoord3hvNV = NAME(TexCoord3hvNV); -vfmt->TexCoord4hNV = NAME(TexCoord4hNV); -vfmt->TexCoord4hvNV = NAME(TexCoord4hvNV); -vfmt->MultiTexCoord1hNV = NAME(MultiTexCoord1hNV); -vfmt->MultiTexCoord1hvNV = NAME(MultiTexCoord1hvNV); -vfmt->MultiTexCoord2hNV = NAME(MultiTexCoord2hNV); -vfmt->MultiTexCoord2hvNV = NAME(MultiTexCoord2hvNV); -vfmt->MultiTexCoord3hNV = NAME(MultiTexCoord3hNV); -vfmt->MultiTexCoord3hvNV = NAME(MultiTexCoord3hvNV); -vfmt->MultiTexCoord4hNV = NAME(MultiTexCoord4hNV); -vfmt->MultiTexCoord4hvNV = NAME(MultiTexCoord4hvNV); -vfmt->VertexAttrib1hNV = NAME(VertexAttrib1hNV); -vfmt->VertexAttrib2hNV = NAME(VertexAttrib2hNV); -vfmt->VertexAttrib3hNV = NAME(VertexAttrib3hNV); -vfmt->VertexAttrib4hNV = NAME(VertexAttrib4hNV); -vfmt->VertexAttrib1hvNV = NAME(VertexAttrib1hvNV); -vfmt->VertexAttrib2hvNV = NAME(VertexAttrib2hvNV); -vfmt->VertexAttrib3hvNV = NAME(VertexAttrib3hvNV); -vfmt->VertexAttrib4hvNV = NAME(VertexAttrib4hvNV); -vfmt->VertexAttribs1hvNV = NAME(VertexAttribs1hvNV); -vfmt->VertexAttribs2hvNV = NAME(VertexAttribs2hvNV); -vfmt->VertexAttribs3hvNV = NAME(VertexAttribs3hvNV); -vfmt->VertexAttribs4hvNV = NAME(VertexAttribs4hvNV); -vfmt->FogCoordhNV = NAME(FogCoordhNV); -vfmt->FogCoordhvNV = NAME(FogCoordhvNV); -vfmt->SecondaryColor3hNV = NAME(SecondaryColor3hNV); -vfmt->SecondaryColor3hvNV = NAME(SecondaryColor3hvNV); - -/* Note that VertexAttrib4fNV is used from dlist.c and api_arrayelt.c so - * they can have a single entrypoint for updating any of the legacy - * attribs. - */ -vfmt->VertexAttrib1fNV = NAME(VertexAttrib1fNV); -vfmt->VertexAttrib1fvNV = NAME(VertexAttrib1fvNV); -vfmt->VertexAttrib2fNV = NAME(VertexAttrib2fNV); -vfmt->VertexAttrib2fvNV = NAME(VertexAttrib2fvNV); -vfmt->VertexAttrib3fNV = NAME(VertexAttrib3fNV); -vfmt->VertexAttrib3fvNV = NAME(VertexAttrib3fvNV); -vfmt->VertexAttrib4fNV = NAME(VertexAttrib4fNV); -vfmt->VertexAttrib4fvNV = NAME(VertexAttrib4fvNV); - -/* integer-valued */ -vfmt->VertexAttribI1iEXT = NAME(VertexAttribI1iEXT); -vfmt->VertexAttribI2iEXT = NAME(VertexAttribI2iEXT); -vfmt->VertexAttribI3iEXT = NAME(VertexAttribI3iEXT); -vfmt->VertexAttribI4iEXT = NAME(VertexAttribI4iEXT); -vfmt->VertexAttribI2ivEXT = NAME(VertexAttribI2ivEXT); -vfmt->VertexAttribI3ivEXT = NAME(VertexAttribI3ivEXT); -vfmt->VertexAttribI4ivEXT = NAME(VertexAttribI4ivEXT); - -/* unsigned integer-valued */ -vfmt->VertexAttribI1uiEXT = NAME(VertexAttribI1uiEXT); -vfmt->VertexAttribI2uiEXT = NAME(VertexAttribI2uiEXT); -vfmt->VertexAttribI3uiEXT = NAME(VertexAttribI3uiEXT); -vfmt->VertexAttribI4uiEXT = NAME(VertexAttribI4uiEXT); -vfmt->VertexAttribI2uivEXT = NAME(VertexAttribI2uivEXT); -vfmt->VertexAttribI3uivEXT = NAME(VertexAttribI3uivEXT); -vfmt->VertexAttribI4uivEXT = NAME(VertexAttribI4uivEXT); - -vfmt->Materialfv = NAME(Materialfv); - -vfmt->EdgeFlag = NAME(EdgeFlag); -vfmt->Indexf = NAME(Indexf); -vfmt->Indexfv = NAME(Indexfv); - -/* ARB_vertex_type_2_10_10_10_rev */ -vfmt->VertexP2ui = NAME(VertexP2ui); -vfmt->VertexP2uiv = NAME(VertexP2uiv); -vfmt->VertexP3ui = NAME(VertexP3ui); -vfmt->VertexP3uiv = NAME(VertexP3uiv); -vfmt->VertexP4ui = NAME(VertexP4ui); -vfmt->VertexP4uiv = NAME(VertexP4uiv); - -vfmt->TexCoordP1ui = NAME(TexCoordP1ui); -vfmt->TexCoordP1uiv = NAME(TexCoordP1uiv); -vfmt->TexCoordP2ui = NAME(TexCoordP2ui); -vfmt->TexCoordP2uiv = NAME(TexCoordP2uiv); -vfmt->TexCoordP3ui = NAME(TexCoordP3ui); -vfmt->TexCoordP3uiv = NAME(TexCoordP3uiv); -vfmt->TexCoordP4ui = NAME(TexCoordP4ui); -vfmt->TexCoordP4uiv = NAME(TexCoordP4uiv); - -vfmt->MultiTexCoordP1ui = NAME(MultiTexCoordP1ui); -vfmt->MultiTexCoordP1uiv = NAME(MultiTexCoordP1uiv); -vfmt->MultiTexCoordP2ui = NAME(MultiTexCoordP2ui); -vfmt->MultiTexCoordP2uiv = NAME(MultiTexCoordP2uiv); -vfmt->MultiTexCoordP3ui = NAME(MultiTexCoordP3ui); -vfmt->MultiTexCoordP3uiv = NAME(MultiTexCoordP3uiv); -vfmt->MultiTexCoordP4ui = NAME(MultiTexCoordP4ui); -vfmt->MultiTexCoordP4uiv = NAME(MultiTexCoordP4uiv); - -vfmt->NormalP3ui = NAME(NormalP3ui); -vfmt->NormalP3uiv = NAME(NormalP3uiv); - -vfmt->ColorP3ui = NAME(ColorP3ui); -vfmt->ColorP3uiv = NAME(ColorP3uiv); -vfmt->ColorP4ui = NAME(ColorP4ui); -vfmt->ColorP4uiv = NAME(ColorP4uiv); - -vfmt->SecondaryColorP3ui = NAME(SecondaryColorP3ui); -vfmt->SecondaryColorP3uiv = NAME(SecondaryColorP3uiv); - -vfmt->VertexAttribP1ui = NAME(VertexAttribP1ui); -vfmt->VertexAttribP1uiv = NAME(VertexAttribP1uiv); -vfmt->VertexAttribP2ui = NAME(VertexAttribP2ui); -vfmt->VertexAttribP2uiv = NAME(VertexAttribP2uiv); -vfmt->VertexAttribP3ui = NAME(VertexAttribP3ui); -vfmt->VertexAttribP3uiv = NAME(VertexAttribP3uiv); -vfmt->VertexAttribP4ui = NAME(VertexAttribP4ui); -vfmt->VertexAttribP4uiv = NAME(VertexAttribP4uiv); - -vfmt->VertexAttribL1d = NAME(VertexAttribL1d); -vfmt->VertexAttribL2d = NAME(VertexAttribL2d); -vfmt->VertexAttribL3d = NAME(VertexAttribL3d); -vfmt->VertexAttribL4d = NAME(VertexAttribL4d); - -vfmt->VertexAttribL1dv = NAME(VertexAttribL1dv); -vfmt->VertexAttribL2dv = NAME(VertexAttribL2dv); -vfmt->VertexAttribL3dv = NAME(VertexAttribL3dv); -vfmt->VertexAttribL4dv = NAME(VertexAttribL4dv); - -vfmt->VertexAttribL1ui64ARB = NAME(VertexAttribL1ui64ARB); -vfmt->VertexAttribL1ui64vARB = NAME(VertexAttribL1ui64vARB); - -vfmt->Color4ub = NAME(Color4ub); -vfmt->Materialf = NAME(Materialf); - -vfmt->Color3b = NAME(Color3b); -vfmt->Color3d = NAME(Color3d); -vfmt->Color3i = NAME(Color3i); -vfmt->Color3s = NAME(Color3s); -vfmt->Color3ui = NAME(Color3ui); -vfmt->Color3us = NAME(Color3us); -vfmt->Color3ub = NAME(Color3ub); -vfmt->Color4b = NAME(Color4b); -vfmt->Color4d = NAME(Color4d); -vfmt->Color4i = NAME(Color4i); -vfmt->Color4s = NAME(Color4s); -vfmt->Color4ui = NAME(Color4ui); -vfmt->Color4us = NAME(Color4us); -vfmt->Color3bv = NAME(Color3bv); -vfmt->Color3dv = NAME(Color3dv); -vfmt->Color3iv = NAME(Color3iv); -vfmt->Color3sv = NAME(Color3sv); -vfmt->Color3uiv = NAME(Color3uiv); -vfmt->Color3usv = NAME(Color3usv); -vfmt->Color3ubv = NAME(Color3ubv); -vfmt->Color4bv = NAME(Color4bv); -vfmt->Color4dv = NAME(Color4dv); -vfmt->Color4iv = NAME(Color4iv); -vfmt->Color4sv = NAME(Color4sv); -vfmt->Color4uiv = NAME(Color4uiv); -vfmt->Color4usv = NAME(Color4usv); -vfmt->Color4ubv = NAME(Color4ubv); - -vfmt->SecondaryColor3b = NAME(SecondaryColor3b); -vfmt->SecondaryColor3d = NAME(SecondaryColor3d); -vfmt->SecondaryColor3i = NAME(SecondaryColor3i); -vfmt->SecondaryColor3s = NAME(SecondaryColor3s); -vfmt->SecondaryColor3ui = NAME(SecondaryColor3ui); -vfmt->SecondaryColor3us = NAME(SecondaryColor3us); -vfmt->SecondaryColor3ub = NAME(SecondaryColor3ub); -vfmt->SecondaryColor3bv = NAME(SecondaryColor3bv); -vfmt->SecondaryColor3dv = NAME(SecondaryColor3dv); -vfmt->SecondaryColor3iv = NAME(SecondaryColor3iv); -vfmt->SecondaryColor3sv = NAME(SecondaryColor3sv); -vfmt->SecondaryColor3uiv = NAME(SecondaryColor3uiv); -vfmt->SecondaryColor3usv = NAME(SecondaryColor3usv); -vfmt->SecondaryColor3ubv = NAME(SecondaryColor3ubv); - -vfmt->EdgeFlagv = NAME(EdgeFlagv); - -vfmt->Indexd = NAME(Indexd); -vfmt->Indexi = NAME(Indexi); -vfmt->Indexs = NAME(Indexs); -vfmt->Indexub = NAME(Indexub); -vfmt->Indexdv = NAME(Indexdv); -vfmt->Indexiv = NAME(Indexiv); -vfmt->Indexsv = NAME(Indexsv); -vfmt->Indexubv = NAME(Indexubv); -vfmt->Normal3b = NAME(Normal3b); -vfmt->Normal3d = NAME(Normal3d); -vfmt->Normal3i = NAME(Normal3i); -vfmt->Normal3s = NAME(Normal3s); -vfmt->Normal3bv = NAME(Normal3bv); -vfmt->Normal3dv = NAME(Normal3dv); -vfmt->Normal3iv = NAME(Normal3iv); -vfmt->Normal3sv = NAME(Normal3sv); -vfmt->TexCoord1d = NAME(TexCoord1d); -vfmt->TexCoord1i = NAME(TexCoord1i); -vfmt->TexCoord1s = NAME(TexCoord1s); -vfmt->TexCoord2d = NAME(TexCoord2d); -vfmt->TexCoord2s = NAME(TexCoord2s); -vfmt->TexCoord2i = NAME(TexCoord2i); -vfmt->TexCoord3d = NAME(TexCoord3d); -vfmt->TexCoord3i = NAME(TexCoord3i); -vfmt->TexCoord3s = NAME(TexCoord3s); -vfmt->TexCoord4d = NAME(TexCoord4d); -vfmt->TexCoord4i = NAME(TexCoord4i); -vfmt->TexCoord4s = NAME(TexCoord4s); -vfmt->TexCoord1dv = NAME(TexCoord1dv); -vfmt->TexCoord1iv = NAME(TexCoord1iv); -vfmt->TexCoord1sv = NAME(TexCoord1sv); -vfmt->TexCoord2dv = NAME(TexCoord2dv); -vfmt->TexCoord2iv = NAME(TexCoord2iv); -vfmt->TexCoord2sv = NAME(TexCoord2sv); -vfmt->TexCoord3dv = NAME(TexCoord3dv); -vfmt->TexCoord3iv = NAME(TexCoord3iv); -vfmt->TexCoord3sv = NAME(TexCoord3sv); -vfmt->TexCoord4dv = NAME(TexCoord4dv); -vfmt->TexCoord4iv = NAME(TexCoord4iv); -vfmt->TexCoord4sv = NAME(TexCoord4sv); -vfmt->Vertex2d = NAME(Vertex2d); -vfmt->Vertex2i = NAME(Vertex2i); -vfmt->Vertex2s = NAME(Vertex2s); -vfmt->Vertex3d = NAME(Vertex3d); -vfmt->Vertex3i = NAME(Vertex3i); -vfmt->Vertex3s = NAME(Vertex3s); -vfmt->Vertex4d = NAME(Vertex4d); -vfmt->Vertex4i = NAME(Vertex4i); -vfmt->Vertex4s = NAME(Vertex4s); -vfmt->Vertex2dv = NAME(Vertex2dv); -vfmt->Vertex2iv = NAME(Vertex2iv); -vfmt->Vertex2sv = NAME(Vertex2sv); -vfmt->Vertex3dv = NAME(Vertex3dv); -vfmt->Vertex3iv = NAME(Vertex3iv); -vfmt->Vertex3sv = NAME(Vertex3sv); -vfmt->Vertex4dv = NAME(Vertex4dv); -vfmt->Vertex4iv = NAME(Vertex4iv); -vfmt->Vertex4sv = NAME(Vertex4sv); -vfmt->MultiTexCoord1d = NAME(MultiTexCoord1d); -vfmt->MultiTexCoord1dv = NAME(MultiTexCoord1dv); -vfmt->MultiTexCoord1i = NAME(MultiTexCoord1i); -vfmt->MultiTexCoord1iv = NAME(MultiTexCoord1iv); -vfmt->MultiTexCoord1s = NAME(MultiTexCoord1s); -vfmt->MultiTexCoord1sv = NAME(MultiTexCoord1sv); -vfmt->MultiTexCoord2d = NAME(MultiTexCoord2d); -vfmt->MultiTexCoord2dv = NAME(MultiTexCoord2dv); -vfmt->MultiTexCoord2i = NAME(MultiTexCoord2i); -vfmt->MultiTexCoord2iv = NAME(MultiTexCoord2iv); -vfmt->MultiTexCoord2s = NAME(MultiTexCoord2s); -vfmt->MultiTexCoord2sv = NAME(MultiTexCoord2sv); -vfmt->MultiTexCoord3d = NAME(MultiTexCoord3d); -vfmt->MultiTexCoord3dv = NAME(MultiTexCoord3dv); -vfmt->MultiTexCoord3i = NAME(MultiTexCoord3i); -vfmt->MultiTexCoord3iv = NAME(MultiTexCoord3iv); -vfmt->MultiTexCoord3s = NAME(MultiTexCoord3s); -vfmt->MultiTexCoord3sv = NAME(MultiTexCoord3sv); -vfmt->MultiTexCoord4d = NAME(MultiTexCoord4d); -vfmt->MultiTexCoord4dv = NAME(MultiTexCoord4dv); -vfmt->MultiTexCoord4i = NAME(MultiTexCoord4i); -vfmt->MultiTexCoord4iv = NAME(MultiTexCoord4iv); -vfmt->MultiTexCoord4s = NAME(MultiTexCoord4s); -vfmt->MultiTexCoord4sv = NAME(MultiTexCoord4sv); -vfmt->EvalCoord2dv = NAME(EvalCoord2dv); -vfmt->EvalCoord2d = NAME(EvalCoord2d); -vfmt->EvalCoord1dv = NAME(EvalCoord1dv); -vfmt->EvalCoord1d = NAME(EvalCoord1d); -vfmt->Materiali = NAME(Materiali); -vfmt->Materialiv = NAME(Materialiv); -vfmt->FogCoordd = NAME(FogCoordd); -vfmt->FogCoorddv = NAME(FogCoorddv); - -vfmt->VertexAttrib1sNV = NAME(VertexAttrib1sNV); -vfmt->VertexAttrib1dNV = NAME(VertexAttrib1dNV); -vfmt->VertexAttrib2sNV = NAME(VertexAttrib2sNV); -vfmt->VertexAttrib2dNV = NAME(VertexAttrib2dNV); -vfmt->VertexAttrib3sNV = NAME(VertexAttrib3sNV); -vfmt->VertexAttrib3dNV = NAME(VertexAttrib3dNV); -vfmt->VertexAttrib4sNV = NAME(VertexAttrib4sNV); -vfmt->VertexAttrib4dNV = NAME(VertexAttrib4dNV); -vfmt->VertexAttrib4ubNV = NAME(VertexAttrib4ubNV); -vfmt->VertexAttrib1svNV = NAME(VertexAttrib1svNV); -vfmt->VertexAttrib1dvNV = NAME(VertexAttrib1dvNV); -vfmt->VertexAttrib2svNV = NAME(VertexAttrib2svNV); -vfmt->VertexAttrib2dvNV = NAME(VertexAttrib2dvNV); -vfmt->VertexAttrib3svNV = NAME(VertexAttrib3svNV); -vfmt->VertexAttrib3dvNV = NAME(VertexAttrib3dvNV); -vfmt->VertexAttrib4svNV = NAME(VertexAttrib4svNV); -vfmt->VertexAttrib4dvNV = NAME(VertexAttrib4dvNV); -vfmt->VertexAttrib4ubvNV = NAME(VertexAttrib4ubvNV); -vfmt->VertexAttribs1svNV = NAME(VertexAttribs1svNV); -vfmt->VertexAttribs1fvNV = NAME(VertexAttribs1fvNV); -vfmt->VertexAttribs1dvNV = NAME(VertexAttribs1dvNV); -vfmt->VertexAttribs2svNV = NAME(VertexAttribs2svNV); -vfmt->VertexAttribs2fvNV = NAME(VertexAttribs2fvNV); -vfmt->VertexAttribs2dvNV = NAME(VertexAttribs2dvNV); -vfmt->VertexAttribs3svNV = NAME(VertexAttribs3svNV); -vfmt->VertexAttribs3fvNV = NAME(VertexAttribs3fvNV); -vfmt->VertexAttribs3dvNV = NAME(VertexAttribs3dvNV); -vfmt->VertexAttribs4svNV = NAME(VertexAttribs4svNV); -vfmt->VertexAttribs4fvNV = NAME(VertexAttribs4fvNV); -vfmt->VertexAttribs4dvNV = NAME(VertexAttribs4dvNV); -vfmt->VertexAttribs4ubvNV = NAME(VertexAttribs4ubvNV); - -vfmt->VertexAttrib1s = NAME(VertexAttrib1s); -vfmt->VertexAttrib1d = NAME(VertexAttrib1d); -vfmt->VertexAttrib2s = NAME(VertexAttrib2s); -vfmt->VertexAttrib2d = NAME(VertexAttrib2d); -vfmt->VertexAttrib3s = NAME(VertexAttrib3s); -vfmt->VertexAttrib3d = NAME(VertexAttrib3d); -vfmt->VertexAttrib4s = NAME(VertexAttrib4s); -vfmt->VertexAttrib4d = NAME(VertexAttrib4d); -vfmt->VertexAttrib1sv = NAME(VertexAttrib1sv); -vfmt->VertexAttrib1dv = NAME(VertexAttrib1dv); -vfmt->VertexAttrib2sv = NAME(VertexAttrib2sv); -vfmt->VertexAttrib2dv = NAME(VertexAttrib2dv); -vfmt->VertexAttrib3sv = NAME(VertexAttrib3sv); -vfmt->VertexAttrib3dv = NAME(VertexAttrib3dv); -vfmt->VertexAttrib4sv = NAME(VertexAttrib4sv); -vfmt->VertexAttrib4dv = NAME(VertexAttrib4dv); -vfmt->VertexAttrib4Nub = NAME(VertexAttrib4Nub); -vfmt->VertexAttrib4Nubv = NAME(VertexAttrib4Nubv); -vfmt->VertexAttrib4bv = NAME(VertexAttrib4bv); -vfmt->VertexAttrib4iv = NAME(VertexAttrib4iv); -vfmt->VertexAttrib4ubv = NAME(VertexAttrib4ubv); -vfmt->VertexAttrib4usv = NAME(VertexAttrib4usv); -vfmt->VertexAttrib4uiv = NAME(VertexAttrib4uiv); -vfmt->VertexAttrib4Nbv = NAME(VertexAttrib4Nbv); -vfmt->VertexAttrib4Nsv = NAME(VertexAttrib4Nsv); -vfmt->VertexAttrib4Nusv = NAME(VertexAttrib4Nusv); -vfmt->VertexAttrib4Niv = NAME(VertexAttrib4Niv); -vfmt->VertexAttrib4Nuiv = NAME(VertexAttrib4Nuiv); - -vfmt->VertexAttribI1iv = NAME(VertexAttribI1iv); -vfmt->VertexAttribI1uiv = NAME(VertexAttribI1uiv); -vfmt->VertexAttribI4bv = NAME(VertexAttribI4bv); -vfmt->VertexAttribI4sv = NAME(VertexAttribI4sv); -vfmt->VertexAttribI4ubv = NAME(VertexAttribI4ubv); -vfmt->VertexAttribI4usv = NAME(VertexAttribI4usv); diff --git a/src/mesa/vbo/vbo_noop.c b/src/mesa/vbo/vbo_noop.c index 2cf1352492e..90f2d97e9f6 100644 --- a/src/mesa/vbo/vbo_noop.c +++ b/src/mesa/vbo/vbo_noop.c @@ -37,7 +37,6 @@ #include "main/dispatch.h" #include "main/dlist.h" #include "main/eval.h" -#include "vbo/vbo_noop.h" #include "vbo_attrib.h" static void GLAPIENTRY @@ -120,17 +119,30 @@ is_vertex_position(const struct gl_context *ctx, GLuint index) * to put the vertex data into. */ void -_mesa_noop_vtxfmt_init(struct gl_context *ctx, GLvertexformat * vfmt) +vbo_install_exec_vtxfmt_noop(struct gl_context *ctx) { #define NAME_AE(x) _mesa_noop_##x #define NAME_CALLLIST(x) _mesa_##x #define NAME(x) _mesa_noop_##x #define NAME_ES(x) _mesa_noop_##x -#include "vbo_init_tmp.h" + struct _glapi_table *tab = ctx->Exec; + #include "api_vtxfmt_init.h" + + if (ctx->BeginEnd) { + tab = ctx->BeginEnd; + #include "api_vtxfmt_init.h" + } } +void +vbo_install_save_vtxfmt_noop(struct gl_context *ctx) +{ + struct _glapi_table *tab = ctx->Save; + #include "api_vtxfmt_init.h" +} + /** * Is the given dispatch table using the no-op functions? */ diff --git a/src/mesa/vbo/vbo_noop.h b/src/mesa/vbo/vbo_noop.h deleted file mode 100644 index 1f3caade8bd..00000000000 --- a/src/mesa/vbo/vbo_noop.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Mesa 3-D graphics library - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * Copyright (C) 2011 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef VBO_NOOP_H -#define VBO_NOOP_H - -#include "main/dd.h" - -struct _glapi_table; - -extern void -_mesa_noop_vtxfmt_init(struct gl_context *ctx, GLvertexformat *vfmt); - -extern GLboolean -_mesa_using_noop_vtxfmt(const struct _glapi_table *dispatch); - - -#endif /* VBO_NOOP_H */ diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index 48b8319a9fc..ab3f8a66478 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -110,7 +110,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/macros.h" #include "main/draw_validate.h" #include "main/api_arrayelt.h" -#include "main/vtxfmt.h" #include "main/dispatch.h" #include "main/state.h" #include "main/varray.h" @@ -121,7 +120,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "gallium/include/pipe/p_state.h" -#include "vbo_noop.h" #include "vbo_private.h" #include "state_tracker/st_cb_bufferobjects.h" @@ -142,14 +140,6 @@ _save_EvalCoord1f(GLfloat u); static void GLAPIENTRY _save_EvalCoord2f(GLfloat u, GLfloat v); -static void -handle_out_of_memory(struct gl_context *ctx) -{ - struct vbo_save_context *save = &vbo_context(ctx)->save; - _mesa_noop_vtxfmt_init(ctx, &save->vtxfmt); - save->out_of_memory = true; -} - /* * NOTE: Old 'parity' issue is gone, but copying can still be * wrong-footed on replay. @@ -426,9 +416,8 @@ grow_vertex_storage(struct gl_context *ctx, int vertex_count) save->vertex_store->buffer_in_ram = realloc(save->vertex_store->buffer_in_ram, save->vertex_store->buffer_in_ram_size); if (save->vertex_store->buffer_in_ram == NULL) - handle_out_of_memory(ctx); + save->out_of_memory = true; } - } struct vertex_key { @@ -568,7 +557,7 @@ compile_vertex_list(struct gl_context *ctx) current_size * sizeof(GLfloat)); } else { _mesa_error(ctx, GL_OUT_OF_MEMORY, "Current value allocation"); - handle_out_of_memory(ctx); + save->out_of_memory = true; } } } @@ -788,7 +777,7 @@ compile_vertex_list(struct gl_context *ctx) if (!success) { _mesa_reference_buffer_object(ctx, &save->current_bo, NULL); _mesa_error(ctx, GL_OUT_OF_MEMORY, "IB allocation"); - handle_out_of_memory(ctx); + save->out_of_memory = true; } else { save->current_bo_bytes_used = 0; available_bytes = save->current_bo->Size; @@ -919,7 +908,7 @@ end: MESA_GALLIUM_VERTEX_STATE_STORAGE, save->current_bo); if (!success) - handle_out_of_memory(ctx); + save->out_of_memory = true; } GLuint offsets[VBO_ATTRIB_MAX]; @@ -1407,6 +1396,10 @@ _save_Materialfv(GLenum face, GLenum pname, const GLfloat *params) } +static void +vbo_install_save_vtxfmt(struct gl_context *ctx); + + /* Cope with EvalCoord/CallList called within a begin/end object: * -- Flush current buffer * -- Fallback to opcodes for the rest of the begin/end object. @@ -1438,10 +1431,10 @@ dlist_fallback(struct gl_context *ctx) copy_to_current(ctx); reset_vertex(ctx); if (save->out_of_memory) { - _mesa_install_save_vtxfmt(ctx, &save->vtxfmt); + vbo_install_save_vtxfmt_noop(ctx); } else { - _mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt); + _mesa_install_save_vtxfmt(ctx); } ctx->Driver.SaveNeedFlush = GL_FALSE; } @@ -1537,7 +1530,7 @@ vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode, save->no_current_update = no_current_update; - _mesa_install_save_vtxfmt(ctx, &save->vtxfmt); + vbo_install_save_vtxfmt(ctx); /* We need to call vbo_save_SaveFlushVertices() if there's state change */ ctx->Driver.SaveNeedFlush = GL_TRUE; @@ -1560,10 +1553,10 @@ _save_End(void) * as opcodes. */ if (save->out_of_memory) { - _mesa_install_save_vtxfmt(ctx, &save->vtxfmt); + vbo_install_save_vtxfmt_noop(ctx); } else { - _mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt); + _mesa_install_save_vtxfmt(ctx); } } @@ -1922,17 +1915,15 @@ save_MultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, static void -vtxfmt_init(struct gl_context *ctx) +vbo_install_save_vtxfmt(struct gl_context *ctx) { - struct vbo_save_context *save = &vbo_context(ctx)->save; - GLvertexformat *vfmt = &save->vtxfmt; - #define NAME_AE(x) _ae_##x #define NAME_CALLLIST(x) _save_##x #define NAME(x) _save_##x #define NAME_ES(x) _save_##x -#include "vbo_init_tmp.h" + struct _glapi_table *tab = ctx->Save; + #include "api_vtxfmt_init.h" } @@ -2005,7 +1996,7 @@ vbo_save_EndList(struct gl_context *ctx) * etc. received between here and the next begin will be compiled * as opcodes. */ - _mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt); + _mesa_install_save_vtxfmt(ctx); } assert(save->vertex_size == 0); @@ -2044,6 +2035,5 @@ vbo_save_api_init(struct vbo_save_context *save) { struct gl_context *ctx = gl_context_from_vbo_save(save); - vtxfmt_init(ctx); current_init(ctx); }