[v2 1/2] wined3d: Implement primitive restart index.

Andrew Wesie awesie at gmail.com
Thu Nov 17 21:44:06 CST 2016


Signed-off-by: Andrew Wesie <awesie at gmail.com>
---
 dlls/wined3d/directx.c     |  1 +
 dlls/wined3d/glsl_shader.c | 10 ++++++++++
 dlls/wined3d/wined3d_gl.h  |  1 +
 3 files changed, 12 insertions(+)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 6588d1c..393bc1a 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -122,6 +122,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
     {"GL_ARB_draw_elements_base_vertex",    ARB_DRAW_ELEMENTS_BASE_VERTEX },
     {"GL_ARB_draw_instanced",               ARB_DRAW_INSTANCED            },
     {"GL_ARB_ES2_compatibility",            ARB_ES2_COMPATIBILITY         },
+    {"GL_ARB_ES3_compatibility",            ARB_ES3_COMPATIBILITY         },
     {"GL_ARB_explicit_attrib_location",     ARB_EXPLICIT_ATTRIB_LOCATION  },
     {"GL_ARB_fragment_coord_conventions",   ARB_FRAGMENT_COORD_CONVENTIONS},
     {"GL_ARB_fragment_program",             ARB_FRAGMENT_PROGRAM          },
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 9e9c83b..0c83d2a 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -8602,6 +8602,16 @@ static void shader_glsl_init_context_state(struct wined3d_context *context)
 
     gl_info->gl_ops.gl.p_glEnable(GL_PROGRAM_POINT_SIZE);
     checkGLcall("GL_PROGRAM_POINT_SIZE");
+    if (gl_info->supported[ARB_ES3_COMPATIBILITY])
+    {
+        /* We prefer this method because it correctly handles 16-bit and 32-bit indices. */
+        gl_info->gl_ops.gl.p_glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX);
+        checkGLcall("GL_PRIMITIVE_RESTART_FIXED_INDEX");
+    }
+    else
+    {
+        WARN("Missing support for primitive restart index.\n");
+    }
 }
 
 static void shader_glsl_get_caps(const struct wined3d_gl_info *gl_info, struct shader_caps *caps)
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index b71190d..7bd2d6a 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -55,6 +55,7 @@ enum wined3d_gl_extension
     ARB_DRAW_ELEMENTS_BASE_VERTEX,
     ARB_DRAW_INSTANCED,
     ARB_ES2_COMPATIBILITY,
+    ARB_ES3_COMPATIBILITY,
     ARB_EXPLICIT_ATTRIB_LOCATION,
     ARB_FRAGMENT_COORD_CONVENTIONS,
     ARB_FRAGMENT_PROGRAM,
-- 
2.7.4




More information about the wine-patches mailing list