radv: add radv_fmask_color_expand()
Similar to radv_fmask_decompress()/radv_fast_clear_eliminate() helpers. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33639>
This commit is contained in:
committed by
Marge Bot
parent
aaf634cc24
commit
7bb3a2363d
@@ -219,8 +219,10 @@ void radv_fast_clear_flush_image_inplace(struct radv_cmd_buffer *cmd_buffer, str
|
||||
void radv_decompress_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange);
|
||||
void radv_retile_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image);
|
||||
void radv_expand_fmask_image_inplace(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange);
|
||||
|
||||
void radv_fmask_color_expand(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange);
|
||||
|
||||
void radv_copy_vrs_htile(struct radv_cmd_buffer *cmd_buffer, struct radv_image_view *vrs_iview, const VkRect2D *rect,
|
||||
struct radv_image *dst_image, uint64_t htile_va, bool read_htile_value);
|
||||
|
||||
|
||||
@@ -91,9 +91,9 @@ get_pipeline(struct radv_device *device, uint32_t samples_log2, VkPipeline *pipe
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
radv_expand_fmask_image_inplace(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange)
|
||||
static void
|
||||
radv_process_color_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange)
|
||||
{
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
struct radv_meta_saved_state saved_state;
|
||||
@@ -167,3 +167,15 @@ radv_expand_fmask_image_inplace(struct radv_cmd_buffer *cmd_buffer, struct radv_
|
||||
/* Re-initialize FMASK in fully expanded mode. */
|
||||
cmd_buffer->state.flush_bits |= radv_init_fmask(cmd_buffer, image, subresourceRange);
|
||||
}
|
||||
|
||||
void
|
||||
radv_fmask_color_expand(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *subresourceRange)
|
||||
{
|
||||
struct radv_barrier_data barrier = {0};
|
||||
|
||||
barrier.layout_transitions.fmask_color_expand = 1;
|
||||
radv_describe_layout_transition(cmd_buffer, &barrier);
|
||||
|
||||
radv_process_color_image(cmd_buffer, image, subresourceRange);
|
||||
}
|
||||
|
||||
@@ -12705,11 +12705,7 @@ radv_handle_color_image_transition(struct radv_cmd_buffer *cmd_buffer, struct ra
|
||||
}
|
||||
|
||||
if (dst_fmask_comp == RADV_FMASK_COMPRESSION_NONE) {
|
||||
struct radv_barrier_data barrier = {0};
|
||||
barrier.layout_transitions.fmask_color_expand = 1;
|
||||
radv_describe_layout_transition(cmd_buffer, &barrier);
|
||||
|
||||
radv_expand_fmask_image_inplace(cmd_buffer, image, range);
|
||||
radv_fmask_color_expand(cmd_buffer, image, range);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user