if (dirty & (PAN_DIRTY_VIEWPORT | PAN_DIRTY_SCISSOR))
batch->viewport = panfrost_emit_viewport(batch);
+
+ if (dirty & PAN_DIRTY_TLS_SIZE)
+ panfrost_batch_adjust_stack_size(batch);
}
static void
fs_vary, varyings, pos, psiz, tiler.cpu);
panfrost_emit_vertex_tiler_jobs(batch, &vertex, &tiler);
- /* Adjust the batch stack size based on the new shader stack sizes. */
- panfrost_batch_adjust_stack_size(batch);
-
/* Increment transform feedback offsets */
panfrost_update_streamout_offsets(ctx);
}
&batch->indirect_draw_ctx);
panfrost_emit_vertex_tiler_jobs(batch, &vertex, &tiler);
-
- /* Adjust the batch stack size based on the new shader stack sizes. */
- panfrost_batch_adjust_stack_size(batch);
}
static void
struct panfrost_context *ctx = pan_context(pctx);
struct panfrost_device *dev = pan_device(ctx->base.screen);
ctx->shader[type] = hwcso;
+
+ ctx->dirty |= PAN_DIRTY_TLS_SIZE;
ctx->dirty_shader[type] |= PAN_DIRTY_STAGE_RENDERER;
if (!hwcso) return;
PAN_DIRTY_VERTEX = BITFIELD_BIT(2),
PAN_DIRTY_PARAMS = BITFIELD_BIT(3),
PAN_DIRTY_DRAWID = BITFIELD_BIT(4),
+ PAN_DIRTY_TLS_SIZE = BITFIELD_BIT(5),
};
enum pan_dirty_shader {