Henri Verbeet : wined3d: Pass a wined3d_context_gl structure to context_get_tex_unit_mapping().

Alexandre Julliard julliard at winehq.org
Thu May 9 13:32:44 CDT 2019


Module: wine
Branch: master
Commit: a1d3939254647120a587ba30f03c8a623619bd48
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a1d3939254647120a587ba30f03c8a623619bd48

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu May  9 19:29:09 2019 +0430

wined3d: Pass a wined3d_context_gl structure to context_get_tex_unit_mapping().

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/context.c         | 13 +++++++------
 dlls/wined3d/glsl_shader.c     | 10 ++++++----
 dlls/wined3d/wined3d_private.h |  9 +++++++--
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 97d7656..6279268 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2369,16 +2369,16 @@ void wined3d_context_destroy(struct wined3d_context *context)
     device->adapter->adapter_ops->adapter_destroy_context(context);
 }
 
-const DWORD *context_get_tex_unit_mapping(const struct wined3d_context *context,
+const unsigned int *wined3d_context_gl_get_tex_unit_mapping(const struct wined3d_context_gl *context_gl,
         const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count)
 {
-    const struct wined3d_gl_info *gl_info = context->gl_info;
+    const struct wined3d_gl_info *gl_info = context_gl->c.gl_info;
 
     if (!shader_version)
     {
         *base = 0;
         *count = WINED3D_MAX_TEXTURES;
-        return context->tex_unit_map;
+        return context_gl->c.tex_unit_map;
     }
 
     if (shader_version->major >= 4)
@@ -2403,7 +2403,7 @@ const DWORD *context_get_tex_unit_mapping(const struct wined3d_context *context,
             *count = 0;
     }
 
-    return context->tex_unit_map;
+    return context_gl->c.tex_unit_map;
 }
 
 static void context_get_rt_size(const struct wined3d_context *context, SIZE *size)
@@ -3777,18 +3777,19 @@ static void context_load_shader_resources(struct wined3d_context *context, const
 static void context_bind_shader_resources(struct wined3d_context *context,
         const struct wined3d_state *state, enum wined3d_shader_type shader_type)
 {
+    struct wined3d_context_gl *context_gl = wined3d_context_gl(context);
     unsigned int bind_idx, shader_sampler_count, base, count, i;
     const struct wined3d_device *device = context->device;
     struct wined3d_shader_sampler_map_entry *entry;
     struct wined3d_shader_resource_view *view;
     const struct wined3d_shader *shader;
+    const unsigned int *tex_unit_map;
     struct wined3d_sampler *sampler;
-    const DWORD *tex_unit_map;
 
     if (!(shader = state->shader[shader_type]))
         return;
 
-    tex_unit_map = context_get_tex_unit_mapping(context,
+    tex_unit_map = wined3d_context_gl_get_tex_unit_mapping(context_gl,
             &shader->reg_maps.shader_version, &base, &count);
 
     shader_sampler_count = shader->reg_maps.sampler_map.count;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 6493e7f..5ee40b0 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -705,10 +705,11 @@ static void shader_glsl_load_samplers_range(const struct wined3d_gl_info *gl_inf
 static unsigned int shader_glsl_map_tex_unit(const struct wined3d_context *context,
         const struct wined3d_shader_version *shader_version, unsigned int sampler_idx)
 {
-    const DWORD *tex_unit_map;
+    const struct wined3d_context_gl *context_gl = wined3d_context_gl_const(context);
+    const unsigned int *tex_unit_map;
     unsigned int base, count;
 
-    tex_unit_map = context_get_tex_unit_mapping(context, shader_version, &base, &count);
+    tex_unit_map = wined3d_context_gl_get_tex_unit_mapping(context_gl, shader_version, &base, &count);
     if (sampler_idx >= count)
         return WINED3D_UNMAPPED_STAGE;
     if (!tex_unit_map)
@@ -731,9 +732,10 @@ static void shader_glsl_append_sampler_binding_qualifier(struct wined3d_string_b
 static void shader_glsl_load_samplers(const struct wined3d_context *context,
         struct shader_glsl_priv *priv, GLuint program_id, const struct wined3d_shader_reg_maps *reg_maps)
 {
+    const struct wined3d_context_gl *context_gl = wined3d_context_gl_const(context);
     const struct wined3d_gl_info *gl_info = context->gl_info;
     const struct wined3d_shader_version *shader_version;
-    const DWORD *tex_unit_map;
+    const unsigned int *tex_unit_map;
     unsigned int base, count;
     const char *prefix;
 
@@ -742,7 +744,7 @@ static void shader_glsl_load_samplers(const struct wined3d_context *context,
 
     shader_version = reg_maps ? &reg_maps->shader_version : NULL;
     prefix = shader_glsl_get_prefix(shader_version ? shader_version->type : WINED3D_SHADER_TYPE_PIXEL);
-    tex_unit_map = context_get_tex_unit_mapping(context, shader_version, &base, &count);
+    tex_unit_map = wined3d_context_gl_get_tex_unit_mapping(context_gl, shader_version, &base, &count);
     shader_glsl_load_samplers_range(gl_info, priv, program_id, prefix, base, count, tex_unit_map);
 }
 
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index a226cd4..fc75ddd 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2049,9 +2049,16 @@ static inline struct wined3d_context_gl *wined3d_context_gl(struct wined3d_conte
     return CONTAINING_RECORD(context, struct wined3d_context_gl, c);
 }
 
+static inline const struct wined3d_context_gl *wined3d_context_gl_const(const struct wined3d_context *context)
+{
+    return CONTAINING_RECORD(context, struct wined3d_context_gl, c);
+}
+
 void wined3d_context_gl_bind_texture(struct wined3d_context_gl *context_gl,
         GLenum target, GLuint name) DECLSPEC_HIDDEN;
 void wined3d_context_gl_cleanup(struct wined3d_context_gl *context_gl) DECLSPEC_HIDDEN;
+const unsigned int *wined3d_context_gl_get_tex_unit_mapping(const struct wined3d_context_gl *context_gl,
+        const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN;
 HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl,
         struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
 void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context_gl,
@@ -2231,8 +2238,6 @@ void context_free_fence(struct wined3d_fence *fence) DECLSPEC_HIDDEN;
 void context_free_occlusion_query(struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN;
 struct wined3d_context *context_get_current(void) DECLSPEC_HIDDEN;
 GLenum context_get_offscreen_gl_buffer(const struct wined3d_context *context) DECLSPEC_HIDDEN;
-const DWORD *context_get_tex_unit_mapping(const struct wined3d_context *context,
-        const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN;
 DWORD context_get_tls_idx(void) DECLSPEC_HIDDEN;
 void context_gl_resource_released(struct wined3d_device *device,
         GLuint name, BOOL rb_namespace) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list