From e6f0c473ca000709b626d2b6c78e85b4ffdc8a49 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 20 Nov 2024 12:32:07 -0800 Subject: [PATCH] panvk: minor clean up to prepare_blend Sort the dirty states and make it clear that we use panvk_rendering_state. Constify color_attachment_samples for panvk_per_arch(blend_emit_descs). Signed-off-by: Chia-I Wu Reviewed-by: Benjamin Lee Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c | 12 ++++++------ src/panfrost/vulkan/panvk_blend.h | 3 ++- src/panfrost/vulkan/panvk_vX_blend.c | 13 ++++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index afb0f7e9e3c..140054d6997 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -488,9 +488,9 @@ index_size_to_index_type(uint32_t size) static VkResult prepare_blend(struct panvk_cmd_buffer *cmdbuf) { - bool dirty = dyn_gfx_state_dirty(cmdbuf, CB_LOGIC_OP_ENABLE) || + bool dirty = dyn_gfx_state_dirty(cmdbuf, MS_ALPHA_TO_ONE_ENABLE) || + dyn_gfx_state_dirty(cmdbuf, CB_LOGIC_OP_ENABLE) || dyn_gfx_state_dirty(cmdbuf, CB_LOGIC_OP) || - dyn_gfx_state_dirty(cmdbuf, MS_ALPHA_TO_ONE_ENABLE) || dyn_gfx_state_dirty(cmdbuf, CB_ATTACHMENT_COUNT) || dyn_gfx_state_dirty(cmdbuf, CB_COLOR_WRITE_ENABLES) || dyn_gfx_state_dirty(cmdbuf, CB_BLEND_ENABLES) || @@ -511,6 +511,7 @@ prepare_blend(struct panvk_cmd_buffer *cmdbuf) const struct panvk_shader *fs = cmdbuf->state.gfx.fs.shader; const struct pan_shader_info *fs_info = fs ? &fs->info : NULL; mali_ptr fs_code = panvk_shader_get_dev_addr(fs); + const struct panvk_rendering_state *render = &cmdbuf->state.gfx.render; struct panfrost_ptr ptr = panvk_cmd_alloc_desc_array(cmdbuf, bd_count, BLEND); struct mali_blend_packed *bds = ptr.cpu; @@ -518,10 +519,9 @@ prepare_blend(struct panvk_cmd_buffer *cmdbuf) if (bd_count && !ptr.gpu) return VK_ERROR_OUT_OF_DEVICE_MEMORY; - panvk_per_arch(blend_emit_descs)( - dev, dyns, cmdbuf->state.gfx.render.color_attachments.fmts, - cmdbuf->state.gfx.render.color_attachments.samples, fs_info, fs_code, bds, - &cmdbuf->state.gfx.cb.info); + panvk_per_arch(blend_emit_descs)(dev, dyns, render->color_attachments.fmts, + render->color_attachments.samples, fs_info, + fs_code, bds, &cmdbuf->state.gfx.cb.info); cs_move64_to(b, cs_sr_reg64(b, 50), ptr.gpu | bd_count); return VK_SUCCESS; diff --git a/src/panfrost/vulkan/panvk_blend.h b/src/panfrost/vulkan/panvk_blend.h index f98726fe760..6ecb2cd1f6a 100644 --- a/src/panfrost/vulkan/panvk_blend.h +++ b/src/panfrost/vulkan/panvk_blend.h @@ -30,7 +30,8 @@ struct panvk_blend_info { VkResult panvk_per_arch(blend_emit_descs)( struct panvk_device *dev, const struct vk_dynamic_graphics_state *dy, - const VkFormat *color_attachment_formats, uint8_t *color_attachment_samples, + const VkFormat *color_attachment_formats, + const uint8_t *color_attachment_samples, const struct pan_shader_info *fs_info, mali_ptr fs_code, struct mali_blend_packed *bds, struct panvk_blend_info *blend_info); diff --git a/src/panfrost/vulkan/panvk_vX_blend.c b/src/panfrost/vulkan/panvk_vX_blend.c index a5671cfd6a4..e32de2aecb6 100644 --- a/src/panfrost/vulkan/panvk_vX_blend.c +++ b/src/panfrost/vulkan/panvk_vX_blend.c @@ -298,11 +298,14 @@ blend_needs_shader(const struct pan_blend_state *state, unsigned rt_idx, } VkResult -panvk_per_arch(blend_emit_descs)( - struct panvk_device *dev, const struct vk_dynamic_graphics_state *dyns, - const VkFormat *color_attachment_formats, uint8_t *color_attachment_samples, - const struct pan_shader_info *fs_info, mali_ptr fs_code, - struct mali_blend_packed *bds, struct panvk_blend_info *blend_info) +panvk_per_arch(blend_emit_descs)(struct panvk_device *dev, + const struct vk_dynamic_graphics_state *dyns, + const VkFormat *color_attachment_formats, + const uint8_t *color_attachment_samples, + const struct pan_shader_info *fs_info, + mali_ptr fs_code, + struct mali_blend_packed *bds, + struct panvk_blend_info *blend_info) { const struct vk_color_blend_state *cb = &dyns->cb; struct pan_blend_state bs = {