[PATCH 2/7] wined3d: Cleanup draw_primitive_arrays() a bit.

Józef Kucia joseph.kucia at gmail.com
Sun Feb 25 16:23:29 CST 2018


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/drawprim.c | 35 +++++++++++++++++------------------
 1 file changed, 17 insertions(+), 18 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index f87f0919c166..2f3390b5b083 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -44,27 +44,29 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
     unsigned int instanced_elements[ARRAY_SIZE(si->elements)];
     const struct wined3d_gl_info *gl_info = context->gl_info;
     unsigned int instanced_element_count = 0;
+    GLenum mode = state->gl_primitive_type;
+    const void *indices;
     unsigned int i, j;
 
+    indices = (const char *)idx_data + idx_size * start_idx;
+
     if (!instance_count)
     {
         if (!idx_size)
         {
-            gl_info->gl_ops.gl.p_glDrawArrays(state->gl_primitive_type, start_idx, count);
+            gl_info->gl_ops.gl.p_glDrawArrays(mode, start_idx, count);
             checkGLcall("glDrawArrays");
             return;
         }
 
         if (gl_info->supported[ARB_DRAW_ELEMENTS_BASE_VERTEX])
         {
-            GL_EXTCALL(glDrawElementsBaseVertex(state->gl_primitive_type, count, idx_type,
-                    (const char *)idx_data + (idx_size * start_idx), base_vertex_idx));
+            GL_EXTCALL(glDrawElementsBaseVertex(mode, count, idx_type, indices, base_vertex_idx));
             checkGLcall("glDrawElementsBaseVertex");
             return;
         }
 
-        gl_info->gl_ops.gl.p_glDrawElements(state->gl_primitive_type, count,
-                idx_type, (const char *)idx_data + (idx_size * start_idx));
+        gl_info->gl_ops.gl.p_glDrawElements(mode, count, idx_type, indices);
         checkGLcall("glDrawElements");
         return;
     }
@@ -78,33 +80,32 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
         {
             if (gl_info->supported[ARB_BASE_INSTANCE])
             {
-                GL_EXTCALL(glDrawArraysInstancedBaseInstance(state->gl_primitive_type, start_idx, count, instance_count, start_instance));
+                GL_EXTCALL(glDrawArraysInstancedBaseInstance(mode, start_idx, count, instance_count, start_instance));
                 checkGLcall("glDrawArraysInstancedBaseInstance");
                 return;
             }
 
-            GL_EXTCALL(glDrawArraysInstanced(state->gl_primitive_type, start_idx, count, instance_count));
+            GL_EXTCALL(glDrawArraysInstanced(mode, start_idx, count, instance_count));
             checkGLcall("glDrawArraysInstanced");
             return;
         }
 
         if (gl_info->supported[ARB_BASE_INSTANCE])
         {
-            GL_EXTCALL(glDrawElementsInstancedBaseVertexBaseInstance(state->gl_primitive_type, count, idx_type,
-                        (const char *)idx_data + (idx_size * start_idx), instance_count, base_vertex_idx, start_instance));
+            GL_EXTCALL(glDrawElementsInstancedBaseVertexBaseInstance(mode, count, idx_type,
+                    indices, instance_count, base_vertex_idx, start_instance));
             checkGLcall("glDrawElementsInstancedBaseVertexBaseInstance");
             return;
         }
         if (gl_info->supported[ARB_DRAW_ELEMENTS_BASE_VERTEX])
         {
-            GL_EXTCALL(glDrawElementsInstancedBaseVertex(state->gl_primitive_type, count, idx_type,
-                        (const char *)idx_data + (idx_size * start_idx), instance_count, base_vertex_idx));
+            GL_EXTCALL(glDrawElementsInstancedBaseVertex(mode, count, idx_type,
+                    indices, instance_count, base_vertex_idx));
             checkGLcall("glDrawElementsInstancedBaseVertex");
             return;
         }
 
-        GL_EXTCALL(glDrawElementsInstanced(state->gl_primitive_type, count, idx_type,
-                    (const char *)idx_data + (idx_size * start_idx), instance_count));
+        GL_EXTCALL(glDrawElementsInstanced(mode, count, idx_type, indices, instance_count));
         checkGLcall("glDrawElementsInstanced");
         return;
     }
@@ -120,7 +121,7 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
      * has a different meaning in that situation. */
     if (!idx_size)
     {
-        FIXME("Non-indexed instanced drawing is not supported\n");
+        FIXME("Non-indexed instanced drawing is not supported.\n");
         return;
     }
 
@@ -152,14 +153,12 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
 
         if (gl_info->supported[ARB_DRAW_ELEMENTS_BASE_VERTEX])
         {
-            GL_EXTCALL(glDrawElementsBaseVertex(state->gl_primitive_type, count, idx_type,
-                        (const char *)idx_data + (idx_size * start_idx), base_vertex_idx));
+            GL_EXTCALL(glDrawElementsBaseVertex(mode, count, idx_type, indices, base_vertex_idx));
             checkGLcall("glDrawElementsBaseVertex");
         }
         else
         {
-            gl_info->gl_ops.gl.p_glDrawElements(state->gl_primitive_type, count, idx_type,
-                        (const char *)idx_data + (idx_size * start_idx));
+            gl_info->gl_ops.gl.p_glDrawElements(mode, count, idx_type, indices);
             checkGLcall("glDrawElements");
         }
     }
-- 
2.16.1




More information about the wine-devel mailing list