mesa: generate GL_INVALID_OPERATION using draw indirect in dlist

The spec doesn't explicitly say to generate an error but since
DrawArraysInstanced* and DrawElementsInstanced* do, it makes
sense to do it for these functions also.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Timothy Arceri
2018-06-23 12:29:50 +10:00
parent 03f1a2e8df
commit 9b32c80357
+47
View File
@@ -1913,6 +1913,47 @@ save_DrawElementsInstancedBaseVertexBaseInstance(UNUSED GLenum mode,
"glDrawElementsInstancedBaseVertexBaseInstance() during display list compile");
}
static void APIENTRY
save_DrawArraysIndirect(UNUSED GLenum mode,
UNUSED const void *indirect)
{
GET_CURRENT_CONTEXT(ctx);
_mesa_error(ctx, GL_INVALID_OPERATION,
"glDrawArraysIndirect() during display list compile");
}
static void APIENTRY
save_DrawElementsIndirect(UNUSED GLenum mode,
UNUSED GLenum type,
UNUSED const void *indirect)
{
GET_CURRENT_CONTEXT(ctx);
_mesa_error(ctx, GL_INVALID_OPERATION,
"glDrawElementsIndirect() during display list compile");
}
static void APIENTRY
save_MultiDrawArraysIndirect(UNUSED GLenum mode,
UNUSED const void *indirect,
UNUSED GLsizei primcount,
UNUSED GLsizei stride)
{
GET_CURRENT_CONTEXT(ctx);
_mesa_error(ctx, GL_INVALID_OPERATION,
"glMultiDrawArraysIndirect() during display list compile");
}
static void APIENTRY
save_MultiDrawElementsIndirect(UNUSED GLenum mode,
UNUSED GLenum type,
UNUSED const void *indirect,
UNUSED GLsizei primcount,
UNUSED GLsizei stride)
{
GET_CURRENT_CONTEXT(ctx);
_mesa_error(ctx, GL_INVALID_OPERATION,
"glMultiDrawElementsIndirect() during display list compile");
}
/**
* While building a display list we cache some OpenGL state.
@@ -11410,6 +11451,12 @@ _mesa_initialize_save_table(const struct gl_context *ctx)
SET_DrawElementsInstancedBaseInstance(table, save_DrawElementsInstancedBaseInstance);
SET_DrawElementsInstancedBaseVertexBaseInstance(table, save_DrawElementsInstancedBaseVertexBaseInstance);
/* GL_ARB_draw_indirect / GL_ARB_multi_draw_indirect */
SET_DrawArraysIndirect(table, save_DrawArraysIndirect);
SET_DrawElementsIndirect(table, save_DrawElementsIndirect);
SET_MultiDrawArraysIndirect(table, save_MultiDrawArraysIndirect);
SET_MultiDrawElementsIndirect(table, save_MultiDrawElementsIndirect);
/* OpenGL 4.2 / GL_ARB_separate_shader_objects */
SET_UseProgramStages(table, save_UseProgramStages);
SET_ProgramUniform1f(table, save_ProgramUniform1f);