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.
#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
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);
}
/**
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 */
void
_mesa_init_display_list(struct gl_context *ctx)
{
- GLvertexformat *vfmt = &ctx->ListState.ListVtxfmt;
-
/* Display list */
ctx->ListState.CallDepth = 1;
ctx->ExecuteFlag = GL_TRUE;
/* 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"
}
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,
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];
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;
/**
+++ /dev/null
-/*
- * 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 <keithw@vmware.com> 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);
-}
+++ /dev/null
-/**
- * \file vtxfmt.h
- *
- * \author Keith Whitwell <keithw@vmware.com>
- * \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_ */
'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',
'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',
#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"
struct vbo_exec_context
{
- GLvertexformat vtxfmt;
- GLvertexformat vtxfmt_noop;
-
struct {
/* Multi draw where the mode can vary between draws. */
struct pipe_draw_info info;
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 */
};
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);
void
#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"
#include "main/glheader.h"
#include "main/arrayobj.h"
#include "main/api_arrayelt.h"
-#include "main/vtxfmt.h"
#include "vbo_private.h"
const GLubyte
#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"
#include "util/bitscan.h"
#include "util/u_memory.h"
-#include "vbo_noop.h"
#include "vbo_private.h"
#include "state_tracker/st_cb_bufferobjects.h"
}
-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"
+ }
}
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);
#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"
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);
}
}
+++ /dev/null
-/**************************************************************************
- *
- * 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);
#include "main/dispatch.h"
#include "main/dlist.h"
#include "main/eval.h"
-#include "vbo/vbo_noop.h"
#include "vbo_attrib.h"
static void GLAPIENTRY
* 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?
*/
+++ /dev/null
-/*
- * 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 */
#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"
#include "gallium/include/pipe/p_state.h"
-#include "vbo_noop.h"
#include "vbo_private.h"
#include "state_tracker/st_cb_bufferobjects.h"
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.
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 {
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;
}
}
}
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;
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];
}
+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.
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;
}
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;
* 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);
}
}
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"
}
* 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);
{
struct gl_context *ctx = gl_context_from_vbo_save(save);
- vtxfmt_init(ctx);
current_init(ctx);
}