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