Module: Mesa Branch: main Commit: bdb37c862f5d50a68bb7305c25239182c223ecd0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bdb37c862f5d50a68bb7305c25239182c223ecd0
Author: Boris Brezillon <[email protected]> Date: Wed Aug 4 13:45:47 2021 +0200 panfrost: Prepare shader helpers to per-gen XML Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12935> --- src/gallium/drivers/panfrost/pan_assemble.c | 4 +- src/gallium/drivers/panfrost/pan_cmdstream.c | 8 ++-- src/gallium/drivers/panfrost/pan_compute.c | 4 +- src/gallium/drivers/panfrost/pan_screen.c | 2 +- src/gallium/drivers/panfrost/pan_screen.h | 10 ++++- src/panfrost/lib/meson.build | 2 +- src/panfrost/lib/pan_blend.c | 4 +- src/panfrost/lib/pan_blitter.c | 4 +- src/panfrost/lib/pan_indirect_dispatch.c | 6 +-- src/panfrost/lib/pan_indirect_draw.c | 8 ++-- src/panfrost/lib/pan_shader.c | 56 +++++++++++++++------------ src/panfrost/lib/pan_shader.h | 58 +++++++++++++++------------- src/panfrost/vulkan/panvk_vX_cs.c | 7 +--- src/panfrost/vulkan/panvk_vX_meta.c | 6 +-- src/panfrost/vulkan/panvk_vX_shader.c | 4 +- 15 files changed, 100 insertions(+), 83 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c index 1638c9aef0e..7dce4dde980 100644 --- a/src/gallium/drivers/panfrost/pan_assemble.c +++ b/src/gallium/drivers/panfrost/pan_assemble.c @@ -77,7 +77,7 @@ panfrost_shader_compile(struct pipe_screen *pscreen, struct util_dynarray binary; util_dynarray_init(&binary, NULL); - pan_shader_compile(dev, s, &inputs, &binary, &state->info); + screen->vtbl.compile_shader(s, &inputs, &binary, &state->info); if (binary.size) { state->bin = panfrost_pool_take_ref(shader_pool, @@ -89,7 +89,7 @@ panfrost_shader_compile(struct pipe_screen *pscreen, /* Don't upload RSD for fragment shaders since they need draw-time * merging for e.g. depth/stencil/alpha */ bool upload = stage != MESA_SHADER_FRAGMENT; - screen->vtbl.prepare_rsd(dev, state, desc_pool, upload); + screen->vtbl.prepare_rsd(state, desc_pool, upload); panfrost_analyze_sysvals(state); diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index ff5f6b190e9..dea50a8b33e 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -3490,8 +3490,7 @@ panfrost_create_blend_state(struct pipe_context *pipe, } static void -prepare_rsd(struct panfrost_device *dev, - struct panfrost_shader_state *state, +prepare_rsd(struct panfrost_shader_state *state, struct panfrost_pool *pool, bool upload) { struct mali_renderer_state_packed *out = @@ -3506,8 +3505,7 @@ prepare_rsd(struct panfrost_device *dev, } pan_pack(out, RENDERER_STATE, cfg) { - pan_shader_prepare_rsd(dev, &state->info, state->bin.gpu, - &cfg); + pan_shader_prepare_rsd(&state->info, state->bin.gpu, &cfg); } } @@ -3667,6 +3665,8 @@ GENX(panfrost_cmdstream_screen_init)(struct panfrost_screen *screen) screen->vtbl.init_batch = init_batch; screen->vtbl.get_blend_shader = GENX(pan_blend_get_shader_locked); screen->vtbl.init_polygon_list = init_polygon_list; + screen->vtbl.get_compiler_options = GENX(pan_shader_get_compiler_options); + screen->vtbl.compile_shader = GENX(pan_shader_compile); GENX(pan_blitter_init)(dev, &screen->blitter.bin_pool.base, &screen->blitter.desc_pool.base); diff --git a/src/gallium/drivers/panfrost/pan_compute.c b/src/gallium/drivers/panfrost/pan_compute.c index 99c8c28b698..8b1a4265fda 100644 --- a/src/gallium/drivers/panfrost/pan_compute.c +++ b/src/gallium/drivers/panfrost/pan_compute.c @@ -44,7 +44,7 @@ panfrost_create_compute_state( const struct pipe_compute_state *cso) { struct panfrost_context *ctx = pan_context(pctx); - struct panfrost_device *dev = pan_device(pctx->screen); + struct panfrost_screen *screen = pan_screen(pctx->screen); struct panfrost_shader_variants *so = CALLOC_STRUCT(panfrost_shader_variants); so->cbase = *cso; @@ -63,7 +63,7 @@ panfrost_create_compute_state( blob_reader_init(&reader, hdr->blob, hdr->num_bytes); const struct nir_shader_compiler_options *options = - pan_shader_get_compiler_options(dev); + screen->vtbl.get_compiler_options(); so->cbase.prog = nir_deserialize(NULL, options, &reader); so->cbase.ir_type = PIPE_SHADER_IR_NIR; diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 46cd97bbf13..05ccda9c947 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -821,7 +821,7 @@ panfrost_screen_get_compiler_options(struct pipe_screen *pscreen, enum pipe_shader_ir ir, enum pipe_shader_type shader) { - return pan_shader_get_compiler_options(pan_device(pscreen)); + return pan_screen(pscreen)->vtbl.get_compiler_options(); } struct pipe_screen * diff --git a/src/gallium/drivers/panfrost/pan_screen.h b/src/gallium/drivers/panfrost/pan_screen.h index de080d33bbd..c7ab028c554 100644 --- a/src/gallium/drivers/panfrost/pan_screen.h +++ b/src/gallium/drivers/panfrost/pan_screen.h @@ -53,8 +53,7 @@ struct pan_blend_state; struct panfrost_vtable { /* Prepares the renderer state descriptor for a given compiled shader, * and if desired uploads it as well */ - void (*prepare_rsd)(struct panfrost_device *, - struct panfrost_shader_state *, + void (*prepare_rsd)(struct panfrost_shader_state *, struct panfrost_pool *, bool); /* Emits a thread local storage descriptor */ @@ -87,6 +86,13 @@ struct panfrost_vtable { /* Initialize the polygon list */ void (*init_polygon_list)(struct panfrost_batch *); + + /* Shader compilation methods */ + const nir_shader_compiler_options *(*get_compiler_options)(void); + void (*compile_shader)(nir_shader *s, + const struct panfrost_compile_inputs *inputs, + struct util_dynarray *binary, + struct pan_shader_info *info); }; struct panfrost_screen { diff --git a/src/panfrost/lib/meson.build b/src/panfrost/lib/meson.build index 8658637f607..021c8b98393 100644 --- a/src/panfrost/lib/meson.build +++ b/src/panfrost/lib/meson.build @@ -60,6 +60,7 @@ foreach ver : ['4', '5', '6', '7'] 'pan_cs.c', 'pan_indirect_dispatch.c', 'pan_indirect_draw.c', + 'pan_shader.c', 'pan_texture.c', ], include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_panfrost_hw], @@ -90,7 +91,6 @@ libpanfrost_lib_files = files( 'pan_samples.c', 'pan_tiler.c', 'pan_texture.c', - 'pan_shader.c', 'pan_scratch.c', 'pan_props.c', 'pan_util.c', diff --git a/src/panfrost/lib/pan_blend.c b/src/panfrost/lib/pan_blend.c index de0a47da684..a7a204dba27 100644 --- a/src/panfrost/lib/pan_blend.c +++ b/src/panfrost/lib/pan_blend.c @@ -521,7 +521,7 @@ GENX(pan_blend_create_shader)(const struct panfrost_device *dev, nir_builder b = nir_builder_init_simple_shader(MESA_SHADER_FRAGMENT, - pan_shader_get_compiler_options(dev), + GENX(pan_shader_get_compiler_options)(), "pan_blend(rt=%d,fmt=%s,nr_samples=%d,%s=%s)", rt, util_format_name(rt_state->format), rt_state->nr_samples, @@ -743,7 +743,7 @@ GENX(pan_blend_get_shader_locked)(const struct panfrost_device *dev, struct pan_shader_info info; - pan_shader_compile(dev, nir, &inputs, &variant->binary, &info); + GENX(pan_shader_compile)(nir, &inputs, &variant->binary, &info); variant->work_reg_count = info.work_reg_count; diff --git a/src/panfrost/lib/pan_blitter.c b/src/panfrost/lib/pan_blitter.c index 69cc967dd49..a17fab7dee1 100644 --- a/src/panfrost/lib/pan_blitter.c +++ b/src/panfrost/lib/pan_blitter.c @@ -455,7 +455,7 @@ pan_blitter_get_blit_shader(struct panfrost_device *dev, nir_builder b = nir_builder_init_simple_shader(MESA_SHADER_FRAGMENT, - pan_shader_get_compiler_options(dev), + GENX(pan_shader_get_compiler_options)(), "pan_blit(%s)", sig); b.shader->info.internal = true; @@ -607,7 +607,7 @@ pan_blitter_get_blit_shader(struct panfrost_device *dev, util_dynarray_init(&binary, NULL); - pan_shader_compile(dev, b.shader, &inputs, &binary, &info); + GENX(pan_shader_compile)(b.shader, &inputs, &binary, &info); shader = rzalloc(dev->blitter.shaders.blit, struct pan_blit_shader_data); diff --git a/src/panfrost/lib/pan_indirect_dispatch.c b/src/panfrost/lib/pan_indirect_dispatch.c index 980ac6b1792..0f013db95a0 100644 --- a/src/panfrost/lib/pan_indirect_dispatch.c +++ b/src/panfrost/lib/pan_indirect_dispatch.c @@ -159,7 +159,7 @@ GENX(pan_indirect_dispatch_init)(struct panfrost_device *dev) { nir_builder b = nir_builder_init_simple_shader(MESA_SHADER_COMPUTE, - pan_shader_get_compiler_options(dev), + GENX(pan_shader_get_compiler_options)(), "%s", "indirect_dispatch"); b.shader->info.internal = true; nir_variable_create(b.shader, nir_var_mem_ubo, @@ -226,7 +226,7 @@ GENX(pan_indirect_dispatch_init)(struct panfrost_device *dev) struct util_dynarray binary; util_dynarray_init(&binary, NULL); - pan_shader_compile(dev, b.shader, &inputs, &binary, &shader_info); + GENX(pan_shader_compile)(b.shader, &inputs, &binary, &shader_info); ralloc_free(b.shader); @@ -256,7 +256,7 @@ GENX(pan_indirect_dispatch_init)(struct panfrost_device *dev) void *rsd = dev->indirect_dispatch.descs->ptr.cpu; pan_pack(rsd, RENDERER_STATE, cfg) { - pan_shader_prepare_rsd(dev, &shader_info, address, &cfg); + pan_shader_prepare_rsd(&shader_info, address, &cfg); } void *tsd = dev->indirect_dispatch.descs->ptr.cpu + diff --git a/src/panfrost/lib/pan_indirect_draw.c b/src/panfrost/lib/pan_indirect_draw.c index ef054163405..531d3f4e43c 100644 --- a/src/panfrost/lib/pan_indirect_draw.c +++ b/src/panfrost/lib/pan_indirect_draw.c @@ -356,13 +356,13 @@ init_shader_builder(struct indirect_draw_shader_builder *builder, if (index_min_max_search) { builder->b = nir_builder_init_simple_shader(MESA_SHADER_COMPUTE, - pan_shader_get_compiler_options(dev), + GENX(pan_shader_get_compiler_options)(), "indirect_draw_min_max_index(index_size=%d)", builder->index_size); } else { builder->b = nir_builder_init_simple_shader(MESA_SHADER_COMPUTE, - pan_shader_get_compiler_options(dev), + GENX(pan_shader_get_compiler_options)(), "indirect_draw(index_size=%d%s%s%s)", builder->index_size, flags & PAN_INDIRECT_DRAW_HAS_PSIZ ? @@ -1076,7 +1076,7 @@ create_indirect_draw_shader(struct panfrost_device *dev, struct util_dynarray binary; util_dynarray_init(&binary, NULL); - pan_shader_compile(dev, b->shader, &inputs, &binary, &shader_info); + GENX(pan_shader_compile)(b->shader, &inputs, &binary, &shader_info); assert(!shader_info.tls_size); assert(!shader_info.wls_size); @@ -1102,7 +1102,7 @@ create_indirect_draw_shader(struct panfrost_device *dev, util_dynarray_fini(&binary); pan_pack(state, RENDERER_STATE, cfg) { - pan_shader_prepare_rsd(dev, &shader_info, address, &cfg); + pan_shader_prepare_rsd(&shader_info, address, &cfg); } pthread_mutex_unlock(&dev->indirect_draw_shaders.lock); diff --git a/src/panfrost/lib/pan_shader.c b/src/panfrost/lib/pan_shader.c index f1d4d4402da..8f7d43ecc5f 100644 --- a/src/panfrost/lib/pan_shader.c +++ b/src/panfrost/lib/pan_shader.c @@ -25,16 +25,20 @@ #include "pan_device.h" #include "pan_shader.h" +#if PAN_ARCH <= 5 #include "panfrost/midgard/midgard_compile.h" +#else #include "panfrost/bifrost/bifrost_compile.h" +#endif const nir_shader_compiler_options * -pan_shader_get_compiler_options(const struct panfrost_device *dev) +GENX(pan_shader_get_compiler_options)(void) { - if (pan_is_bifrost(dev)) - return &bifrost_nir_options; - +#if PAN_ARCH >= 6 + return &bifrost_nir_options; +#else return &midgard_nir_options; +#endif } static enum pipe_format @@ -83,7 +87,7 @@ varying_format(nir_alu_type t, unsigned ncomps) static void collect_varyings(nir_shader *s, nir_variable_mode varying_mode, struct pan_shader_varying *varyings, - unsigned *varying_count, bool is_bifrost) + unsigned *varying_count) { *varying_count = 0; @@ -116,7 +120,7 @@ collect_varyings(nir_shader *s, nir_variable_mode varying_mode, type = nir_alu_type_get_base_type(type); /* Can't do type conversion since GLSL IR packs in funny ways */ - if (is_bifrost && var->data.interpolation == INTERP_MODE_FLAT) + if (PAN_ARCH >= 6 && var->data.interpolation == INTERP_MODE_FLAT) type = nir_type_uint; /* Demote to fp16 where possible. int16 varyings are TODO as the hw @@ -145,6 +149,7 @@ collect_varyings(nir_shader *s, nir_variable_mode varying_mode, } } +#if PAN_ARCH >= 6 static enum mali_bifrost_register_file_format bifrost_blend_type_from_nir(nir_alu_type nir_type) { @@ -168,20 +173,21 @@ bifrost_blend_type_from_nir(nir_alu_type nir_type) return 0; } } +#endif void -pan_shader_compile(const struct panfrost_device *dev, - nir_shader *s, - const struct panfrost_compile_inputs *inputs, - struct util_dynarray *binary, - struct pan_shader_info *info) +GENX(pan_shader_compile)(nir_shader *s, + const struct panfrost_compile_inputs *inputs, + struct util_dynarray *binary, + struct pan_shader_info *info) { memset(info, 0, sizeof(*info)); - if (pan_is_bifrost(dev)) - bifrost_compile_shader_nir(s, inputs, binary, info); - else - midgard_compile_shader_nir(s, inputs, binary, info); +#if PAN_ARCH >= 6 + bifrost_compile_shader_nir(s, inputs, binary, info); +#else + midgard_compile_shader_nir(s, inputs, binary, info); +#endif info->stage = s->info.stage; info->contains_barrier = s->info.uses_memory_barrier || @@ -192,20 +198,22 @@ pan_shader_compile(const struct panfrost_device *dev, case MESA_SHADER_VERTEX: info->attribute_count = util_bitcount64(s->info.inputs_read); +#if PAN_ARCH <= 5 bool vertex_id = BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_VERTEX_ID_ZERO_BASE); - if (vertex_id && !pan_is_bifrost(dev)) + if (vertex_id) info->attribute_count = MAX2(info->attribute_count, PAN_VERTEX_ID + 1); bool instance_id = BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_INSTANCE_ID); - if (instance_id && !pan_is_bifrost(dev)) + if (instance_id) info->attribute_count = MAX2(info->attribute_count, PAN_INSTANCE_ID + 1); +#endif info->vs.writes_point_size = s->info.outputs_written & (1 << VARYING_SLOT_PSIZ); collect_varyings(s, nir_var_shader_out, info->varyings.output, - &info->varyings.output_count, pan_is_bifrost(dev)); + &info->varyings.output_count); break; case MESA_SHADER_FRAGMENT: if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) @@ -265,7 +273,7 @@ pan_shader_compile(const struct panfrost_device *dev, info->fs.reads_helper_invocation = BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_HELPER_INVOCATION); collect_varyings(s, nir_var_shader_in, info->varyings.input, - &info->varyings.input_count, pan_is_bifrost(dev)); + &info->varyings.input_count); break; case MESA_SHADER_COMPUTE: info->wls_size = s->info.shared_size; @@ -287,11 +295,11 @@ pan_shader_compile(const struct panfrost_device *dev, info->sampler_count = info->texture_count = BITSET_LAST_BIT(s->info.textures_used); +#if PAN_ARCH >= 6 /* This is "redundant" information, but is needed in a draw-time hot path */ - if (pan_is_bifrost(dev)) { - for (unsigned i = 0; i < ARRAY_SIZE(info->bifrost.blend); ++i) { - info->bifrost.blend[i].format = - bifrost_blend_type_from_nir(info->bifrost.blend[i].type); - } + for (unsigned i = 0; i < ARRAY_SIZE(info->bifrost.blend); ++i) { + info->bifrost.blend[i].format = + bifrost_blend_type_from_nir(info->bifrost.blend[i].type); } +#endif } diff --git a/src/panfrost/lib/pan_shader.h b/src/panfrost/lib/pan_shader.h index ba9ce2facdb..fbf88b972f7 100644 --- a/src/panfrost/lib/pan_shader.h +++ b/src/panfrost/lib/pan_shader.h @@ -33,16 +33,17 @@ struct panfrost_device; +#ifdef PAN_ARCH const nir_shader_compiler_options * -pan_shader_get_compiler_options(const struct panfrost_device *dev); +GENX(pan_shader_get_compiler_options)(void); void -pan_shader_compile(const struct panfrost_device *dev, - nir_shader *nir, - const struct panfrost_compile_inputs *inputs, - struct util_dynarray *binary, - struct pan_shader_info *info); +GENX(pan_shader_compile)(nir_shader *nir, + const struct panfrost_compile_inputs *inputs, + struct util_dynarray *binary, + struct pan_shader_info *info); +#if PAN_ARCH <= 5 static inline void pan_shader_prepare_midgard_rsd(const struct pan_shader_info *info, struct MALI_RENDERER_STATE *rsd) @@ -67,6 +68,8 @@ pan_shader_prepare_midgard_rsd(const struct pan_shader_info *info, } } +#else + /* Classify a shader into the following pixel kill categories: * * (force early, strong early): no side effects/depth/stencil/coverage writes (force) @@ -112,19 +115,18 @@ pan_shader_classify_pixel_kill_coverage(const struct pan_shader_info *info, #undef SET_PIXEL_KILL static inline void -pan_shader_prepare_bifrost_rsd(const struct panfrost_device *dev, - const struct pan_shader_info *info, +pan_shader_prepare_bifrost_rsd(const struct pan_shader_info *info, struct MALI_RENDERER_STATE *rsd) { unsigned fau_count = DIV_ROUND_UP(info->push.count, 2); rsd->preload.uniform_count = fau_count; - if (dev->arch == 7) { - rsd->properties.bifrost.shader_register_allocation = - (info->work_reg_count <= 32) ? - MALI_SHADER_REGISTER_ALLOCATION_32_PER_THREAD : - MALI_SHADER_REGISTER_ALLOCATION_64_PER_THREAD; - } +#if PAN_ARCH >= 7 + rsd->properties.bifrost.shader_register_allocation = + (info->work_reg_count <= 32) ? + MALI_SHADER_REGISTER_ALLOCATION_32_PER_THREAD : + MALI_SHADER_REGISTER_ALLOCATION_64_PER_THREAD; +#endif switch (info->stage) { case MESA_SHADER_VERTEX: @@ -135,10 +137,10 @@ pan_shader_prepare_bifrost_rsd(const struct panfrost_device *dev, case MESA_SHADER_FRAGMENT: pan_shader_classify_pixel_kill_coverage(info, rsd); - if (dev->arch > 6) { - rsd->properties.bifrost.shader_wait_dependency_6 = info->bifrost.wait_6; - rsd->properties.bifrost.shader_wait_dependency_7 = info->bifrost.wait_7; - } +#if PAN_ARCH >= 7 + rsd->properties.bifrost.shader_wait_dependency_6 = info->bifrost.wait_6; + rsd->properties.bifrost.shader_wait_dependency_7 = info->bifrost.wait_7; +#endif rsd->properties.bifrost.allow_forward_pixel_to_be_killed = !info->fs.sidefx; @@ -177,14 +179,16 @@ pan_shader_prepare_bifrost_rsd(const struct panfrost_device *dev, } } +#endif + static inline void -pan_shader_prepare_rsd(const struct panfrost_device *dev, - const struct pan_shader_info *shader_info, +pan_shader_prepare_rsd(const struct pan_shader_info *shader_info, mali_ptr shader_ptr, struct MALI_RENDERER_STATE *rsd) { - if (!pan_is_bifrost(dev)) - shader_ptr |= shader_info->midgard.first_tag; +#if PAN_ARCH <= 5 + shader_ptr |= shader_info->midgard.first_tag; +#endif rsd->shader.shader = shader_ptr; rsd->shader.attribute_count = shader_info->attribute_count; @@ -211,10 +215,12 @@ pan_shader_prepare_rsd(const struct panfrost_device *dev, shader_info->fs.sample_shading; } - if (pan_is_bifrost(dev)) - pan_shader_prepare_bifrost_rsd(dev, shader_info, rsd); - else - pan_shader_prepare_midgard_rsd(shader_info, rsd); +#if PAN_ARCH >= 6 + pan_shader_prepare_bifrost_rsd(shader_info, rsd); +#else + pan_shader_prepare_midgard_rsd(shader_info, rsd); +#endif } +#endif /* PAN_ARCH */ #endif diff --git a/src/panfrost/vulkan/panvk_vX_cs.c b/src/panfrost/vulkan/panvk_vX_cs.c index fc8b13354a9..b5dfe8ec768 100644 --- a/src/panfrost/vulkan/panvk_vX_cs.c +++ b/src/panfrost/vulkan/panvk_vX_cs.c @@ -718,12 +718,11 @@ panvk_per_arch(emit_base_fs_rsd)(const struct panvk_device *dev, const struct panvk_pipeline *pipeline, void *rsd) { - const struct panfrost_device *pdev = &dev->physical_device->pdev; const struct pan_shader_info *info = &pipeline->fs.info; pan_pack(rsd, RENDERER_STATE, cfg) { if (pipeline->fs.required) { - pan_shader_prepare_rsd(pdev, info, pipeline->fs.address, &cfg); + pan_shader_prepare_rsd(info, pipeline->fs.address, &cfg); #if PAN_ARCH == 5 /* If either depth or stencil is enabled, discard matters */ @@ -827,12 +826,10 @@ panvk_per_arch(emit_non_fs_rsd)(const struct panvk_device *dev, mali_ptr shader_ptr, void *rsd) { - const struct panfrost_device *pdev = &dev->physical_device->pdev; - assert(shader_info->stage != MESA_SHADER_FRAGMENT); pan_pack(rsd, RENDERER_STATE, cfg) { - pan_shader_prepare_rsd(pdev, shader_info, shader_ptr, &cfg); + pan_shader_prepare_rsd(shader_info, shader_ptr, &cfg); } } diff --git a/src/panfrost/vulkan/panvk_vX_meta.c b/src/panfrost/vulkan/panvk_vX_meta.c index 7b7c981feb3..888abf5ee54 100644 --- a/src/panfrost/vulkan/panvk_vX_meta.c +++ b/src/panfrost/vulkan/panvk_vX_meta.c @@ -169,7 +169,7 @@ panvk_meta_clear_attachments_shader(struct panfrost_device *pdev, struct pan_shader_info *shader_info) { nir_builder b = nir_builder_init_simple_shader(MESA_SHADER_FRAGMENT, - pan_shader_get_compiler_options(pdev), + GENX(pan_shader_get_compiler_options)(), "panvk_meta_clear_attachment(base_type=%d,rt=%d)", base_type, rt); @@ -198,7 +198,7 @@ panvk_meta_clear_attachments_shader(struct panfrost_device *pdev, struct util_dynarray binary; util_dynarray_init(&binary, NULL); - pan_shader_compile(pdev, b.shader, &inputs, &binary, shader_info); + GENX(pan_shader_compile)(b.shader, &inputs, &binary, shader_info); /* Make sure UBO words have been upgraded to push constants */ assert(shader_info->ubo_count == 1); @@ -231,7 +231,7 @@ panvk_meta_clear_attachments_emit_rsd(struct panfrost_device *pdev, assert(rt == 0); pan_pack(rsd_ptr.cpu, RENDERER_STATE, cfg) { - pan_shader_prepare_rsd(pdev, shader_info, shader, &cfg); + pan_shader_prepare_rsd(shader_info, shader, &cfg); cfg.properties.depth_source = MALI_DEPTH_SOURCE_FIXED_FUNCTION; cfg.multisample_misc.sample_mask = UINT16_MAX; cfg.multisample_misc.depth_function = MALI_FUNC_ALWAYS; diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index f0245919cb5..13c76b9da6f 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -296,7 +296,7 @@ panvk_per_arch(shader_create)(struct panvk_device *dev, module->code_size, stage, stage_info->pName, stage_info->pSpecializationInfo, - pan_shader_get_compiler_options(pdev)); + GENX(pan_shader_get_compiler_options)()); if (!nir) { vk_free2(&dev->vk.alloc, alloc, shader); return NULL; @@ -370,7 +370,7 @@ panvk_per_arch(shader_create)(struct panvk_device *dev, .sysval_ubo = sysval_ubo, }; - pan_shader_compile(pdev, nir, &inputs, &shader->binary, &shader->info); + GENX(pan_shader_compile)(nir, &inputs, &shader->binary, &shader->info); /* Patch the descriptor count */ shader->info.ubo_count =
