diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 13e480c3ca2..9e9a9af57d6 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -20,7 +20,7 @@ #include "panvk_cmd_buffer.h" #include "panvk_cmd_desc_state.h" #include "panvk_cmd_draw.h" -#include "panvk_cmd_fb_preload.h" +#include "panvk_cmd_frame_shaders.h" #include "panvk_cmd_meta.h" #include "panvk_cmd_precomp.h" #include "panvk_cmd_ts.h" @@ -1307,7 +1307,7 @@ get_fb_descs(struct panvk_cmd_buffer *cmdbuf) .tiler_ctx = &tiler_ctx, }; - VkResult result = panvk_per_arch(cmd_fb_preload)( + VkResult result = panvk_per_arch(cmd_get_frame_shaders)( cmdbuf, fbd_info.fb, fbd_info.load, &fbd_info.frame_shaders); if (result != VK_SUCCESS) return result; @@ -1347,7 +1347,7 @@ get_fb_descs(struct panvk_cmd_buffer *cmdbuf) fbd_info.store = ir_pass == PANVK_IR_LAST_PASS ? &render->fb.store : &render->fb.spill.store; - VkResult result = panvk_per_arch(cmd_fb_preload)( + VkResult result = panvk_per_arch(cmd_get_frame_shaders)( cmdbuf, fbd_info.fb, fbd_info.load, &fbd_info.frame_shaders); if (result != VK_SUCCESS) return result; diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c index 8459c25be54..87fe6f4b944 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c @@ -16,7 +16,7 @@ #include "panvk_cmd_buffer.h" #include "panvk_cmd_desc_state.h" #include "panvk_cmd_draw.h" -#include "panvk_cmd_fb_preload.h" +#include "panvk_cmd_frame_shaders.h" #include "panvk_cmd_pool.h" #include "panvk_cmd_push_constant.h" #include "panvk_device.h" @@ -154,9 +154,8 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf) }; struct pan_fb_frame_shaders fs; - VkResult result = panvk_per_arch(cmd_fb_preload)(cmdbuf, - &render->fb.layout, - fbd_info.load, &fs); + VkResult result = panvk_per_arch(cmd_get_frame_shaders)( + cmdbuf, &render->fb.layout, fbd_info.load, &fs); if (result != VK_SUCCESS) return; diff --git a/src/panfrost/vulkan/meson.build b/src/panfrost/vulkan/meson.build index 1c66e9c4dfc..b0cc0f133cb 100644 --- a/src/panfrost/vulkan/meson.build +++ b/src/panfrost/vulkan/meson.build @@ -105,10 +105,10 @@ common_per_arch_files = [ panvk_tracepoints[0], 'panvk_vX_blend.c', 'panvk_vX_buffer_view.c', - 'panvk_vX_cmd_fb_preload.c', 'panvk_vX_cmd_desc_state.c', 'panvk_vX_cmd_dispatch.c', 'panvk_vX_cmd_draw.c', + 'panvk_vX_cmd_frame_shaders.c', 'panvk_vX_cmd_meta.c', 'panvk_vX_cmd_push_constant.c', 'panvk_vX_descriptor_set.c', diff --git a/src/panfrost/vulkan/panvk_cmd_fb_preload.h b/src/panfrost/vulkan/panvk_cmd_fb_preload.h deleted file mode 100644 index c52334b19c7..00000000000 --- a/src/panfrost/vulkan/panvk_cmd_fb_preload.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright © 2021 Collabora Ltd. - * SPDX-License-Identifier: MIT - */ - -#ifndef PANVK_FB_PRELOAD_H -#define PANVK_FB_PRELOAD_H - -#include "panvk_cmd_buffer.h" -#include "pan_desc.h" -#include "pan_fb.h" - -VkResult panvk_per_arch(cmd_fb_preload)(struct panvk_cmd_buffer *cmdbuf, - const struct pan_fb_layout *fb, - const struct pan_fb_load *load, - struct pan_fb_frame_shaders *fs_out); - -#endif diff --git a/src/panfrost/vulkan/panvk_cmd_frame_shaders.h b/src/panfrost/vulkan/panvk_cmd_frame_shaders.h new file mode 100644 index 00000000000..551d7a9f74f --- /dev/null +++ b/src/panfrost/vulkan/panvk_cmd_frame_shaders.h @@ -0,0 +1,19 @@ +/* + * Copyright © 2021 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ + +#ifndef PANVK_FB_PRELOAD_H +#define PANVK_FB_PRELOAD_H + +#include "panvk_cmd_buffer.h" +#include "pan_desc.h" +#include "pan_fb.h" + +VkResult +panvk_per_arch(cmd_get_frame_shaders)(struct panvk_cmd_buffer *cmdbuf, + const struct pan_fb_layout *fb, + const struct pan_fb_load *load, + struct pan_fb_frame_shaders *fs_out); + +#endif diff --git a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c b/src/panfrost/vulkan/panvk_vX_cmd_frame_shaders.c similarity index 92% rename from src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c rename to src/panfrost/vulkan/panvk_vX_cmd_frame_shaders.c index b2a11a86adc..6392f0bb7ec 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_frame_shaders.c @@ -3,8 +3,9 @@ * SPDX-License-Identifier: MIT */ +#include "panvk_cmd_frame_shaders.h" + #include "panvk_cmd_alloc.h" -#include "panvk_cmd_fb_preload.h" #include "panvk_image_view.h" #include "panvk_meta.h" #include "panvk_shader.h" @@ -17,24 +18,24 @@ PRAGMA_DIAGNOSTIC_PUSH PRAGMA_DIAGNOSTIC_ERROR(-Wpadded) -struct panvk_fb_preload_shader_key { +struct panvk_frame_shader_key { enum panvk_meta_object_key_type type; struct pan_fb_shader_key key; }; PRAGMA_DIAGNOSTIC_POP -struct panvk_fb_preload_sysvals { +struct panvk_fb_sysvals { struct pan_fb_bbox render_area_px; float clear_depth; uint8_t clear_stencil; uint8_t _pad; uint16_t layer_id; } __attribute__((aligned(FAU_WORD_SIZE))); -static_assert(sizeof(struct panvk_fb_preload_sysvals) % FAU_WORD_SIZE == 0, - "panvk_fb_preload_sysvals is FAU_WORD-aligned."); +static_assert(sizeof(struct panvk_fb_sysvals) % FAU_WORD_SIZE == 0, + "panvk_fb_sysvals is FAU_WORD-aligned."); static uint32_t -key_locations_written(const struct panvk_fb_preload_shader_key *key) +key_locations_written(const struct panvk_frame_shader_key *key) { uint32_t locations = 0; for (unsigned rt = 0; rt < PAN_MAX_RTS; rt++) { @@ -63,7 +64,7 @@ tex_index_for_loc(gl_frag_result loc, uint32_t locations_written) static bool compact_tex_indices(nir_builder *b, nir_tex_instr *tex, - const struct panvk_fb_preload_shader_key *key) + const struct panvk_frame_shader_key *key) { const uint32_t tex_idx = tex_index_for_loc(tex->texture_index, key_locations_written(key)); @@ -89,7 +90,7 @@ load_sysval(nir_builder *b, unsigned num_components, { assert((offset * 8) % bit_size == 0); ASSERTED unsigned size = (num_components * bit_size) / 8; - assert(offset + size <= sizeof(struct panvk_fb_preload_sysvals)); + assert(offset + size <= sizeof(struct panvk_fb_sysvals)); return nir_load_push_constant(b, num_components, bit_size, nir_imm_int(b, offset)); @@ -97,7 +98,7 @@ load_sysval(nir_builder *b, unsigned num_components, static bool lower_sysval(nir_builder *b, nir_intrinsic_instr *intr, - const struct panvk_fb_preload_shader_key *key) + const struct panvk_frame_shader_key *key) { b->cursor = nir_before_instr(&intr->instr); @@ -105,17 +106,17 @@ lower_sysval(nir_builder *b, nir_intrinsic_instr *intr, nir_def *val; switch (intr->intrinsic) { case nir_intrinsic_load_fb_render_area_pan: - offset = offsetof(struct panvk_fb_preload_sysvals, render_area_px); + offset = offsetof(struct panvk_fb_sysvals, render_area_px); val = load_sysval(b, 4, 16, offset); break; case nir_intrinsic_load_clear_value_pan: switch (nir_intrinsic_io_semantics(intr).location) { case FRAG_RESULT_DEPTH: - offset = offsetof(struct panvk_fb_preload_sysvals, clear_depth); + offset = offsetof(struct panvk_fb_sysvals, clear_depth); val = load_sysval(b, 1, 32, offset); break; case FRAG_RESULT_STENCIL: - offset = offsetof(struct panvk_fb_preload_sysvals, clear_stencil); + offset = offsetof(struct panvk_fb_sysvals, clear_stencil); val = nir_u2u32(b, load_sysval(b, 1, 8, offset)); break; default: @@ -127,7 +128,7 @@ lower_sysval(nir_builder *b, nir_intrinsic_instr *intr, if (PAN_ARCH >= 9) return false; - offset = offsetof(struct panvk_fb_preload_sysvals, layer_id); + offset = offsetof(struct panvk_fb_sysvals, layer_id); val = nir_u2u32(b, load_sysval(b, 1, 16, offset)); break; default: @@ -153,9 +154,9 @@ lower_instr(nir_builder *b, nir_instr *instr, void *cb_data) } static VkResult -get_preload_shader(struct panvk_device *dev, - const struct panvk_fb_preload_shader_key *key, - struct panvk_internal_shader **shader_out) +get_frame_shader(struct panvk_device *dev, + const struct panvk_frame_shader_key *key, + struct panvk_internal_shader **shader_out) { struct panvk_physical_device *phys_dev = to_panvk_physical_device(dev->vk.physical); @@ -302,7 +303,7 @@ get_load_image_view(const struct pan_fb_load *load, gl_frag_result location) static void fill_textures(struct panvk_cmd_buffer *cmdbuf, const struct pan_fb_load *load, - const struct panvk_fb_preload_shader_key *key, + const struct panvk_frame_shader_key *key, struct mali_texture_packed *textures) { uint32_t locations = key_locations_written(key); @@ -346,7 +347,7 @@ fill_textures(struct panvk_cmd_buffer *cmdbuf, static void fill_bds(const struct pan_fb_layout *fb, - const struct panvk_fb_preload_shader_key *key, + const struct panvk_frame_shader_key *key, struct mali_blend_packed *bds) { for (unsigned i = 0; i < fb->rt_count; i++) { @@ -383,7 +384,7 @@ fill_bds(const struct pan_fb_layout *fb, static bool always_load(const struct pan_fb_load *load, - const struct panvk_fb_preload_shader_key *key) + const struct panvk_frame_shader_key *key) { for (unsigned rt = 0; rt < PAN_MAX_RTS; rt++) { if (pan_fb_shader_key_target_written(&key->key.rts[rt]) && @@ -400,14 +401,14 @@ static VkResult cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, const struct pan_fb_layout *fb, const struct pan_fb_load *load, - const struct panvk_fb_preload_shader_key *key, + const struct panvk_frame_shader_key *key, struct pan_fb_frame_shaders *fs, struct mali_draw_packed **dcds) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); struct panvk_internal_shader *shader = NULL; - VkResult result = get_preload_shader(dev, key, &shader); + VkResult result = get_frame_shader(dev, key, &shader); if (result != VK_SUCCESS) return result; @@ -544,9 +545,9 @@ cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, uint32_t layer_count = cmdbuf->state.gfx.render.layer_count; struct pan_ptr faus = panvk_cmd_alloc_dev_mem( - cmdbuf, desc, layer_count * sizeof(struct panvk_fb_preload_sysvals), 16); + cmdbuf, desc, layer_count * sizeof(struct panvk_fb_sysvals), 16); for (uint32_t l = 0; l < layer_count; l++) { - const struct panvk_fb_preload_sysvals sysvals = { + const struct panvk_fb_sysvals sysvals = { .render_area_px = fb->render_area_px, .clear_depth = load->z.clear.depth, .clear_stencil = load->s.clear.stencil, @@ -602,14 +603,14 @@ static VkResult cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, const struct pan_fb_layout *fb, const struct pan_fb_load *load, - struct panvk_fb_preload_shader_key *key, + struct panvk_frame_shader_key *key, struct pan_fb_frame_shaders *fs, struct mali_draw_packed **dcds) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); struct panvk_internal_shader *shader = NULL; - VkResult result = get_preload_shader(dev, key, &shader); + VkResult result = get_frame_shader(dev, key, &shader); if (result != VK_SUCCESS) return result; @@ -702,8 +703,8 @@ cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, return result; struct pan_ptr faus = panvk_cmd_alloc_dev_mem( - cmdbuf, desc, sizeof(struct panvk_fb_preload_sysvals), 16); - const struct panvk_fb_preload_sysvals sysvals = { + cmdbuf, desc, sizeof(struct panvk_fb_sysvals), 16); + const struct panvk_fb_sysvals sysvals = { .render_area_px = fb->render_area_px, .clear_depth = load->z.clear.depth, .clear_stencil = load->s.clear.stencil, @@ -742,16 +743,14 @@ cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, cfg.fragment_resources = res_table.gpu | res_table_size; cfg.fragment_shader = panvk_priv_mem_dev_addr(shader->spd); cfg.fragment_fau.pointer = faus.gpu; - cfg.fragment_fau.count = - sizeof(struct panvk_fb_preload_sysvals) / FAU_WORD_SIZE; + cfg.fragment_fau.count = sizeof(struct panvk_fb_sysvals) / FAU_WORD_SIZE; cfg.thread_storage = cmdbuf->state.gfx.tsd; #else cfg.maximum_z = 1.0; cfg.shader.resources = res_table.gpu | res_table_size; cfg.shader.shader = panvk_priv_mem_dev_addr(shader->spd); cfg.shader.thread_storage = cmdbuf->state.gfx.tsd; - cfg.shader.fau_count = - sizeof(struct panvk_fb_preload_sysvals) / FAU_WORD_SIZE; + cfg.shader.fau_count = sizeof(struct panvk_fb_sysvals) / FAU_WORD_SIZE; cfg.shader.fau = faus.gpu; #endif cfg.flags_2.write_mask = rt_written; @@ -793,7 +792,7 @@ cmd_preload_zs_attachments(struct panvk_cmd_buffer *cmdbuf, struct pan_fb_frame_shaders *fs, struct mali_draw_packed **dcds) { - struct panvk_fb_preload_shader_key key = { + struct panvk_frame_shader_key key = { .type = PANVK_META_OBJECT_KEY_FB_ZS_PRELOAD_SHADER, }; if (!GENX(pan_fb_load_shader_key_fill)(&key.key, fb, load, true)) @@ -809,7 +808,7 @@ cmd_preload_color_attachments(struct panvk_cmd_buffer *cmdbuf, struct pan_fb_frame_shaders *fs, struct mali_draw_packed **dcds) { - struct panvk_fb_preload_shader_key key = { + struct panvk_frame_shader_key key = { .type = PANVK_META_OBJECT_KEY_FB_COLOR_PRELOAD_SHADER, }; if (!GENX(pan_fb_load_shader_key_fill)(&key.key, fb, load, false)) @@ -819,10 +818,10 @@ cmd_preload_color_attachments(struct panvk_cmd_buffer *cmdbuf, } VkResult -panvk_per_arch(cmd_fb_preload)(struct panvk_cmd_buffer *cmdbuf, - const struct pan_fb_layout *fb, - const struct pan_fb_load *load, - struct pan_fb_frame_shaders *fs_out) +panvk_per_arch(cmd_get_frame_shaders)(struct panvk_cmd_buffer *cmdbuf, + const struct pan_fb_layout *fb, + const struct pan_fb_load *load, + struct pan_fb_frame_shaders *fs_out) { *fs_out = (struct pan_fb_frame_shaders) { .dcd_pointer = 0 }; struct mali_draw_packed *dcds = NULL;