panfrost: Route outputs_written through the compiler
It's there in shader_info, but we need to access it from pan_context.c Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
This commit is contained in:
parent
f714eab882
commit
5b0a1a4e49
|
@ -41,7 +41,8 @@ panfrost_shader_compile(
|
||||||
enum pipe_shader_ir ir_type,
|
enum pipe_shader_ir ir_type,
|
||||||
const void *ir,
|
const void *ir,
|
||||||
gl_shader_stage stage,
|
gl_shader_stage stage,
|
||||||
struct panfrost_shader_state *state)
|
struct panfrost_shader_state *state,
|
||||||
|
uint64_t *outputs_written)
|
||||||
{
|
{
|
||||||
struct panfrost_screen *screen = pan_screen(ctx->base.screen);
|
struct panfrost_screen *screen = pan_screen(ctx->base.screen);
|
||||||
uint8_t *dst;
|
uint8_t *dst;
|
||||||
|
@ -118,6 +119,9 @@ panfrost_shader_compile(
|
||||||
state->reads_point_coord = false;
|
state->reads_point_coord = false;
|
||||||
state->helper_invocations = s->info.fs.needs_helper_invocations;
|
state->helper_invocations = s->info.fs.needs_helper_invocations;
|
||||||
|
|
||||||
|
if (outputs_written)
|
||||||
|
*outputs_written = s->info.outputs_written;
|
||||||
|
|
||||||
/* Separate as primary uniform count is truncated */
|
/* Separate as primary uniform count is truncated */
|
||||||
state->uniform_count = program.uniform_count;
|
state->uniform_count = program.uniform_count;
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ panfrost_create_compute_state(
|
||||||
|
|
||||||
panfrost_shader_compile(ctx, v->tripipe,
|
panfrost_shader_compile(ctx, v->tripipe,
|
||||||
cso->ir_type, cso->prog,
|
cso->ir_type, cso->prog,
|
||||||
MESA_SHADER_COMPUTE, v);
|
MESA_SHADER_COMPUTE, v, NULL);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2118,12 +2118,15 @@ panfrost_bind_shader_state(
|
||||||
/* We finally have a variant, so compile it */
|
/* We finally have a variant, so compile it */
|
||||||
|
|
||||||
if (!shader_state->compiled) {
|
if (!shader_state->compiled) {
|
||||||
|
uint64_t outputs_written = 0;
|
||||||
|
|
||||||
panfrost_shader_compile(ctx, shader_state->tripipe,
|
panfrost_shader_compile(ctx, shader_state->tripipe,
|
||||||
variants->base.type,
|
variants->base.type,
|
||||||
variants->base.type == PIPE_SHADER_IR_NIR ?
|
variants->base.type == PIPE_SHADER_IR_NIR ?
|
||||||
variants->base.ir.nir :
|
variants->base.ir.nir :
|
||||||
variants->base.tokens,
|
variants->base.tokens,
|
||||||
tgsi_processor_to_shader_stage(type), shader_state);
|
tgsi_processor_to_shader_stage(type), shader_state,
|
||||||
|
&outputs_written);
|
||||||
|
|
||||||
shader_state->compiled = true;
|
shader_state->compiled = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -333,7 +333,8 @@ panfrost_shader_compile(
|
||||||
enum pipe_shader_ir ir_type,
|
enum pipe_shader_ir ir_type,
|
||||||
const void *ir,
|
const void *ir,
|
||||||
gl_shader_stage stage,
|
gl_shader_stage stage,
|
||||||
struct panfrost_shader_state *state);
|
struct panfrost_shader_state *state,
|
||||||
|
uint64_t *outputs_written);
|
||||||
|
|
||||||
void
|
void
|
||||||
panfrost_pack_work_groups_compute(
|
panfrost_pack_work_groups_compute(
|
||||||
|
|
Loading…
Reference in New Issue