[PATCH 2/5] wined3d: Avoid going through the texture units mapping when unnecessary.
Matteo Bruni
mbruni at codeweavers.com
Sun Nov 8 13:25:09 CST 2015
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
dlls/wined3d/context.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 2b4bc1e..1baf084 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2628,11 +2628,16 @@ static void context_update_fixed_function_usage_map(struct wined3d_context *cont
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;
- const struct wined3d_d3d_info *d3d_info = context->d3d_info;
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
@@ -2673,10 +2678,14 @@ 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;
- const struct wined3d_d3d_info *d3d_info = context->d3d_info;
+
+ if (gl_info->limits.combined_samplers >= MAX_COMBINED_SAMPLERS)
+ return;
for (i = 0; i < MAX_FRAGMENT_SAMPLERS; ++i)
{
@@ -2727,6 +2736,9 @@ 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. */
--
2.4.10
More information about the wine-patches
mailing list