Mesa (main): radv: use the common vk_framebuffer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Apr 1 07:01:29 UTC 2022
Module: Mesa
Branch: main
Commit: 7c14671535fc1d2901f0f69101d4a362cf426c61
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c14671535fc1d2901f0f69101d4a362cf426c61
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Mon Mar 28 15:54:12 2022 +0200
radv: use the common vk_framebuffer
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15612>
---
src/amd/vulkan/radv_cmd_buffer.c | 21 ++++++++-------
src/amd/vulkan/radv_device.c | 51 -----------------------------------
src/amd/vulkan/radv_meta.h | 2 +-
src/amd/vulkan/radv_meta_clear.c | 2 +-
src/amd/vulkan/radv_meta_resolve.c | 4 +--
src/amd/vulkan/radv_meta_resolve_cs.c | 4 +--
src/amd/vulkan/radv_meta_resolve_fs.c | 4 +--
src/amd/vulkan/radv_private.h | 16 ++---------
8 files changed, 21 insertions(+), 83 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index f44508fb54f..34d8a69aaec 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -35,6 +35,7 @@
#include "vk_format.h"
#include "vk_util.h"
#include "vk_enum_defines.h"
+#include "vk_common_entrypoints.h"
#include "ac_debug.h"
@@ -2418,7 +2419,7 @@ radv_load_color_clear_metadata(struct radv_cmd_buffer *cmd_buffer, struct radv_i
static void
radv_emit_fb_mip_change_flush(struct radv_cmd_buffer *cmd_buffer)
{
- struct radv_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
bool color_mip_changed = false;
@@ -2501,7 +2502,7 @@ static void
radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer)
{
int i;
- struct radv_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
bool disable_constant_encode_ac01 = false;
@@ -4377,7 +4378,7 @@ radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer, struct radv
if (attachment_info && attachment_info->attachmentCount > i) {
iview = radv_image_view_from_handle(attachment_info->pAttachments[i]);
} else {
- iview = state->framebuffer->attachments[i];
+ iview = radv_image_view_from_handle(state->framebuffer->attachments[i]);
}
state->attachments[i].iview = iview;
@@ -4604,7 +4605,7 @@ radv_BeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBegi
assert(pBeginInfo->pInheritanceInfo);
cmd_buffer->state.framebuffer =
- radv_framebuffer_from_handle(pBeginInfo->pInheritanceInfo->framebuffer);
+ vk_framebuffer_from_handle(pBeginInfo->pInheritanceInfo->framebuffer);
if (pBeginInfo->pInheritanceInfo->renderPass) {
cmd_buffer->state.pass =
@@ -5888,7 +5889,7 @@ radv_cmd_buffer_begin_subpass(struct radv_cmd_buffer *cmd_buffer, uint32_t subpa
/* When a subpass uses a VRS attachment without binding a depth/stencil attachment, we have
* to copy the VRS rates to our internal HTILE buffer.
*/
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
struct radv_image *ds_image = radv_cmd_buffer_get_vrs_image(cmd_buffer);
if (ds_image) {
@@ -5978,7 +5979,7 @@ radv_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,
{
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
RADV_FROM_HANDLE(radv_render_pass, pass, pRenderPassBeginInfo->renderPass);
- RADV_FROM_HANDLE(radv_framebuffer, framebuffer, pRenderPassBeginInfo->framebuffer);
+ RADV_FROM_HANDLE(vk_framebuffer, framebuffer, pRenderPassBeginInfo->framebuffer);
VkResult result;
cmd_buffer->state.framebuffer = framebuffer;
@@ -7951,7 +7952,7 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe
VkFramebuffer fb;
result =
- radv_CreateFramebuffer(radv_device_to_handle(cmd_buffer->device), &fb_create_info, NULL, &fb);
+ vk_common_CreateFramebuffer(radv_device_to_handle(cmd_buffer->device), &fb_create_info, NULL, &fb);
if (result != VK_SUCCESS) {
radv_DestroyRenderPass(radv_device_to_handle(cmd_buffer->device), rp, NULL);
cmd_buffer->record_result = result;
@@ -7980,12 +7981,12 @@ radv_CmdEndRendering(VkCommandBuffer commandBuffer)
{
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
struct radv_render_pass *pass = cmd_buffer->state.pass;
- struct radv_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
radv_CmdEndRenderPass2(commandBuffer, NULL);
- radv_DestroyFramebuffer(radv_device_to_handle(cmd_buffer->device),
- radv_framebuffer_to_handle(framebuffer), NULL);
+ vk_common_DestroyFramebuffer(radv_device_to_handle(cmd_buffer->device),
+ vk_framebuffer_to_handle(framebuffer), NULL);
radv_DestroyRenderPass(radv_device_to_handle(cmd_buffer->device),
radv_render_pass_to_handle(pass), NULL);
}
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 3480ee843ac..1c66290af87 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -6005,57 +6005,6 @@ radv_initialise_ds_surface(struct radv_device *device, struct radv_ds_buffer_inf
ds->db_stencil_read_base = ds->db_stencil_write_base = s_offs >> 8;
}
-VKAPI_ATTR VkResult VKAPI_CALL
-radv_CreateFramebuffer(VkDevice _device, const VkFramebufferCreateInfo *pCreateInfo,
- const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer)
-{
- RADV_FROM_HANDLE(radv_device, device, _device);
- struct radv_framebuffer *framebuffer;
- const VkFramebufferAttachmentsCreateInfo *imageless_create_info =
- vk_find_struct_const(pCreateInfo->pNext, FRAMEBUFFER_ATTACHMENTS_CREATE_INFO);
-
- assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO);
-
- size_t size = sizeof(*framebuffer);
- if (!imageless_create_info)
- size += sizeof(struct radv_image_view *) * pCreateInfo->attachmentCount;
- framebuffer =
- vk_alloc2(&device->vk.alloc, pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
- if (framebuffer == NULL)
- return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
-
- vk_object_base_init(&device->vk, &framebuffer->base, VK_OBJECT_TYPE_FRAMEBUFFER);
-
- framebuffer->attachment_count = pCreateInfo->attachmentCount;
- framebuffer->width = pCreateInfo->width;
- framebuffer->height = pCreateInfo->height;
- framebuffer->layers = pCreateInfo->layers;
-
- if (!imageless_create_info) {
- for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) {
- VkImageView _iview = pCreateInfo->pAttachments[i];
- struct radv_image_view *iview = radv_image_view_from_handle(_iview);
- framebuffer->attachments[i] = iview;
- }
- }
-
- *pFramebuffer = radv_framebuffer_to_handle(framebuffer);
- return VK_SUCCESS;
-}
-
-VKAPI_ATTR void VKAPI_CALL
-radv_DestroyFramebuffer(VkDevice _device, VkFramebuffer _fb,
- const VkAllocationCallbacks *pAllocator)
-{
- RADV_FROM_HANDLE(radv_device, device, _device);
- RADV_FROM_HANDLE(radv_framebuffer, fb, _fb);
-
- if (!fb)
- return;
- vk_object_base_finish(&fb->base);
- vk_free2(&device->vk.alloc, pAllocator, fb);
-}
-
static unsigned
radv_tex_wrap(VkSamplerAddressMode address_mode)
{
diff --git a/src/amd/vulkan/radv_meta.h b/src/amd/vulkan/radv_meta.h
index 12855ce2d4f..89391bd42b2 100644
--- a/src/amd/vulkan/radv_meta.h
+++ b/src/amd/vulkan/radv_meta.h
@@ -56,7 +56,7 @@ struct radv_meta_saved_state {
struct radv_render_pass *pass;
const struct radv_subpass *subpass;
struct radv_attachment_state *attachments;
- struct radv_framebuffer *framebuffer;
+ struct vk_framebuffer *framebuffer;
VkRect2D render_area;
VkCullModeFlags cull_mode;
diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
index 041ccb5c180..dc01a3c179e 100644
--- a/src/amd/vulkan/radv_meta_clear.c
+++ b/src/amd/vulkan/radv_meta_clear.c
@@ -1768,7 +1768,7 @@ emit_clear(struct radv_cmd_buffer *cmd_buffer, const VkClearAttachment *clear_at
const VkClearRect *clear_rect, enum radv_cmd_flush_bits *pre_flush,
enum radv_cmd_flush_bits *post_flush, uint32_t view_mask, bool ds_resolve_clear)
{
- const struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ const struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
VkImageAspectFlags aspects = clear_att->aspectMask;
diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c
index 98e33b0a5b5..27f777e6f0c 100644
--- a/src/amd/vulkan/radv_meta_resolve.c
+++ b/src/amd/vulkan/radv_meta_resolve.c
@@ -580,7 +580,7 @@ radv_CmdResolveImage2(VkCommandBuffer commandBuffer,
static void
radv_cmd_buffer_resolve_subpass_hw(struct radv_cmd_buffer *cmd_buffer)
{
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
struct radv_meta_saved_state saved_state;
@@ -767,7 +767,7 @@ void
radv_decompress_resolve_subpass_src(struct radv_cmd_buffer *cmd_buffer)
{
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
uint32_t layer_count = fb->layers;
if (subpass->view_mask)
diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c
index 183b0ff9231..95d82833ad1 100644
--- a/src/amd/vulkan/radv_meta_resolve_cs.c
+++ b/src/amd/vulkan/radv_meta_resolve_cs.c
@@ -778,7 +778,7 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_
void
radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer)
{
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
struct radv_subpass_barrier barrier;
uint32_t layer_count = fb->layers;
@@ -840,7 +840,7 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
VkImageAspectFlags aspects,
VkResolveModeFlagBits resolve_mode)
{
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
struct radv_meta_saved_state saved_state;
uint32_t layer_count = fb->layers;
diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c b/src/amd/vulkan/radv_meta_resolve_fs.c
index d1ed76dcd95..0df1d66f1c2 100644
--- a/src/amd/vulkan/radv_meta_resolve_fs.c
+++ b/src/amd/vulkan/radv_meta_resolve_fs.c
@@ -910,7 +910,7 @@ radv_meta_resolve_fragment_image(struct radv_cmd_buffer *cmd_buffer, struct radv
void
radv_cmd_buffer_resolve_subpass_fs(struct radv_cmd_buffer *cmd_buffer)
{
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
struct radv_meta_saved_state saved_state;
struct radv_subpass_barrier barrier;
@@ -963,7 +963,7 @@ radv_depth_stencil_resolve_subpass_fs(struct radv_cmd_buffer *cmd_buffer,
VkImageAspectFlags aspects,
VkResolveModeFlagBits resolve_mode)
{
- struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
+ struct vk_framebuffer *fb = cmd_buffer->state.framebuffer;
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
struct radv_meta_saved_state saved_state;
struct radv_subpass_barrier barrier;
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index e630c77e22c..648a8788e48 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -67,6 +67,7 @@
#include "vk_queue.h"
#include "vk_util.h"
#include "vk_image.h"
+#include "vk_framebuffer.h"
#include "ac_binary.h"
#include "ac_gpu_info.h"
@@ -1400,7 +1401,7 @@ struct radv_cmd_state {
struct radv_pipeline *compute_pipeline;
struct radv_pipeline *emitted_compute_pipeline;
struct radv_pipeline *rt_pipeline; /* emitted = emitted_compute_pipeline */
- struct radv_framebuffer *framebuffer;
+ struct vk_framebuffer *framebuffer;
struct radv_render_pass *pass;
const struct radv_subpass *subpass;
struct radv_dynamic_state dynamic;
@@ -2494,17 +2495,6 @@ struct radv_sampler {
uint32_t border_color_slot;
};
-struct radv_framebuffer {
- struct vk_object_base base;
- uint32_t width;
- uint32_t height;
- uint32_t layers;
-
-
- uint32_t attachment_count;
- struct radv_image_view *attachments[0];
-};
-
struct radv_subpass_barrier {
VkPipelineStageFlags2 src_stage_mask;
VkAccessFlags2 src_access_mask;
@@ -2939,8 +2929,6 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_update_template, base,
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_device_memory, base, VkDeviceMemory,
VK_OBJECT_TYPE_DEVICE_MEMORY)
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
-VK_DEFINE_NONDISP_HANDLE_CASTS(radv_framebuffer, base, VkFramebuffer,
- VK_OBJECT_TYPE_FRAMEBUFFER)
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image, base, VkImage, VK_OBJECT_TYPE_IMAGE)
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image_view, base, VkImageView,
VK_OBJECT_TYPE_IMAGE_VIEW);
More information about the mesa-commit
mailing list