diff options
author | Rob Clark <[email protected]> | 2017-04-16 11:57:04 -0400 |
---|---|---|
committer | Rob Clark <[email protected]> | 2017-04-18 16:32:00 -0400 |
commit | 248a508f243a0fb6ef92d3048e60a278a4326ddd (patch) | |
tree | 376b5d6c9fd6bae0a3d7f1d75c285052224bbbfc /src/gallium/drivers/freedreno/a2xx | |
parent | 0cc23ae77995bb258505a390dd57efd3e00803e6 (diff) |
freedreno: move a2xx specific hack out of core
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/a2xx')
-rw-r--r-- | src/gallium/drivers/freedreno/a2xx/fd2_texture.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_texture.c b/src/gallium/drivers/freedreno/a2xx/fd2_texture.c index c500fbc9b87..089c337118f 100644 --- a/src/gallium/drivers/freedreno/a2xx/fd2_texture.c +++ b/src/gallium/drivers/freedreno/a2xx/fd2_texture.c @@ -151,6 +151,25 @@ fd2_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc, return &so->base; } +static void +fd2_set_sampler_views(struct pipe_context *pctx, enum pipe_shader_type shader, + unsigned start, unsigned nr, + struct pipe_sampler_view **views) +{ + if (shader == PIPE_SHADER_FRAGMENT) { + 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->tex[PIPE_SHADER_FRAGMENT].num_textures) + ctx->dirty |= FD_DIRTY_TEXSTATE; + } + + fd_set_sampler_views(pctx, shader, start, nr, views); +} + /* map gallium sampler-id to hw const-idx.. adreno uses a flat address * space of samplers (const-idx), so we need to map the gallium sampler-id * which is per-shader to a global const-idx space. @@ -177,5 +196,5 @@ fd2_texture_init(struct pipe_context *pctx) pctx->create_sampler_state = fd2_sampler_state_create; pctx->bind_sampler_states = fd2_sampler_states_bind; pctx->create_sampler_view = fd2_sampler_view_create; - pctx->set_sampler_views = fd_set_sampler_views; + pctx->set_sampler_views = fd2_set_sampler_views; } |