mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
mesa: refactor _mesa_valid_prim_mode()
...in terms of new _mesa_is_valid_prim_mode(). We need a mode validater function that doesn't depend on current state for the display list code. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
8be093e2f6
commit
bb459f6295
2 changed files with 24 additions and 14 deletions
|
|
@ -201,12 +201,11 @@ check_index_bounds(struct gl_context *ctx, GLsizei count, GLenum type,
|
|||
* Is 'mode' a valid value for glBegin(), glDrawArrays(), glDrawElements(),
|
||||
* etc? The set of legal values depends on whether geometry shaders/programs
|
||||
* are supported.
|
||||
* Note: This may be called during display list compilation.
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
|
||||
bool
|
||||
_mesa_is_valid_prim_mode(struct gl_context *ctx, GLenum mode)
|
||||
{
|
||||
bool valid_enum;
|
||||
|
||||
switch (mode) {
|
||||
case GL_POINTS:
|
||||
case GL_LINES:
|
||||
|
|
@ -215,24 +214,32 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
|
|||
case GL_TRIANGLES:
|
||||
case GL_TRIANGLE_STRIP:
|
||||
case GL_TRIANGLE_FAN:
|
||||
valid_enum = true;
|
||||
break;
|
||||
return true;
|
||||
case GL_QUADS:
|
||||
case GL_QUAD_STRIP:
|
||||
case GL_POLYGON:
|
||||
valid_enum = (ctx->API == API_OPENGL_COMPAT);
|
||||
break;
|
||||
return (ctx->API == API_OPENGL_COMPAT);
|
||||
case GL_LINES_ADJACENCY:
|
||||
case GL_LINE_STRIP_ADJACENCY:
|
||||
case GL_TRIANGLES_ADJACENCY:
|
||||
case GL_TRIANGLE_STRIP_ADJACENCY:
|
||||
valid_enum = _mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.ARB_geometry_shader4;
|
||||
break;
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_geometry_shader4;
|
||||
default:
|
||||
valid_enum = false;
|
||||
break;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Is 'mode' a valid value for glBegin(), glDrawArrays(), glDrawElements(),
|
||||
* etc? Also, do additional checking related to transformation feedback.
|
||||
* Note: this function cannot be called during glNewList(GL_COMPILE) because
|
||||
* this code depends on current transform feedback state.
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
|
||||
{
|
||||
bool valid_enum = _mesa_is_valid_prim_mode(ctx, mode);
|
||||
|
||||
if (!valid_enum) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "%s(mode=%x)", name, mode);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#ifndef API_VALIDATE_H
|
||||
#define API_VALIDATE_H
|
||||
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "glheader.h"
|
||||
|
||||
struct gl_buffer_object;
|
||||
|
|
@ -42,6 +42,9 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type,
|
|||
struct gl_buffer_object *elementBuf);
|
||||
|
||||
|
||||
extern bool
|
||||
_mesa_is_valid_prim_mode(struct gl_context *ctx, GLenum mode);
|
||||
|
||||
extern GLboolean
|
||||
_mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue