=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Check if texture unit mapping is required in context_update_tex_unit_map( ).

Alexandre Julliard julliard at winehq.org
Tue Feb 21 16:56:14 CST 2017


Module: wine
Branch: master
Commit: 3d62cd26d1b988b373efae0b9c4a0a988985d45f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3d62cd26d1b988b373efae0b9c4a0a988985d45f

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Feb 21 13:24:47 2017 +0100

wined3d: Check if texture unit mapping is required in context_update_tex_unit_map().

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/context.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index cb1935a..93b49a0 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2865,15 +2865,9 @@ static void context_map_fixed_function_samplers(struct wined3d_context *context,
         const struct wined3d_state *state)
 {
     const struct wined3d_d3d_info *d3d_info = context->d3d_info;
-    const struct wined3d_gl_info *gl_info = context->gl_info;
     unsigned int i, tex;
     WORD ffu_map;
 
-    context_update_fixed_function_usage_map(context, state);
-
-    if (gl_info->limits.combined_samplers >= MAX_COMBINED_SAMPLERS)
-        return;
-
     ffu_map = context->fixed_function_usage_map;
 
     if (d3d_info->limits.ffp_textures == d3d_info->limits.ffp_blend_stages
@@ -2915,14 +2909,10 @@ static void context_map_fixed_function_samplers(struct wined3d_context *context,
 static void context_map_psamplers(struct wined3d_context *context, const struct wined3d_state *state)
 {
     const struct wined3d_d3d_info *d3d_info = context->d3d_info;
-    const struct wined3d_gl_info *gl_info = context->gl_info;
     const struct wined3d_shader_resource_info *resource_info =
             state->shader[WINED3D_SHADER_TYPE_PIXEL]->reg_maps.resource_info;
     unsigned int i;
 
-    if (gl_info->limits.combined_samplers >= MAX_COMBINED_SAMPLERS)
-        return;
-
     for (i = 0; i < MAX_FRAGMENT_SAMPLERS; ++i)
     {
         if (resource_info[i].type && context->tex_unit_map[i] != i)
@@ -2970,9 +2960,6 @@ static void context_map_vsamplers(struct wined3d_context *context, BOOL ps, cons
     int start = min(MAX_COMBINED_SAMPLERS, gl_info->limits.combined_samplers) - 1;
     int i;
 
-    if (gl_info->limits.combined_samplers >= MAX_COMBINED_SAMPLERS)
-        return;
-
     /* Note that we only care if a resource is used or not, not the
      * resource's specific type. Otherwise we'd need to call
      * shader_update_samplers() here for 1.x pixelshaders. */
@@ -3008,14 +2995,21 @@ static void context_map_vsamplers(struct wined3d_context *context, BOOL ps, cons
 
 static void context_update_tex_unit_map(struct wined3d_context *context, const struct wined3d_state *state)
 {
+    const struct wined3d_gl_info *gl_info = context->gl_info;
     BOOL vs = use_vs(state);
     BOOL ps = use_ps(state);
 
+    if (!ps)
+        context_update_fixed_function_usage_map(context, state);
+
     /* Try to go for a 1:1 mapping of the samplers when possible. Pixel shaders
      * need a 1:1 map at the moment.
      * When the mapping of a stage is changed, sampler and ALL texture stage
      * states have to be reset. */
 
+    if (gl_info->limits.combined_samplers >= MAX_COMBINED_SAMPLERS)
+        return;
+
     if (ps)
         context_map_psamplers(context, state);
     else




More information about the wine-cvs mailing list