mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
freedreno/ir3: lower TXP as needed
On a3xx, lower TXP for 3D textures, on a4xx lower all TXP. Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
5b38a1740b
commit
eb6fd3b8eb
3 changed files with 19 additions and 3 deletions
|
|
@ -170,6 +170,14 @@ compile_init(struct ir3_compile_context *ctx, struct ir3_shader_variant *so,
|
|||
break;
|
||||
}
|
||||
|
||||
if (ir3_shader_gpuid(so->shader) >= 400) {
|
||||
/* a4xx seems to have *no* sam.p */
|
||||
lconfig.lower_TXP = ~0; /* lower all txp */
|
||||
} else {
|
||||
/* a3xx just needs to avoid sam.p for 3d tex */
|
||||
lconfig.lower_TXP = (1 << TGSI_TEXTURE_3D);
|
||||
}
|
||||
|
||||
ctx->tokens = tgsi_transform_lowering(&lconfig, tokens, &ctx->info);
|
||||
ctx->free_tokens = !!ctx->tokens;
|
||||
if (!ctx->tokens) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ struct ir3_shader {
|
|||
struct ir3_shader * ir3_shader_create(struct pipe_context *pctx,
|
||||
const struct tgsi_token *tokens, enum shader_t type);
|
||||
void ir3_shader_destroy(struct ir3_shader *shader);
|
||||
|
||||
uint32_t ir3_shader_gpuid(struct ir3_shader *shader);
|
||||
struct ir3_shader_variant * ir3_shader_variant(struct ir3_shader *shader,
|
||||
struct ir3_shader_key key);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue