Module: wine Branch: master Commit: d89ee7aaaafb46c0e0067085b27b50c65a12fc94 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d89ee7aaaafb46c0e0067085b2...
Author: Józef Kucia jkucia@codeweavers.com Date: Mon Mar 13 11:57:21 2017 +0100
wined3d: Move legacy texture image unit range allocation to wined3d_gl_limits_get_texture_unit_range().
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/context.c | 18 ++++-------------- dlls/wined3d/glsl_shader.c | 23 +++++------------------ dlls/wined3d/utils.c | 24 +++++++++++++++++++++++- 3 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index a423fac..8059461 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -3385,23 +3385,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 16cf6b0..f82d861 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -592,26 +592,13 @@ static void shader_glsl_load_samplers(const struct wined3d_gl_info *gl_info, static void shader_glsl_load_graphics_samplers(const struct wined3d_gl_info *gl_info, struct shader_glsl_priv *priv, const DWORD *tex_unit_map, GLuint program_id) { - 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}, - }; + unsigned int i, base_idx, count;
- 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; }