freedreno: use new bind_sampler_states() function
authorBrian Paul <brianp@vmware.com>
Thu, 12 Sep 2013 22:11:03 +0000 (16:11 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 3 Oct 2013 20:05:28 +0000 (14:05 -0600)
src/gallium/drivers/freedreno/freedreno_texture.c

index ff8a445dec6c56d7137e6a2da5bac7538f1ed6b0..fc0c8aa334640751ab7d4301e94edf22dfde32f3 100644 (file)
@@ -92,20 +92,29 @@ static void set_sampler_views(struct fd_texture_stateobj *prog,
 }
 
 static void
-fd_fragtex_sampler_states_bind(struct pipe_context *pctx,
+fd_sampler_states_bind(struct pipe_context *pctx,
+               unsigned shader, unsigned start,
                unsigned nr, void **hwcso)
 {
        struct fd_context *ctx = fd_context(pctx);
 
-       /* on a2xx, since there is a flat address space for textures/samplers,
-        * a change in # of fragment textures/samplers will trigger patching and
-        * re-emitting the vertex shader:
-        */
-       if (nr != ctx->fragtex.num_samplers)
-               ctx->dirty |= FD_DIRTY_TEXSTATE;
+       assert(start == 0);
 
-       bind_sampler_states(&ctx->fragtex, nr, hwcso);
-       ctx->dirty |= FD_DIRTY_FRAGTEX;
+       if (shader == PIPE_SHADER_FRAGMENT) {
+               /* on a2xx, since there is a flat address space for textures/samplers,
+                * a change in # of fragment textures/samplers will trigger patching and
+                * re-emitting the vertex shader:
+                */
+               if (nr != ctx->fragtex.num_samplers)
+                       ctx->dirty |= FD_DIRTY_TEXSTATE;
+
+               bind_sampler_states(&ctx->fragtex, nr, hwcso);
+               ctx->dirty |= FD_DIRTY_FRAGTEX;
+       }
+       else if (shader == PIPE_SHADER_VERTEX) {
+               bind_sampler_states(&ctx->verttex, nr, hwcso);
+               ctx->dirty |= FD_DIRTY_VERTTEX;
+       }
 }
 
 
@@ -126,16 +135,6 @@ fd_fragtex_set_sampler_views(struct pipe_context *pctx, unsigned nr,
        ctx->dirty |= FD_DIRTY_FRAGTEX;
 }
 
-static void
-fd_verttex_sampler_states_bind(struct pipe_context *pctx,
-               unsigned nr, void **hwcso)
-{
-       struct fd_context *ctx = fd_context(pctx);
-       bind_sampler_states(&ctx->verttex, nr, hwcso);
-       ctx->dirty |= FD_DIRTY_VERTTEX;
-}
-
-
 static void
 fd_verttex_set_sampler_views(struct pipe_context *pctx, unsigned nr,
                struct pipe_sampler_view **views)
@@ -152,9 +151,8 @@ fd_texture_init(struct pipe_context *pctx)
 
        pctx->sampler_view_destroy = fd_sampler_view_destroy;
 
-       pctx->bind_fragment_sampler_states = fd_fragtex_sampler_states_bind;
+       pctx->bind_sampler_states = fd_sampler_states_bind;
        pctx->set_fragment_sampler_views = fd_fragtex_set_sampler_views;
 
-       pctx->bind_vertex_sampler_states = fd_verttex_sampler_states_bind;
        pctx->set_vertex_sampler_views = fd_verttex_set_sampler_views;
 }