mesa: remove GLvertexformat

Function pointers were first set in GLvertexformat, and then
GLvertexformat was copied to the dispatch.

This just sets the function pointers in the dispatch directly,
skipping the intermediate GLvertexformat structure.

The code with SET_* calls is autogenerated by api_vtxfmt_init_h.py.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14000>
This commit is contained in:
Marek Olšák 2021-11-29 09:02:07 -05:00
parent a87e5d437e
commit bade2407fa
19 changed files with 78 additions and 1122 deletions

View File

@ -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.

View File

@ -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);
}
/**

View File

@ -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 */

View File

@ -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"
}

View File

@ -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,

View File

@ -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;
/**

View File

@ -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 <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);
}

View File

@ -1,51 +0,0 @@
/**
* \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_ */

View File

@ -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',

View File

@ -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"

View File

@ -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);

View File

@ -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"

View File

@ -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

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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?
*/

View File

@ -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 */

View File

@ -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);
}