From: Brian Paul Date: Thu, 12 Sep 2013 22:11:03 +0000 (-0600) Subject: freedreno: use new bind_sampler_states() function X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7d7a9714d2f6cdceb9e9e6f6b43004008b56c8d2;p=mesa.git freedreno: use new bind_sampler_states() function --- diff --git a/src/gallium/drivers/freedreno/freedreno_texture.c b/src/gallium/drivers/freedreno/freedreno_texture.c index ff8a445dec6..fc0c8aa3346 100644 --- a/src/gallium/drivers/freedreno/freedreno_texture.c +++ b/src/gallium/drivers/freedreno/freedreno_texture.c @@ -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; }