glthread: fix draws not compiled into a display list should generate an error

Before it just crashed if indices were invalid.

Cc: stable
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18223>
This commit is contained in:
Marek Olšák 2022-08-23 15:02:48 -04:00 committed by Marge Bot
parent 355d575820
commit c716827f69

View file

@ -396,7 +396,9 @@ draw_arrays(GLenum mode, GLint first, GLsizei count, GLsizei instance_count,
* for possible GL errors.
*/
if (ctx->API == API_OPENGL_CORE || !user_buffer_mask ||
count <= 0 || instance_count <= 0) {
count <= 0 || instance_count <= 0 ||
/* This will just generate GL_INVALID_OPERATION, as it should. */
(!compiled_into_dlist && ctx->GLThread.ListMode)) {
draw_arrays_async(ctx, mode, first, count, instance_count, baseinstance);
return;
}
@ -794,7 +796,9 @@ draw_elements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices,
if (ctx->API == API_OPENGL_CORE ||
count <= 0 || instance_count <= 0 || max_index < min_index ||
!is_index_type_valid(type) ||
(!user_buffer_mask && !has_user_indices)) {
(!user_buffer_mask && !has_user_indices) ||
/* This will just generate GL_INVALID_OPERATION, as it should. */
(!compiled_into_dlist && ctx->GLThread.ListMode)) {
draw_elements_async(ctx, mode, count, type, indices, instance_count,
basevertex, baseinstance, index_bounds_valid,
min_index, max_index);