mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
mesa: remove GLvertexformat::EvalMesh1(), EvalMesh2()
See previous commit comments. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
0f365b2d77
commit
200e09e393
9 changed files with 110 additions and 176 deletions
|
|
@ -1019,22 +1019,6 @@ typedef struct {
|
|||
void (GLAPIENTRYP VertexAttribP4uiv)( GLuint index, GLenum type,
|
||||
GLboolean normalized,
|
||||
const GLuint *value);
|
||||
|
||||
/*@}*/
|
||||
|
||||
/**
|
||||
* \name Eval
|
||||
*
|
||||
* If you don't support eval, fallback to the default vertex format
|
||||
* on receiving an eval call and use the pipeline mechanism to
|
||||
* provide partial T&L acceleration.
|
||||
*
|
||||
* Mesa will provide a set of helper functions to do eval within
|
||||
* accelerated vertex formats, eventually...
|
||||
*/
|
||||
/*@{*/
|
||||
void (GLAPIENTRYP EvalMesh1)( GLenum mode, GLint i1, GLint i2 );
|
||||
void (GLAPIENTRYP EvalMesh2)( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
|
||||
/*@}*/
|
||||
|
||||
} GLvertexformat;
|
||||
|
|
|
|||
|
|
@ -9592,8 +9592,6 @@ save_vtxfmt_init(GLvertexformat * vfmt)
|
|||
vfmt->EvalCoord2fv = save_EvalCoord2fv;
|
||||
vfmt->EvalPoint1 = save_EvalPoint1;
|
||||
vfmt->EvalPoint2 = save_EvalPoint2;
|
||||
vfmt->EvalMesh1 = save_EvalMesh1;
|
||||
vfmt->EvalMesh2 = save_EvalMesh2;
|
||||
|
||||
vfmt->FogCoordfEXT = save_FogCoordfEXT;
|
||||
vfmt->FogCoordfvEXT = save_FogCoordfvEXT;
|
||||
|
|
|
|||
|
|
@ -824,8 +824,7 @@ _mesa_MapGrid2d( GLint un, GLdouble u1, GLdouble u2,
|
|||
|
||||
void
|
||||
_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
|
||||
const GLvertexformat *vfmt,
|
||||
bool beginend)
|
||||
const GLvertexformat *vfmt)
|
||||
{
|
||||
SET_EvalCoord1f(disp, vfmt->EvalCoord1f);
|
||||
SET_EvalCoord1fv(disp, vfmt->EvalCoord1fv);
|
||||
|
|
@ -833,13 +832,6 @@ _mesa_install_eval_vtxfmt(struct _glapi_table *disp,
|
|||
SET_EvalCoord2fv(disp, vfmt->EvalCoord2fv);
|
||||
SET_EvalPoint1(disp, vfmt->EvalPoint1);
|
||||
SET_EvalPoint2(disp, vfmt->EvalPoint2);
|
||||
|
||||
/* glEvalMesh1 and glEvalMesh2 are not allowed between glBegin and glEnd.
|
||||
*/
|
||||
if (!beginend) {
|
||||
SET_EvalMesh1(disp, vfmt->EvalMesh1);
|
||||
SET_EvalMesh2(disp, vfmt->EvalMesh2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@ extern GLfloat *_mesa_copy_map_points2d(GLenum target,
|
|||
|
||||
extern void
|
||||
_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
|
||||
const GLvertexformat *vfmt,
|
||||
bool beginend);
|
||||
const GLvertexformat *vfmt);
|
||||
|
||||
extern void _mesa_init_eval( struct gl_context *ctx );
|
||||
extern void _mesa_free_eval_data( struct gl_context *ctx );
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ install_vtxfmt(struct gl_context *ctx, struct _glapi_table *tab,
|
|||
}
|
||||
|
||||
if (ctx->API == API_OPENGL_COMPAT) {
|
||||
_mesa_install_eval_vtxfmt(tab, vfmt, beginend);
|
||||
_mesa_install_eval_vtxfmt(tab, vfmt);
|
||||
}
|
||||
|
||||
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
|
||||
|
|
|
|||
|
|
@ -654,111 +654,6 @@ static void GLAPIENTRY vbo_exec_EvalPoint2( GLint i, GLint j )
|
|||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
vbo_exec_EvalMesh1(GLenum mode, GLint i1, GLint i2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLint i;
|
||||
GLfloat u, du;
|
||||
GLenum prim;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
prim = GL_POINTS;
|
||||
break;
|
||||
case GL_LINE:
|
||||
prim = GL_LINE_STRIP;
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glEvalMesh1(mode)" );
|
||||
return;
|
||||
}
|
||||
|
||||
/* No effect if vertex maps disabled.
|
||||
*/
|
||||
if (!ctx->Eval.Map1Vertex4 &&
|
||||
!ctx->Eval.Map1Vertex3)
|
||||
return;
|
||||
|
||||
du = ctx->Eval.MapGrid1du;
|
||||
u = ctx->Eval.MapGrid1u1 + i1 * du;
|
||||
|
||||
CALL_Begin(GET_DISPATCH(), (prim));
|
||||
for (i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord1f(GET_DISPATCH(), (u));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
vbo_exec_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLfloat u, du, v, dv, v1, u1;
|
||||
GLint i, j;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
case GL_LINE:
|
||||
case GL_FILL:
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glEvalMesh2(mode)" );
|
||||
return;
|
||||
}
|
||||
|
||||
/* No effect if vertex maps disabled.
|
||||
*/
|
||||
if (!ctx->Eval.Map2Vertex4 &&
|
||||
!ctx->Eval.Map2Vertex3)
|
||||
return;
|
||||
|
||||
du = ctx->Eval.MapGrid2du;
|
||||
dv = ctx->Eval.MapGrid2dv;
|
||||
v1 = ctx->Eval.MapGrid2v1 + j1 * dv;
|
||||
u1 = ctx->Eval.MapGrid2u1 + i1 * du;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
CALL_Begin(GET_DISPATCH(), (GL_POINTS));
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
break;
|
||||
case GL_LINE:
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_LINE_STRIP));
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_LINE_STRIP));
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
break;
|
||||
case GL_FILL:
|
||||
for (v=v1,j=j1;j<j2;j++,v+=dv) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_TRIANGLE_STRIP));
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v+dv));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via glBegin.
|
||||
*/
|
||||
|
|
@ -904,8 +799,6 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec )
|
|||
vfmt->EvalCoord2fv = vbo_exec_EvalCoord2fv;
|
||||
vfmt->EvalPoint1 = vbo_exec_EvalPoint1;
|
||||
vfmt->EvalPoint2 = vbo_exec_EvalPoint2;
|
||||
vfmt->EvalMesh1 = vbo_exec_EvalMesh1;
|
||||
vfmt->EvalMesh2 = vbo_exec_EvalMesh2;
|
||||
|
||||
/* from attrib_tmp.h:
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -650,6 +650,111 @@ vbo_exec_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
|
|||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
vbo_exec_EvalMesh1(GLenum mode, GLint i1, GLint i2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLint i;
|
||||
GLfloat u, du;
|
||||
GLenum prim;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
prim = GL_POINTS;
|
||||
break;
|
||||
case GL_LINE:
|
||||
prim = GL_LINE_STRIP;
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glEvalMesh1(mode)" );
|
||||
return;
|
||||
}
|
||||
|
||||
/* No effect if vertex maps disabled.
|
||||
*/
|
||||
if (!ctx->Eval.Map1Vertex4 &&
|
||||
!ctx->Eval.Map1Vertex3)
|
||||
return;
|
||||
|
||||
du = ctx->Eval.MapGrid1du;
|
||||
u = ctx->Eval.MapGrid1u1 + i1 * du;
|
||||
|
||||
CALL_Begin(GET_DISPATCH(), (prim));
|
||||
for (i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord1f(GET_DISPATCH(), (u));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
vbo_exec_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLfloat u, du, v, dv, v1, u1;
|
||||
GLint i, j;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
case GL_LINE:
|
||||
case GL_FILL:
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glEvalMesh2(mode)" );
|
||||
return;
|
||||
}
|
||||
|
||||
/* No effect if vertex maps disabled.
|
||||
*/
|
||||
if (!ctx->Eval.Map2Vertex4 &&
|
||||
!ctx->Eval.Map2Vertex3)
|
||||
return;
|
||||
|
||||
du = ctx->Eval.MapGrid2du;
|
||||
dv = ctx->Eval.MapGrid2dv;
|
||||
v1 = ctx->Eval.MapGrid2v1 + j1 * dv;
|
||||
u1 = ctx->Eval.MapGrid2u1 + i1 * du;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINT:
|
||||
CALL_Begin(GET_DISPATCH(), (GL_POINTS));
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
break;
|
||||
case GL_LINE:
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_LINE_STRIP));
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_LINE_STRIP));
|
||||
for (v=v1,j=j1;j<=j2;j++,v+=dv) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
break;
|
||||
case GL_FILL:
|
||||
for (v=v1,j=j1;j<j2;j++,v+=dv) {
|
||||
CALL_Begin(GET_DISPATCH(), (GL_TRIANGLE_STRIP));
|
||||
for (u=u1,i=i1;i<=i2;i++,u+=du) {
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v));
|
||||
CALL_EvalCoord2f(GET_DISPATCH(), (u, v+dv));
|
||||
}
|
||||
CALL_End(GET_DISPATCH(), ());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called from glDrawArrays when in immediate mode (not display list mode).
|
||||
*/
|
||||
|
|
@ -1400,6 +1505,8 @@ vbo_initialize_exec_dispatch(const struct gl_context *ctx,
|
|||
|
||||
if (ctx->API == API_OPENGL_COMPAT) {
|
||||
SET_Rectf(exec, vbo_exec_Rectf);
|
||||
SET_EvalMesh1(exec, vbo_exec_EvalMesh1);
|
||||
SET_EvalMesh2(exec, vbo_exec_EvalMesh2);
|
||||
}
|
||||
|
||||
if (_mesa_is_desktop_gl(ctx)) {
|
||||
|
|
|
|||
|
|
@ -347,17 +347,6 @@ _mesa_noop_PrimitiveRestartNV(void)
|
|||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
_mesa_noop_EvalMesh1(GLenum mode, GLint i1, GLint i2)
|
||||
{
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
_mesa_noop_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build a vertexformat of functions that are no-ops.
|
||||
* These are used in out-of-memory situations when we have no VBO
|
||||
|
|
@ -388,8 +377,6 @@ _mesa_noop_vtxfmt_init(GLvertexformat * vfmt)
|
|||
vfmt->EvalCoord2fv = _mesa_noop_EvalCoord2fv;
|
||||
vfmt->EvalPoint1 = _mesa_noop_EvalPoint1;
|
||||
vfmt->EvalPoint2 = _mesa_noop_EvalPoint2;
|
||||
vfmt->EvalMesh1 = _mesa_noop_EvalMesh1;
|
||||
vfmt->EvalMesh2 = _mesa_noop_EvalMesh2;
|
||||
|
||||
vfmt->FogCoordfEXT = _mesa_noop_FogCoordfEXT;
|
||||
vfmt->FogCoordfvEXT = _mesa_noop_FogCoordfvEXT;
|
||||
|
|
|
|||
|
|
@ -993,30 +993,6 @@ _save_End(void)
|
|||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
_save_EvalMesh1(GLenum mode, GLint i1, GLint i2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
(void) mode;
|
||||
(void) i1;
|
||||
(void) i2;
|
||||
_mesa_compile_error(ctx, GL_INVALID_OPERATION, "glEvalMesh1");
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
_save_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
(void) mode;
|
||||
(void) i1;
|
||||
(void) i2;
|
||||
(void) j1;
|
||||
(void) j2;
|
||||
_mesa_compile_error(ctx, GL_INVALID_OPERATION, "glEvalMesh2");
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
_save_Begin(GLenum mode)
|
||||
{
|
||||
|
|
@ -1359,8 +1335,6 @@ _save_vtxfmt_init(struct gl_context *ctx)
|
|||
vfmt->EvalCoord2fv = _save_EvalCoord2fv;
|
||||
vfmt->EvalPoint1 = _save_EvalPoint1;
|
||||
vfmt->EvalPoint2 = _save_EvalPoint2;
|
||||
vfmt->EvalMesh1 = _save_EvalMesh1;
|
||||
vfmt->EvalMesh2 = _save_EvalMesh2;
|
||||
|
||||
/* These calls all generate GL_INVALID_OPERATION since this vtxfmt is
|
||||
* only used when we're inside a glBegin/End pair.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue