[PATCH 1/5] wined3d: Store the wined3d primitive type in the wined3d state structure.

Henri Verbeet hverbeet at codeweavers.com
Wed May 20 08:42:28 CDT 2020


As opposed to the OpenGL primitive type.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/wined3d/context_gl.c      |  59 +++++++++++++++--
 dlls/wined3d/cs.c              |  18 ++---
 dlls/wined3d/device.c          | 118 ++++-----------------------------
 dlls/wined3d/glsl_shader.c     |   5 +-
 dlls/wined3d/shader.c          |   6 +-
 dlls/wined3d/stateblock.c      |   2 +-
 dlls/wined3d/utils.c           |   6 +-
 dlls/wined3d/wined3d_private.h |  16 ++---
 8 files changed, 93 insertions(+), 137 deletions(-)

diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c
index f08f138e848..c4f14d24bb2 100644
--- a/dlls/wined3d/context_gl.c
+++ b/dlls/wined3d/context_gl.c
@@ -38,6 +38,52 @@ WINE_DECLARE_DEBUG_CHANNEL(d3d_synchronous);
 
 static DWORD wined3d_context_tls_idx;
 
+/* Note that except for WINED3DPT_POINTLIST and WINED3DPT_LINELIST these
+ * actually have the same values in GL and D3D. */
+static GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type)
+{
+    switch (primitive_type)
+    {
+        case WINED3D_PT_POINTLIST:
+            return GL_POINTS;
+
+        case WINED3D_PT_LINELIST:
+            return GL_LINES;
+
+        case WINED3D_PT_LINESTRIP:
+            return GL_LINE_STRIP;
+
+        case WINED3D_PT_TRIANGLELIST:
+            return GL_TRIANGLES;
+
+        case WINED3D_PT_TRIANGLESTRIP:
+            return GL_TRIANGLE_STRIP;
+
+        case WINED3D_PT_TRIANGLEFAN:
+            return GL_TRIANGLE_FAN;
+
+        case WINED3D_PT_LINELIST_ADJ:
+            return GL_LINES_ADJACENCY_ARB;
+
+        case WINED3D_PT_LINESTRIP_ADJ:
+            return GL_LINE_STRIP_ADJACENCY_ARB;
+
+        case WINED3D_PT_TRIANGLELIST_ADJ:
+            return GL_TRIANGLES_ADJACENCY_ARB;
+
+        case WINED3D_PT_TRIANGLESTRIP_ADJ:
+            return GL_TRIANGLE_STRIP_ADJACENCY_ARB;
+
+        case WINED3D_PT_PATCH:
+            return GL_PATCHES;
+
+        default:
+            FIXME("Unhandled primitive type %s.\n", debug_d3dprimitivetype(primitive_type));
+        case WINED3D_PT_UNDEFINED:
+            return ~0u;
+    }
+}
+
 /* FBO helper functions */
 
 /* Context activation is done by the caller. */
@@ -3931,10 +3977,10 @@ static void wined3d_context_gl_draw_primitive_arrays(struct wined3d_context_gl *
     const struct wined3d_ffp_attrib_ops *ops = &context_gl->c.d3d_info->ffp_attrib_ops;
     GLenum idx_type = idx_size == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
     const struct wined3d_stream_info *si = &context_gl->c.stream_info;
+    GLenum mode = gl_primitive_type_from_d3d(state->primitive_type);
     const struct wined3d_gl_info *gl_info = context_gl->gl_info;
     unsigned int instanced_elements[ARRAY_SIZE(si->elements)];
     unsigned int instanced_element_count = 0;
-    GLenum mode = state->gl_primitive_type;
     const void *indices;
     unsigned int i, j;
 
@@ -4104,7 +4150,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl,
 
     ops = &d3d_info->ffp_attrib_ops;
 
-    gl_info->gl_ops.gl.p_glBegin(state->gl_primitive_type);
+    gl_info->gl_ops.gl.p_glBegin(gl_primitive_type_from_d3d(state->primitive_type));
 
     if (use_vs(state) || d3d_info->ffp_generic_attributes)
     {
@@ -4289,6 +4335,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl,
 static void wined3d_context_gl_draw_indirect(struct wined3d_context_gl *context_gl, const struct wined3d_state *state,
         const struct wined3d_indirect_draw_parameters *parameters, unsigned int idx_size)
 {
+    GLenum gl_primitive_type = gl_primitive_type_from_d3d(state->primitive_type);
     const struct wined3d_gl_info *gl_info = context_gl->gl_info;
     struct wined3d_buffer *buffer = parameters->buffer;
     const void *offset;
@@ -4307,11 +4354,11 @@ static void wined3d_context_gl_draw_indirect(struct wined3d_context_gl *context_
         GLenum idx_type = idx_size == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
         if (state->index_offset)
             FIXME("Ignoring index offset %u.\n", state->index_offset);
-        GL_EXTCALL(glDrawElementsIndirect(state->gl_primitive_type, idx_type, offset));
+        GL_EXTCALL(glDrawElementsIndirect(gl_primitive_type, idx_type, offset));
     }
     else
     {
-        GL_EXTCALL(glDrawArraysIndirect(state->gl_primitive_type, offset));
+        GL_EXTCALL(glDrawArraysIndirect(gl_primitive_type, offset));
     }
 
     GL_EXTCALL(glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0));
@@ -4545,7 +4592,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
         else if (!context->transform_feedback_active)
         {
             enum wined3d_primitive_type primitive_type = shader->u.gs.output_type
-                    ? shader->u.gs.output_type : d3d_primitive_type_from_gl(state->gl_primitive_type);
+                    ? shader->u.gs.output_type : state->primitive_type;
             GLenum mode = gl_tfb_primitive_type_from_d3d(primitive_type);
             GL_EXTCALL(glBeginTransformFeedback(mode));
             checkGLcall("glBeginTransformFeedback");
@@ -4553,7 +4600,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
         }
     }
 
-    if (state->gl_primitive_type == GL_PATCHES)
+    if (state->primitive_type == WINED3D_PT_PATCH)
     {
         GL_EXTCALL(glPatchParameteri(GL_PATCH_VERTICES, state->gl_patch_vertices));
         checkGLcall("glPatchParameteri");
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index c704daaf57e..9b50948d017 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -121,7 +121,7 @@ struct wined3d_cs_dispatch
 struct wined3d_cs_draw
 {
     enum wined3d_cs_op opcode;
-    GLenum primitive_type;
+    enum wined3d_primitive_type primitive_type;
     GLint patch_vertex_count;
     struct wined3d_draw_parameters parameters;
 };
@@ -881,13 +881,13 @@ static void wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data)
         device_invalidate_state(cs->device, STATE_BASEVERTEXINDEX);
     }
 
-    if (state->gl_primitive_type != op->primitive_type)
+    if (state->primitive_type != op->primitive_type)
     {
         if ((geometry_shader = state->shader[WINED3D_SHADER_TYPE_GEOMETRY]) && !geometry_shader->function)
             device_invalidate_state(cs->device, STATE_SHADER(WINED3D_SHADER_TYPE_GEOMETRY));
-        if (state->gl_primitive_type == GL_POINTS || op->primitive_type == GL_POINTS)
+        if (state->primitive_type == WINED3D_PT_POINTLIST || op->primitive_type == WINED3D_PT_POINTLIST)
             device_invalidate_state(cs->device, STATE_POINT_ENABLE);
-        state->gl_primitive_type = op->primitive_type;
+        state->primitive_type = op->primitive_type;
     }
     state->gl_patch_vertices = op->patch_vertex_count;
 
@@ -962,9 +962,9 @@ static void acquire_graphics_pipeline_resources(const struct wined3d_state *stat
             state->unordered_access_view[WINED3D_PIPELINE_GRAPHICS]);
 }
 
-void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
-        int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
-        unsigned int start_instance, unsigned int instance_count, BOOL indexed)
+void wined3d_cs_emit_draw(struct wined3d_cs *cs, enum wined3d_primitive_type primitive_type,
+        unsigned int patch_vertex_count, int base_vertex_idx, unsigned int start_idx,
+        unsigned int index_count, unsigned int start_instance, unsigned int instance_count, bool indexed)
 {
     const struct wined3d_d3d_info *d3d_info = &cs->device->adapter->d3d_info;
     const struct wined3d_state *state = &cs->device->state;
@@ -987,8 +987,8 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned
     wined3d_cs_submit(cs, WINED3D_CS_QUEUE_DEFAULT);
 }
 
-void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
-        struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed)
+void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, enum wined3d_primitive_type primitive_type,
+        unsigned int patch_vertex_count, struct wined3d_buffer *buffer, unsigned int offset, bool indexed)
 {
     const struct wined3d_d3d_info *d3d_info = &cs->device->adapter->d3d_info;
     const struct wined3d_state *state = &cs->device->state;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 618a9bcbe26..72bd403e2c0 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -90,96 +90,6 @@ const struct wined3d_light WINED3D_default_light =
     0.0f                        /* Phi */
 };
 
-/* Note that except for WINED3DPT_POINTLIST and WINED3DPT_LINELIST these
- * actually have the same values in GL and D3D. */
-GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type)
-{
-    switch (primitive_type)
-    {
-        case WINED3D_PT_POINTLIST:
-            return GL_POINTS;
-
-        case WINED3D_PT_LINELIST:
-            return GL_LINES;
-
-        case WINED3D_PT_LINESTRIP:
-            return GL_LINE_STRIP;
-
-        case WINED3D_PT_TRIANGLELIST:
-            return GL_TRIANGLES;
-
-        case WINED3D_PT_TRIANGLESTRIP:
-            return GL_TRIANGLE_STRIP;
-
-        case WINED3D_PT_TRIANGLEFAN:
-            return GL_TRIANGLE_FAN;
-
-        case WINED3D_PT_LINELIST_ADJ:
-            return GL_LINES_ADJACENCY_ARB;
-
-        case WINED3D_PT_LINESTRIP_ADJ:
-            return GL_LINE_STRIP_ADJACENCY_ARB;
-
-        case WINED3D_PT_TRIANGLELIST_ADJ:
-            return GL_TRIANGLES_ADJACENCY_ARB;
-
-        case WINED3D_PT_TRIANGLESTRIP_ADJ:
-            return GL_TRIANGLE_STRIP_ADJACENCY_ARB;
-
-        case WINED3D_PT_PATCH:
-            return GL_PATCHES;
-
-        default:
-            FIXME("Unhandled primitive type %s.\n", debug_d3dprimitivetype(primitive_type));
-        case WINED3D_PT_UNDEFINED:
-            return ~0u;
-    }
-}
-
-enum wined3d_primitive_type d3d_primitive_type_from_gl(GLenum primitive_type)
-{
-    switch (primitive_type)
-    {
-        case GL_POINTS:
-            return WINED3D_PT_POINTLIST;
-
-        case GL_LINES:
-            return WINED3D_PT_LINELIST;
-
-        case GL_LINE_STRIP:
-            return WINED3D_PT_LINESTRIP;
-
-        case GL_TRIANGLES:
-            return WINED3D_PT_TRIANGLELIST;
-
-        case GL_TRIANGLE_STRIP:
-            return WINED3D_PT_TRIANGLESTRIP;
-
-        case GL_TRIANGLE_FAN:
-            return WINED3D_PT_TRIANGLEFAN;
-
-        case GL_LINES_ADJACENCY_ARB:
-            return WINED3D_PT_LINELIST_ADJ;
-
-        case GL_LINE_STRIP_ADJACENCY_ARB:
-            return WINED3D_PT_LINESTRIP_ADJ;
-
-        case GL_TRIANGLES_ADJACENCY_ARB:
-            return WINED3D_PT_TRIANGLELIST_ADJ;
-
-        case GL_TRIANGLE_STRIP_ADJACENCY_ARB:
-            return WINED3D_PT_TRIANGLESTRIP_ADJ;
-
-        case GL_PATCHES:
-            return WINED3D_PT_PATCH;
-
-        default:
-            FIXME("Unhandled primitive type %s.\n", debug_d3dprimitivetype(primitive_type));
-        case ~0u:
-            return WINED3D_PT_UNDEFINED;
-    }
-}
-
 BOOL device_context_add(struct wined3d_device *device, struct wined3d_context *context)
 {
     struct wined3d_context **new_array;
@@ -4066,7 +3976,7 @@ void CDECL wined3d_device_set_primitive_type(struct wined3d_device *device,
     TRACE("device %p, primitive_type %s, patch_vertex_count %u.\n",
             device, debug_d3dprimitivetype(primitive_type), patch_vertex_count);
 
-    device->state.gl_primitive_type = gl_primitive_type_from_d3d(primitive_type);
+    device->state.primitive_type = primitive_type;
     device->state.gl_patch_vertices = patch_vertex_count;
 }
 
@@ -4076,7 +3986,7 @@ void CDECL wined3d_device_get_primitive_type(const struct wined3d_device *device
     TRACE("device %p, primitive_type %p, patch_vertex_count %p.\n",
             device, primitive_type, patch_vertex_count);
 
-    *primitive_type = d3d_primitive_type_from_gl(device->state.gl_primitive_type);
+    *primitive_type = device->state.primitive_type;
     if (patch_vertex_count)
         *patch_vertex_count = device->state.gl_patch_vertices;
 
@@ -4087,8 +3997,8 @@ HRESULT CDECL wined3d_device_draw_primitive(struct wined3d_device *device, UINT
 {
     TRACE("device %p, start_vertex %u, vertex_count %u.\n", device, start_vertex, vertex_count);
 
-    wined3d_cs_emit_draw(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            0, start_vertex, vertex_count, 0, 0, FALSE);
+    wined3d_cs_emit_draw(device->cs, device->state.primitive_type,
+            device->state.gl_patch_vertices, 0, start_vertex, vertex_count, 0, 0, false);
 
     return WINED3D_OK;
 }
@@ -4099,8 +4009,8 @@ void CDECL wined3d_device_draw_primitive_instanced(struct wined3d_device *device
     TRACE("device %p, start_vertex %u, vertex_count %u, start_instance %u, instance_count %u.\n",
             device, start_vertex, vertex_count, start_instance, instance_count);
 
-    wined3d_cs_emit_draw(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            0, start_vertex, vertex_count, start_instance, instance_count, FALSE);
+    wined3d_cs_emit_draw(device->cs, device->state.primitive_type, device->state.gl_patch_vertices,
+            0, start_vertex, vertex_count, start_instance, instance_count, false);
 }
 
 void CDECL wined3d_device_draw_primitive_instanced_indirect(struct wined3d_device *device,
@@ -4108,8 +4018,8 @@ void CDECL wined3d_device_draw_primitive_instanced_indirect(struct wined3d_devic
 {
     TRACE("device %p, buffer %p, offset %u.\n", device, buffer, offset);
 
-    wined3d_cs_emit_draw_indirect(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            buffer, offset, FALSE);
+    wined3d_cs_emit_draw_indirect(device->cs, device->state.primitive_type,
+            device->state.gl_patch_vertices, buffer, offset, false);
 }
 
 HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *device, UINT start_idx, UINT index_count)
@@ -4126,8 +4036,8 @@ HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *devic
         return WINED3DERR_INVALIDCALL;
     }
 
-    wined3d_cs_emit_draw(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            device->state.base_vertex_index, start_idx, index_count, 0, 0, TRUE);
+    wined3d_cs_emit_draw(device->cs, device->state.primitive_type, device->state.gl_patch_vertices,
+            device->state.base_vertex_index, start_idx, index_count, 0, 0, true);
 
     return WINED3D_OK;
 }
@@ -4138,8 +4048,8 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device
     TRACE("device %p, start_idx %u, index_count %u, start_instance %u, instance_count %u.\n",
             device, start_idx, index_count, start_instance, instance_count);
 
-    wined3d_cs_emit_draw(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            device->state.base_vertex_index, start_idx, index_count, start_instance, instance_count, TRUE);
+    wined3d_cs_emit_draw(device->cs, device->state.primitive_type, device->state.gl_patch_vertices,
+            device->state.base_vertex_index, start_idx, index_count, start_instance, instance_count, true);
 }
 
 void CDECL wined3d_device_draw_indexed_primitive_instanced_indirect(struct wined3d_device *device,
@@ -4147,8 +4057,8 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced_indirect(struct wined
 {
     TRACE("device %p, buffer %p, offset %u.\n", device, buffer, offset);
 
-    wined3d_cs_emit_draw_indirect(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
-            buffer, offset, TRUE);
+    wined3d_cs_emit_draw_indirect(device->cs, device->state.primitive_type,
+            device->state.gl_patch_vertices, buffer, offset, true);
 }
 
 HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index ddde6e0c104..7d16f03a219 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -10348,7 +10348,7 @@ static void set_glsl_shader_program(const struct wined3d_context_gl *context_gl,
         if (vshader->reg_maps.shader_version.major < 4)
         {
             reorder_shader_id = shader_glsl_generate_vs3_rasterizer_input_setup(priv, vshader, pshader,
-                    state->gl_primitive_type == GL_POINTS && vshader->reg_maps.point_size,
+                    state->primitive_type == WINED3D_PT_POINTLIST && vshader->reg_maps.point_size,
                     d3d_info->emulated_flatshading
                     && state->render_states[WINED3D_RS_SHADEMODE] == WINED3D_SHADE_FLAT, gl_info);
             TRACE("Attaching GLSL shader object %u to program %u.\n", reorder_shader_id, program_id);
@@ -11809,7 +11809,8 @@ static void glsl_vertex_pointsprite_core(struct wined3d_context *context,
 {
     static unsigned int once;
 
-    if (state->gl_primitive_type == GL_POINTS && !state->render_states[WINED3D_RS_POINTSPRITEENABLE] && !once++)
+    if (state->primitive_type == WINED3D_PT_POINTLIST
+            && !state->render_states[WINED3D_RS_POINTSPRITEENABLE] && !once++)
         FIXME("Non-point sprite points not supported in core profile.\n");
 }
 
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index dbc889411d3..f4c4eb07d88 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -3541,7 +3541,7 @@ void find_vs_compile_args(const struct wined3d_state *state, const struct wined3
             == WINED3D_FOG_NONE ? VS_FOG_COORD : VS_FOG_Z;
     args->clip_enabled = state->render_states[WINED3D_RS_CLIPPING]
             && state->render_states[WINED3D_RS_CLIPPLANEENABLE];
-    args->point_size = state->gl_primitive_type == GL_POINTS;
+    args->point_size = state->primitive_type == WINED3D_PT_POINTLIST;
     args->per_vertex_point_size = shader->reg_maps.point_size;
     args->next_shader_type = hull_shader ? WINED3D_SHADER_TYPE_HULL
             : geometry_shader ? WINED3D_SHADER_TYPE_GEOMETRY : WINED3D_SHADER_TYPE_PIXEL;
@@ -3899,7 +3899,7 @@ void find_gs_compile_args(const struct wined3d_state *state, const struct wined3
     args->output_count = pixel_shader ? pixel_shader->limits->packed_input : shader->limits->packed_output;
 
     if (!(args->primitive_type = shader->u.gs.input_type))
-        args->primitive_type = d3d_primitive_type_from_gl(state->gl_primitive_type);
+        args->primitive_type = state->primitive_type;
 
     init_interpolation_compile_args(args->interpolation_mode, pixel_shader, context->d3d_info);
 }
@@ -4155,7 +4155,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
     }
 
     args->pointsprite = state->render_states[WINED3D_RS_POINTSPRITEENABLE]
-            && state->gl_primitive_type == GL_POINTS;
+            && state->primitive_type == WINED3D_PT_POINTLIST;
 
     if (d3d_info->ffp_alpha_test)
         args->alpha_test_func = WINED3D_CMP_ALWAYS - 1;
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 7e97c84c19e..1ce8e838992 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -1818,7 +1818,7 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
     TRACE("state %p, d3d_info %p.\n", state, d3d_info);
 
     get_identity_matrix(&identity);
-    state->gl_primitive_type = ~0u;
+    state->primitive_type = WINED3D_PT_UNDEFINED;
     state->gl_patch_vertices = 0;
 
     /* Set some of the defaults for lights, transforms etc */
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 62262b81b2f..df948264f95 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -6334,7 +6334,7 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d
     }
 
     settings->pointsprite = state->render_states[WINED3D_RS_POINTSPRITEENABLE]
-            && state->gl_primitive_type == GL_POINTS;
+            && state->primitive_type == WINED3D_PT_POINTLIST;
 
     if (d3d_info->ffp_alpha_test)
         settings->alpha_test_func = WINED3D_CMP_ALWAYS - 1;
@@ -6498,7 +6498,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
     if (si->position_transformed)
     {
         settings->transformed = 1;
-        settings->point_size = state->gl_primitive_type == GL_POINTS;
+        settings->point_size = state->primitive_type == WINED3D_PT_POINTLIST;
         settings->per_vertex_point_size = !!(si->use_map & 1u << WINED3D_FFP_PSIZE);
         if (!state->render_states[WINED3D_RS_FOGENABLE])
             settings->fog_mode = WINED3D_FFP_VS_FOG_OFF;
@@ -6546,7 +6546,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
     settings->normalize = settings->normal && state->render_states[WINED3D_RS_NORMALIZENORMALS];
     settings->lighting = !!state->render_states[WINED3D_RS_LIGHTING];
     settings->localviewer = !!state->render_states[WINED3D_RS_LOCALVIEWER];
-    settings->point_size = state->gl_primitive_type == GL_POINTS;
+    settings->point_size = state->primitive_type == WINED3D_PT_POINTLIST;
     settings->per_vertex_point_size = !!(si->use_map & 1u << WINED3D_FFP_PSIZE);
 
     wined3d_get_material_colour_source(&diffuse_source, &emissive_source,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 84391470657..42b558a8aed 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3488,7 +3488,7 @@ struct wined3d_state
     unsigned int index_offset;
     int base_vertex_index;
     int load_base_vertex_index; /* Non-indexed drawing needs 0 here, indexed needs base_vertex_index. */
-    GLenum gl_primitive_type;
+    enum wined3d_primitive_type primitive_type;
     GLint gl_patch_vertices;
     struct wined3d_query *predicate;
     BOOL predicate_value;
@@ -4490,11 +4490,12 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
         unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z) DECLSPEC_HIDDEN;
 void wined3d_cs_emit_dispatch_indirect(struct wined3d_cs *cs,
         struct wined3d_buffer *buffer, unsigned int offset) DECLSPEC_HIDDEN;
-void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
-        int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
-        unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
-void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
-        struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_draw(struct wined3d_cs *cs, enum wined3d_primitive_type primitive_type,
+        unsigned int patch_vertex_count, int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
+        unsigned int start_instance, unsigned int instance_count, bool indexed) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, enum wined3d_primitive_type primitive_type,
+        unsigned int patch_vertex_count, struct wined3d_buffer *buffer,
+        unsigned int offset, bool indexed) DECLSPEC_HIDDEN;
 void wined3d_cs_emit_flush(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
 void wined3d_cs_emit_generate_mipmaps(struct wined3d_cs *cs, struct wined3d_shader_resource_view *view) DECLSPEC_HIDDEN;
 void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@@ -5066,9 +5067,6 @@ void state_pointsprite(struct wined3d_context *context,
 void state_shademode(struct wined3d_context *context,
         const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
 
-GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type) DECLSPEC_HIDDEN;
-enum wined3d_primitive_type d3d_primitive_type_from_gl(GLenum primitive_type) DECLSPEC_HIDDEN;
-
 /* Math utils */
 void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
         const struct wined3d_matrix *src2) DECLSPEC_HIDDEN;
-- 
2.20.1




More information about the wine-devel mailing list