[PATCH 5/8] wined3d: Use wined3d samplers unconditionally for applying legacy sampler states.
Józef Kucia
jkucia at codeweavers.com
Mon Mar 20 06:13:07 CDT 2017
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/wined3d/state.c | 40 +++++++++++++++-------------------------
1 file changed, 15 insertions(+), 25 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 8084cfb..7fcd2b9 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -3611,51 +3611,41 @@ static void sampler(struct wined3d_context *context, const struct wined3d_state
if (state->textures[sampler_idx])
{
- struct wined3d_texture *texture = state->textures[sampler_idx];
BOOL srgb = state->sampler_states[sampler_idx][WINED3D_SAMP_SRGB_TEXTURE];
const DWORD *sampler_states = state->sampler_states[sampler_idx];
+ struct wined3d_texture *texture = state->textures[sampler_idx];
+ struct wined3d_device *device = context->device;
struct wined3d_sampler_desc desc;
+ struct wined3d_sampler *sampler;
+ struct wine_rb_entry *entry;
struct gl_texture *gl_tex;
unsigned int base_level;
wined3d_sampler_desc_from_sampler_states(&desc, context, sampler_states, texture);
wined3d_texture_bind(texture, context, srgb);
- if (!gl_info->supported[ARB_SAMPLER_OBJECTS])
+
+ if ((entry = wine_rb_get(&device->samplers, &desc)))
{
- wined3d_texture_apply_sampler_desc(texture, &desc, context);
+ sampler = WINE_RB_ENTRY_VALUE(entry, struct wined3d_sampler, entry);
}
else
{
- struct wined3d_device *device = context->device;
- struct wined3d_sampler *sampler;
- struct wine_rb_entry *entry;
-
- if ((entry = wine_rb_get(&device->samplers, &desc)))
+ if (FAILED(wined3d_sampler_create(device, &desc, NULL, &sampler)))
{
- sampler = WINE_RB_ENTRY_VALUE(entry, struct wined3d_sampler, entry);
+ ERR("Failed to create sampler.\n");
+ sampler = NULL;
}
else
{
- if (FAILED(wined3d_sampler_create(device, &desc, NULL, &sampler)))
- {
- ERR("Failed to create sampler.\n");
- sampler = NULL;
- }
- else
- {
- if (wine_rb_put(&device->samplers, &desc, &sampler->entry) == -1)
- ERR("Failed to insert sampler.\n");
- }
- }
-
- if (sampler)
- {
- GL_EXTCALL(glBindSampler(mapped_stage, sampler->name));
- checkGLcall("glBindSampler");
+ if (wine_rb_put(&device->samplers, &desc, &sampler->entry) == -1)
+ ERR("Failed to insert sampler.\n");
}
}
+ if (sampler)
+ wined3d_sampler_bind(sampler, mapped_stage, texture, context);
+
if (texture->flags & WINED3D_TEXTURE_COND_NP2)
base_level = 0;
else if (desc.mip_filter == WINED3D_TEXF_NONE)
--
2.10.2
More information about the wine-patches
mailing list