summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/nine/nine_pipe.c
diff options
context:
space:
mode:
authorPatrick Rudolph <siro@das-labor.org>2016-09-24 18:19:26 +0200
committerAxel Davy <axel.davy@ens.fr>2016-10-10 23:43:51 +0200
commit09edc0555f91d76001b1ffc0e656b0614abb809a (patch)
tree52e990e1f26f0bba30276502968a2777d51587e9 /src/gallium/state_trackers/nine/nine_pipe.c
parentfa2574497b25d06258404b83282719dbb477b190 (diff)
downloadexternal_mesa3d-09edc0555f91d76001b1ffc0e656b0614abb809a.zip
external_mesa3d-09edc0555f91d76001b1ffc0e656b0614abb809a.tar.gz
external_mesa3d-09edc0555f91d76001b1ffc0e656b0614abb809a.tar.bz2
st/nine: Set CLAMP_TO_EDGE on cubetextures
Wine tests show that cubetextures always use PIPE_TEX_WRAP_CLAMP_TO_EDGE regardless of set sampler states. Fixes failing d3d9 wine test test_cube_wrap. Signed-off-by: Patrick Rudolph <siro@das-labor.org> Reviewed-by: Axel Davy <axel.davy@ens.fr>
Diffstat (limited to 'src/gallium/state_trackers/nine/nine_pipe.c')
-rw-r--r--src/gallium/state_trackers/nine/nine_pipe.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/nine/nine_pipe.c b/src/gallium/state_trackers/nine/nine_pipe.c
index ea7dc16..7e33c0a 100644
--- a/src/gallium/state_trackers/nine/nine_pipe.c
+++ b/src/gallium/state_trackers/nine/nine_pipe.c
@@ -220,9 +220,17 @@ nine_convert_sampler_state(struct cso_context *ctx, int idx, const DWORD *ss)
samp.min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
}
samp.max_lod = 15.0f;
- samp.wrap_s = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSU]);
- samp.wrap_t = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSV]);
- samp.wrap_r = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSW]);
+
+ if (ss[NINED3DSAMP_CUBETEX]) {
+ /* Cube textures are always clamped to edge on D3D */
+ samp.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
+ samp.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
+ samp.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
+ } else {
+ samp.wrap_s = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSU]);
+ samp.wrap_t = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSV]);
+ samp.wrap_r = d3dtextureaddress_to_pipe_tex_wrap(ss[D3DSAMP_ADDRESSW]);
+ }
samp.min_img_filter = (ss[D3DSAMP_MINFILTER] == D3DTEXF_POINT && !ss[NINED3DSAMP_SHADOW]) ? PIPE_TEX_FILTER_NEAREST : PIPE_TEX_FILTER_LINEAR;
samp.mag_img_filter = (ss[D3DSAMP_MAGFILTER] == D3DTEXF_POINT && !ss[NINED3DSAMP_SHADOW]) ? PIPE_TEX_FILTER_NEAREST : PIPE_TEX_FILTER_LINEAR;
if (ss[D3DSAMP_MINFILTER] == D3DTEXF_ANISOTROPIC ||