mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 18:08:40 +02:00
radv: set RADEON_FLAG_EMULATE_SPARSE_RESIDENCY for sparse SSBO/UBO buffers
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
This commit is contained in:
parent
41fa965386
commit
a0d39a29da
1 changed files with 9 additions and 0 deletions
|
|
@ -43,6 +43,7 @@ VkResult
|
|||
radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer, bool is_internal)
|
||||
{
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
struct radv_buffer *buffer;
|
||||
|
||||
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);
|
||||
|
|
@ -67,6 +68,14 @@ radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreate
|
|||
enum radeon_bo_flag flags = RADEON_FLAG_VIRTUAL;
|
||||
uint64_t replay_address = 0;
|
||||
|
||||
if (pdev->info.compiler_info.has_smem_with_null_prt_bug &&
|
||||
(buffer->vk.create_flags & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) &&
|
||||
(buffer->vk.usage & (VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT |
|
||||
VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT))) {
|
||||
/* Emulate sparse residency for sparse buffers that might use SMEM reads. */
|
||||
flags |= RADEON_FLAG_EMULATE_SPARSE_RESIDENCY;
|
||||
}
|
||||
|
||||
if (pCreateInfo->flags & VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT) {
|
||||
flags |= RADEON_FLAG_REPLAYABLE;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue