Module: Mesa Branch: main Commit: 0af2b7740bf86268f79c098985a665aa3a548524 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0af2b7740bf86268f79c098985a665aa3a548524
Author: Mike Blumenkrantz <[email protected]> Date: Fri Jan 14 09:45:17 2022 -0500 zink: rename zink_so_info -> zink_shader_info start passing more useful info to ntv Acked-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14381> --- .../drivers/zink/nir_to_spirv/nir_to_spirv.c | 22 +++++++++++----------- .../drivers/zink/nir_to_spirv/nir_to_spirv.h | 2 +- src/gallium/drivers/zink/zink_compiler.c | 16 ++++++++-------- src/gallium/drivers/zink/zink_compiler.h | 4 ++-- src/gallium/drivers/zink/zink_draw.cpp | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 99ea0327d90..7f5df8cc165 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -50,7 +50,7 @@ struct ntv_context { SpvId GLSL_std_450; gl_shader_stage stage; - const struct zink_so_info *so_info; + const struct zink_shader_info *sinfo; SpvId ubos[PIPE_MAX_CONSTANT_BUFFERS][5]; //8, 16, 32, unused, 64 nir_variable *ubo_vars[PIPE_MAX_CONSTANT_BUFFERS]; @@ -1292,7 +1292,7 @@ get_output_type(struct ntv_context *ctx, unsigned register_index, unsigned num_c /* for streamout create new outputs, as streamout can be done on individual components, from complete outputs, so we just can't use the created packed outputs */ static void -emit_so_info(struct ntv_context *ctx, const struct zink_so_info *so_info, +emit_so_info(struct ntv_context *ctx, const struct zink_shader_info *so_info, unsigned first_so) { unsigned output = 0; @@ -1341,7 +1341,7 @@ emit_so_info(struct ntv_context *ctx, const struct zink_so_info *so_info, static void emit_so_outputs(struct ntv_context *ctx, - const struct zink_so_info *so_info) + const struct zink_shader_info *so_info) { for (unsigned i = 0; i < so_info->so_info.num_outputs; i++) { uint32_t components[NIR_MAX_VEC_COMPONENTS]; @@ -2635,8 +2635,8 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) /* geometry shader emits copied xfb outputs just prior to EmitVertex(), * since that's the end of the shader */ - if (ctx->so_info) - emit_so_outputs(ctx, ctx->so_info); + if (ctx->sinfo) + emit_so_outputs(ctx, ctx->sinfo); spirv_builder_emit_vertex(&ctx->builder, nir_intrinsic_stream_id(intr)); break; @@ -3609,7 +3609,7 @@ get_spacing(enum gl_tess_spacing spacing) } struct spirv_shader * -nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, uint32_t spirv_version) +nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_t spirv_version) { struct spirv_shader *ret = NULL; @@ -3700,7 +3700,7 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, uint32_t } ctx.stage = s->info.stage; - ctx.so_info = so_info; + ctx.sinfo = sinfo; ctx.GLSL_std_450 = spirv_builder_import(&ctx.builder, "GLSL.std.450"); ctx.explicit_lod = true; spirv_builder_emit_source(&ctx.builder, SpvSourceLanguageUnknown, 0); @@ -3781,8 +3781,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, uint32_t } - if (so_info) - emit_so_info(&ctx, so_info, max_output + 1); + if (sinfo) + emit_so_info(&ctx, sinfo, max_output + 1); /* we have to reverse iterate to match what's done in zink_compiler.c */ foreach_list_typed_reverse(nir_variable, var, node, &s->variables) @@ -3941,8 +3941,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, uint32_t emit_cf_list(&ctx, &entry->body); /* vertex/tess shader emits copied xfb outputs at the end of the shader */ - if (so_info && (ctx.stage == MESA_SHADER_VERTEX || ctx.stage == MESA_SHADER_TESS_EVAL)) - emit_so_outputs(&ctx, so_info); + if (sinfo && (ctx.stage == MESA_SHADER_VERTEX || ctx.stage == MESA_SHADER_TESS_EVAL)) + emit_so_outputs(&ctx, sinfo); spirv_builder_return(&ctx.builder); // doesn't belong here, but whatevz spirv_builder_function_end(&ctx.builder); diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.h b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.h index 04b559473e4..ca0614f0787 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.h +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.h @@ -45,7 +45,7 @@ struct nir_shader; struct pipe_stream_output_info; struct spirv_shader * -nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, +nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *so_info, uint32_t spirv_version); void diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 67f67b50c0e..906c8eee507 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -591,7 +591,7 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_ const struct pipe_stream_output *output = &so_info->output[i]; unsigned slot = reverse_map[output->register_index]; /* always set stride to be used during draw */ - zs->streamout.so_info.stride[output->output_buffer] = so_info->stride[output->output_buffer]; + zs->sinfo.so_info.stride[output->output_buffer] = so_info->stride[output->output_buffer]; if (zs->nir->info.stage != MESA_SHADER_GEOMETRY || util_bitcount(zs->nir->info.gs.active_stream_mask) == 1) { nir_variable *var = NULL; while (!var) @@ -662,11 +662,11 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_ } } } - zs->streamout.so_info.output[zs->streamout.so_info.num_outputs] = *output; + zs->sinfo.so_info.output[zs->sinfo.so_info.num_outputs] = *output; /* Map Gallium's condensed "slots" back to real VARYING_SLOT_* enums */ - zs->streamout.so_info_slots[zs->streamout.so_info.num_outputs++] = reverse_map[output->register_index]; + zs->sinfo.so_info_slots[zs->sinfo.so_info.num_outputs++] = reverse_map[output->register_index]; } - zs->streamout.have_xfb = !!zs->streamout.so_info.num_outputs; + zs->sinfo.have_xfb = !!zs->sinfo.so_info.num_outputs; } struct decompose_state { @@ -1086,7 +1086,7 @@ VkShaderModule zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shader *base_nir, const struct zink_shader_key *key) { VkShaderModule mod = VK_NULL_HANDLE; - void *streamout = NULL; + void *sinfo = NULL; nir_shader *nir = nir_shader_clone(NULL, base_nir); bool need_optimize = false; bool inlined_uniforms = false; @@ -1128,8 +1128,8 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shad case MESA_SHADER_TESS_EVAL: case MESA_SHADER_GEOMETRY: if (zink_vs_key_base(key)->last_vertex_stage) { - if (zs->streamout.have_xfb) - streamout = &zs->streamout; + if (zs->sinfo.have_xfb) + sinfo = &zs->sinfo; if (!zink_vs_key_base(key)->clip_halfz) { NIR_PASS_V(nir, nir_lower_clip_halfz); @@ -1189,7 +1189,7 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shad NIR_PASS_V(nir, nir_convert_from_ssa, true); - struct spirv_shader *spirv = nir_to_spirv(nir, streamout, screen->spirv_version); + struct spirv_shader *spirv = nir_to_spirv(nir, sinfo, screen->spirv_version); if (!spirv) goto done; diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h index 49834164fec..9f859e13ffe 100644 --- a/src/gallium/drivers/zink/zink_compiler.h +++ b/src/gallium/drivers/zink/zink_compiler.h @@ -51,7 +51,7 @@ struct nir_shader; struct set; struct tgsi_token; -struct zink_so_info { +struct zink_shader_info { struct pipe_stream_output_info so_info; unsigned so_info_slots[PIPE_MAX_SO_OUTPUTS]; bool have_xfb; @@ -72,7 +72,7 @@ struct zink_shader { struct nir_shader *nir; enum pipe_prim_type reduced_prim; // PIPE_PRIM_MAX for vs - struct zink_so_info streamout; + struct zink_shader_info sinfo; struct { int index; diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index 532aeb4814f..875b45ab992 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -804,7 +804,7 @@ zink_draw(struct pipe_context *pctx, counter_buffers[i] = VK_NULL_HANDLE; if (t) { struct zink_resource *res = zink_resource(t->counter_buffer); - t->stride = ctx->last_vertex_stage->streamout.so_info.stride[i] * sizeof(uint32_t); + t->stride = ctx->last_vertex_stage->sinfo.so_info.stride[i] * sizeof(uint32_t); zink_batch_reference_resource_rw(batch, res, true); if (t->counter_buffer_valid) { counter_buffers[i] = res->obj->buffer;
