mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
mesa: only check errors when the state change in glCullFace()
When this GL call is a no-op, it should be a little faster in the errors path only. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
c787477378
commit
c6ba702979
1 changed files with 10 additions and 9 deletions
|
|
@ -50,12 +50,18 @@
|
|||
* change, flushes the vertices and notifies the driver via
|
||||
* the dd_function_table::CullFace callback.
|
||||
*/
|
||||
static void
|
||||
cull_face(struct gl_context *ctx, GLenum mode)
|
||||
static ALWAYS_INLINE void
|
||||
cull_face(struct gl_context *ctx, GLenum mode, bool no_error)
|
||||
{
|
||||
if (ctx->Polygon.CullFaceMode == mode)
|
||||
return;
|
||||
|
||||
if (!no_error &&
|
||||
mode != GL_FRONT && mode != GL_BACK && mode != GL_FRONT_AND_BACK) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glCullFace");
|
||||
return;
|
||||
}
|
||||
|
||||
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
|
||||
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
|
||||
ctx->Polygon.CullFaceMode = mode;
|
||||
|
|
@ -69,7 +75,7 @@ void GLAPIENTRY
|
|||
_mesa_CullFace_no_error(GLenum mode)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
cull_face(ctx, mode);
|
||||
cull_face(ctx, mode, true);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -81,12 +87,7 @@ _mesa_CullFace(GLenum mode)
|
|||
if (MESA_VERBOSE & VERBOSE_API)
|
||||
_mesa_debug(ctx, "glCullFace %s\n", _mesa_enum_to_string(mode));
|
||||
|
||||
if (mode != GL_FRONT && mode != GL_BACK && mode != GL_FRONT_AND_BACK) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glCullFace");
|
||||
return;
|
||||
}
|
||||
|
||||
cull_face(ctx, mode);
|
||||
cull_face(ctx, mode, false);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue