From 0d9ff0872ac233bc633ae6815f31197cc4d142ec Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Sat, 27 Feb 2021 13:58:36 -0700 Subject: [PATCH] nv2a: Swap glDrawRangeElements for glDrawElements --- hw/xbox/nv2a/nv2a_int.h | 1 - hw/xbox/nv2a/pgraph.c | 18 +++--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/hw/xbox/nv2a/nv2a_int.h b/hw/xbox/nv2a/nv2a_int.h index 29cd32fa7c..1cc88768dd 100644 --- a/hw/xbox/nv2a/nv2a_int.h +++ b/hw/xbox/nv2a/nv2a_int.h @@ -346,7 +346,6 @@ typedef struct PGRAPHState { GLint gl_draw_arrays_start[1000]; GLsizei gl_draw_arrays_count[1000]; - GLuint gl_element_buffer; GLuint gl_memory_buffer; GLuint gl_vertex_array; diff --git a/hw/xbox/nv2a/pgraph.c b/hw/xbox/nv2a/pgraph.c index 7031aee403..f600163148 100644 --- a/hw/xbox/nv2a/pgraph.c +++ b/hw/xbox/nv2a/pgraph.c @@ -2079,26 +2079,15 @@ int pgraph_method(NV2AState *d, unsigned int subchannel, assert(pg->inline_array_length == 0); uint32_t max_element = 0; - uint32_t min_element = (uint32_t)-1; for (i=0; iinline_elements_length; i++) { max_element = MAX(pg->inline_elements[i], max_element); - min_element = MIN(pg->inline_elements[i], min_element); } pgraph_bind_vertex_attributes(d, max_element+1, false, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, pg->gl_element_buffer); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, - pg->inline_elements_length*4, - pg->inline_elements, - GL_DYNAMIC_DRAW); - - glDrawRangeElements(pg->shader_binding->gl_primitive_mode, - min_element, max_element, - pg->inline_elements_length, - GL_UNSIGNED_INT, - (void*)0); - + glDrawElements(pg->shader_binding->gl_primitive_mode, + pg->inline_elements_length, GL_UNSIGNED_INT, + (void *)pg->inline_elements); } else { NV2A_GL_DPRINTF(true, "EMPTY NV097_SET_BEGIN_END"); NV2A_UNCONFIRMED("EMPTY NV097_SET_BEGIN_END"); @@ -3054,7 +3043,6 @@ void pgraph_init(NV2AState *d) attribute->inline_buffer_populated = false; } glGenBuffers(1, &pg->gl_inline_array_buffer); - glGenBuffers(1, &pg->gl_element_buffer); glGenBuffers(1, &pg->gl_memory_buffer); glBindBuffer(GL_ARRAY_BUFFER, pg->gl_memory_buffer);