From: Józef Kucia Subject: [PATCH 4/8] wined3d: Move legacy texture image unit range allocation to wined3d_gl_limits_get_texture_unit_range(). Message-Id: <20170309090310.13755-4-jkucia@codeweavers.com> Date: Thu, 9 Mar 2017 10:03:06 +0100 In-Reply-To: <20170309090310.13755-1-jkucia@codeweavers.com> References: <20170309090310.13755-1-jkucia@codeweavers.com> No intended change in behavior. Signed-off-by: Józef Kucia --- dlls/wined3d/context.c | 18 ++++-------------- dlls/wined3d/glsl_shader.c | 24 +++++------------------- dlls/wined3d/utils.c | 24 +++++++++++++++++++++++- 3 files changed, 32 insertions(+), 34 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 732c3c6..bde3951 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -3387,23 +3387,13 @@ static void context_bind_shader_resources(struct wined3d_context *context, static void context_bind_graphics_shader_resources(struct wined3d_context *context, const struct wined3d_state *state) { - unsigned int i; + unsigned int i, base_idx, count; - static const struct + for (i = 0; i < WINED3D_SHADER_TYPE_GRAPHICS_COUNT; ++i) { - enum wined3d_shader_type type; - unsigned int base_idx; - unsigned int count; + wined3d_gl_limits_get_texture_unit_range(&context->gl_info->limits, i, &base_idx, &count); + context_bind_shader_resources(context, state, i, base_idx, count); } - shader_types[] = - { - {WINED3D_SHADER_TYPE_PIXEL, 0, MAX_FRAGMENT_SAMPLERS}, - {WINED3D_SHADER_TYPE_VERTEX, MAX_FRAGMENT_SAMPLERS, MAX_VERTEX_SAMPLERS}, - }; - - for (i = 0; i < ARRAY_SIZE(shader_types); ++i) - context_bind_shader_resources(context, state, shader_types[i].type, - shader_types[i].base_idx, shader_types[i].count); } static void context_load_unordered_access_resources(struct wined3d_context *context, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 14c2e74..78ab744 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -594,30 +594,16 @@ static void shader_glsl_load_graphics_samplers(const struct wined3d_context *con { const struct wined3d_d3d_info *d3d_info = context->d3d_info; const struct wined3d_gl_info *gl_info = context->gl_info; + unsigned int i, base_idx, count; const DWORD *tex_unit_map; - const char *prefix; - unsigned int i; - - static const struct - { - enum wined3d_shader_type type; - unsigned int base_idx; - unsigned int count; - } - sampler_info[] = - { - {WINED3D_SHADER_TYPE_PIXEL, 0, MAX_FRAGMENT_SAMPLERS}, - {WINED3D_SHADER_TYPE_VERTEX, MAX_FRAGMENT_SAMPLERS, MAX_VERTEX_SAMPLERS}, - }; tex_unit_map = d3d_info->wined3d_creation_flags & WINED3D_LEGACY_TEXTURE_BINDING ? context->tex_unit_map : NULL; - - for (i = 0; i < ARRAY_SIZE(sampler_info); ++i) + for (i = 0; i < WINED3D_SHADER_TYPE_GRAPHICS_COUNT; ++i) { - prefix = shader_glsl_get_prefix(sampler_info[i].type); - shader_glsl_load_samplers(gl_info, priv, prefix, - sampler_info[i].base_idx, sampler_info[i].count, tex_unit_map, program_id); + wined3d_gl_limits_get_texture_unit_range(&gl_info->limits, i, &base_idx, &count); + shader_glsl_load_samplers(gl_info, priv, shader_glsl_get_prefix(i), + base_idx, count, tex_unit_map, program_id); } } diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 04317f1..b1cda46 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -5994,10 +5994,32 @@ void wined3d_gl_limits_get_uniform_block_range(const struct wined3d_gl_limits *g void wined3d_gl_limits_get_texture_unit_range(const struct wined3d_gl_limits *gl_limits, enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count) { + static const struct + { + enum wined3d_shader_type type; + unsigned int base_idx; + unsigned int count; + } + legacy_sampler_info[] = + { + {WINED3D_SHADER_TYPE_PIXEL, 0, MAX_FRAGMENT_SAMPLERS}, + {WINED3D_SHADER_TYPE_VERTEX, MAX_FRAGMENT_SAMPLERS, MAX_VERTEX_SAMPLERS}, + }; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(legacy_sampler_info); ++i) + { + if (legacy_sampler_info[i].type == shader_type) + { + *base = legacy_sampler_info[i].base_idx; + *count = legacy_sampler_info[i].count; + return; + } + } + if (shader_type != WINED3D_SHADER_TYPE_COMPUTE) { *base = *count = 0; - ERR("Unhandled shader type %#x.\n", shader_type); return; } -- 2.10.2