renderer_vulkan: Don't add transform feedback flag if unsupported
This commit is contained in:
		| @@ -590,7 +590,8 @@ void BufferCacheRuntime::ReserveNullBuffer() { | |||||||
|         .pNext = nullptr, |         .pNext = nullptr, | ||||||
|         .flags = 0, |         .flags = 0, | ||||||
|         .size = 4, |         .size = 4, | ||||||
|         .usage = VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, |         .usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT | | ||||||
|  |                  VK_BUFFER_USAGE_TRANSFER_DST_BIT, | ||||||
|         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, | ||||||
|         .queueFamilyIndexCount = 0, |         .queueFamilyIndexCount = 0, | ||||||
|         .pQueueFamilyIndices = nullptr, |         .pQueueFamilyIndices = nullptr, | ||||||
|   | |||||||
| @@ -38,18 +38,20 @@ size_t Region(size_t iterator) noexcept { | |||||||
| StagingBufferPool::StagingBufferPool(const Device& device_, MemoryAllocator& memory_allocator_, | StagingBufferPool::StagingBufferPool(const Device& device_, MemoryAllocator& memory_allocator_, | ||||||
|                                      Scheduler& scheduler_) |                                      Scheduler& scheduler_) | ||||||
|     : device{device_}, memory_allocator{memory_allocator_}, scheduler{scheduler_} { |     : device{device_}, memory_allocator{memory_allocator_}, scheduler{scheduler_} { | ||||||
|     const VkBufferCreateInfo stream_ci = { |     VkBufferCreateInfo stream_ci = { | ||||||
|         .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, |         .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, | ||||||
|         .pNext = nullptr, |         .pNext = nullptr, | ||||||
|         .flags = 0, |         .flags = 0, | ||||||
|         .size = STREAM_BUFFER_SIZE, |         .size = STREAM_BUFFER_SIZE, | ||||||
|         .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | |         .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | | ||||||
|                  VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | |                  VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, | ||||||
|                  VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, |  | ||||||
|         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, | ||||||
|         .queueFamilyIndexCount = 0, |         .queueFamilyIndexCount = 0, | ||||||
|         .pQueueFamilyIndices = nullptr, |         .pQueueFamilyIndices = nullptr, | ||||||
|     }; |     }; | ||||||
|  |     if (device.IsExtTransformFeedbackSupported()) { | ||||||
|  |         stream_ci.usage |= VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT; | ||||||
|  |     } | ||||||
|     stream_buffer = memory_allocator.CreateBuffer(stream_ci, MemoryUsage::Stream); |     stream_buffer = memory_allocator.CreateBuffer(stream_ci, MemoryUsage::Stream); | ||||||
|     if (device.HasDebuggingToolAttached()) { |     if (device.HasDebuggingToolAttached()) { | ||||||
|         stream_buffer.SetObjectNameEXT("Stream Buffer"); |         stream_buffer.SetObjectNameEXT("Stream Buffer"); | ||||||
| @@ -164,19 +166,21 @@ std::optional<StagingBufferRef> StagingBufferPool::TryGetReservedBuffer(size_t s | |||||||
| StagingBufferRef StagingBufferPool::CreateStagingBuffer(size_t size, MemoryUsage usage, | StagingBufferRef StagingBufferPool::CreateStagingBuffer(size_t size, MemoryUsage usage, | ||||||
|                                                         bool deferred) { |                                                         bool deferred) { | ||||||
|     const u32 log2 = Common::Log2Ceil64(size); |     const u32 log2 = Common::Log2Ceil64(size); | ||||||
|     const VkBufferCreateInfo buffer_ci = { |     VkBufferCreateInfo buffer_ci = { | ||||||
|         .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, |         .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, | ||||||
|         .pNext = nullptr, |         .pNext = nullptr, | ||||||
|         .flags = 0, |         .flags = 0, | ||||||
|         .size = 1ULL << log2, |         .size = 1ULL << log2, | ||||||
|         .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | |         .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | | ||||||
|                  VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | |                  VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | | ||||||
|                  VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | |                  VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, | ||||||
|                  VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, |  | ||||||
|         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |         .sharingMode = VK_SHARING_MODE_EXCLUSIVE, | ||||||
|         .queueFamilyIndexCount = 0, |         .queueFamilyIndexCount = 0, | ||||||
|         .pQueueFamilyIndices = nullptr, |         .pQueueFamilyIndices = nullptr, | ||||||
|     }; |     }; | ||||||
|  |     if (device.IsExtTransformFeedbackSupported()) { | ||||||
|  |         buffer_ci.usage |= VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT; | ||||||
|  |     } | ||||||
|     vk::Buffer buffer = memory_allocator.CreateBuffer(buffer_ci, usage); |     vk::Buffer buffer = memory_allocator.CreateBuffer(buffer_ci, usage); | ||||||
|     if (device.HasDebuggingToolAttached()) { |     if (device.HasDebuggingToolAttached()) { | ||||||
|         ++buffer_index; |         ++buffer_index; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user