radv/meta: stop allocating sampler for blit operations
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35790>
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "nir/radv_meta_nir.h"
|
||||
#include "radv_meta.h"
|
||||
#include "radv_sampler.h"
|
||||
#include "vk_command_pool.h"
|
||||
|
||||
static enum glsl_sampler_dim
|
||||
@@ -366,7 +367,7 @@ blit_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image, VkI
|
||||
const VkImageSubresourceLayers *src_res = ®ion->srcSubresource;
|
||||
const VkImageSubresourceLayers *dst_res = ®ion->dstSubresource;
|
||||
struct radv_meta_saved_state saved_state;
|
||||
VkSampler sampler;
|
||||
struct radv_sampler sampler;
|
||||
|
||||
/* From the Vulkan 1.0 spec:
|
||||
*
|
||||
@@ -376,16 +377,15 @@ blit_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image, VkI
|
||||
assert(src_image->vk.samples == 1);
|
||||
assert(dst_image->vk.samples == 1);
|
||||
|
||||
radv_CreateSampler(radv_device_to_handle(device),
|
||||
&(VkSamplerCreateInfo){
|
||||
.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
|
||||
.magFilter = filter,
|
||||
.minFilter = filter,
|
||||
.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
},
|
||||
&cmd_buffer->vk.pool->alloc, &sampler);
|
||||
radv_sampler_init(device, &sampler,
|
||||
&(VkSamplerCreateInfo){
|
||||
.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
|
||||
.magFilter = filter,
|
||||
.minFilter = filter,
|
||||
.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
});
|
||||
|
||||
radv_meta_save(&saved_state, cmd_buffer,
|
||||
RADV_META_SAVE_GRAPHICS_PIPELINE | RADV_META_SAVE_CONSTANTS | RADV_META_SAVE_DESCRIPTORS);
|
||||
@@ -511,7 +511,7 @@ blit_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image, VkI
|
||||
},
|
||||
NULL);
|
||||
meta_emit_blit(cmd_buffer, &src_iview, src_image_layout, src_offset_0, src_offset_1, &dst_iview, dst_image_layout,
|
||||
dst_box, sampler);
|
||||
dst_box, radv_sampler_to_handle(&sampler));
|
||||
|
||||
radv_image_view_finish(&dst_iview);
|
||||
radv_image_view_finish(&src_iview);
|
||||
@@ -519,7 +519,7 @@ blit_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image, VkI
|
||||
|
||||
radv_meta_restore(&saved_state, cmd_buffer);
|
||||
|
||||
radv_DestroySampler(radv_device_to_handle(device), sampler, &cmd_buffer->vk.pool->alloc);
|
||||
radv_sampler_finish(device, &sampler);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
|
||||
Reference in New Issue
Block a user