st/nine: Do not wait for DEFAULT lock for volumes when we can
[mesa.git] / src / gallium / state_trackers / nine / nine_pipe.c
index ea7dc167ec37805c734c2b0b3ea247fafef28dca..a28b4c6d57a6f1fd0c8811529e2e2d3217e3b8a2 100644 (file)
@@ -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 ||
@@ -241,28 +249,6 @@ nine_convert_sampler_state(struct cso_context *ctx, int idx, const DWORD *ss)
         cso_single_sampler(ctx, PIPE_SHADER_VERTEX, idx - NINE_SAMPLER_VS(0), &samp);
 }
 
-void
-nine_pipe_context_clear(struct NineDevice9 *This)
-{
-    struct pipe_context *pipe = This->pipe;
-    struct cso_context *cso = This->cso;
-    pipe->bind_vs_state(pipe, NULL);
-    pipe->bind_fs_state(pipe, NULL);
-
-    /* Don't unbind constant buffers, they're device-private and
-     * do not change on Reset.
-     */
-
-    cso_set_samplers(cso, PIPE_SHADER_VERTEX, 0, NULL);
-    cso_set_samplers(cso, PIPE_SHADER_FRAGMENT, 0, NULL);
-
-    cso_set_sampler_views(cso, PIPE_SHADER_VERTEX, 0, NULL);
-    cso_set_sampler_views(cso, PIPE_SHADER_FRAGMENT, 0, NULL);
-
-    pipe->set_vertex_buffers(pipe, 0, This->caps.MaxStreams, NULL);
-    pipe->set_index_buffer(pipe, NULL);
-}
-
 const enum pipe_format nine_d3d9_to_pipe_format_map[120] =
 {
    [D3DFMT_UNKNOWN]       = PIPE_FORMAT_NONE,