aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/ir3/ir3_shader.c
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2014-12-06 15:24:23 -0500
committerRob Clark <[email protected]>2014-12-09 18:03:01 -0500
commiteb6fd3b8eb9c19bb501a091d1696e5db1ac4c690 (patch)
tree26e04dc2caada820f1ebc8cdb942189615f827e8 /src/gallium/drivers/freedreno/ir3/ir3_shader.c
parent5b38a1740beccf1f33b9dfe4d38f00a711b6b2e0 (diff)
freedreno/ir3: lower TXP as needed
On a3xx, lower TXP for 3D textures, on a4xx lower all TXP. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/ir3/ir3_shader.c')
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_shader.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_shader.c b/src/gallium/drivers/freedreno/ir3/ir3_shader.c
index 0c74f2f26f2..c21d0a2d576 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_shader.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_shader.c
@@ -54,9 +54,10 @@ static void
assemble_variant(struct ir3_shader_variant *v)
{
struct fd_context *ctx = fd_context(v->shader->pctx);
+ uint32_t gpu_id = ir3_shader_gpuid(v->shader);
uint32_t sz, *bin;
- bin = ir3_assemble(v->ir, &v->info, ctx->screen->gpu_id);
+ bin = ir3_assemble(v->ir, &v->info, gpu_id);
sz = v->info.sizedwords * 4;
v->bo = fd_bo_new(ctx->dev, sz,
@@ -67,7 +68,7 @@ assemble_variant(struct ir3_shader_variant *v)
free(bin);
- if (ctx->screen->gpu_id >= 400) {
+ if (gpu_id >= 400) {
v->instrlen = v->info.sizedwords / (2 * 16);
} else {
v->instrlen = v->info.sizedwords / (2 * 4);
@@ -177,6 +178,13 @@ fail:
return NULL;
}
+uint32_t
+ir3_shader_gpuid(struct ir3_shader *shader)
+{
+ struct fd_context *ctx = fd_context(shader->pctx);
+ return ctx->screen->gpu_id;
+}
+
struct ir3_shader_variant *
ir3_shader_variant(struct ir3_shader *shader, struct ir3_shader_key key)
{