diff options
| author | 2023-06-13 00:32:16 -0400 | |
|---|---|---|
| committer | 2023-06-13 00:59:42 -0400 | |
| commit | 925586f97bb4a2f13b602d145cdd3aa00c7177fa (patch) | |
| tree | a7bb918bf3dd173a571cb65ed3783c7d45d4be68 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #10746 from bunnei/update-android-settings (diff) | |
| download | yuzu-925586f97bb4a2f13b602d145cdd3aa00c7177fa.tar.gz yuzu-925586f97bb4a2f13b602d145cdd3aa00c7177fa.tar.xz yuzu-925586f97bb4a2f13b602d145cdd3aa00c7177fa.zip | |
buffer_cache_base: Specify buffer type in HostBindings
Avoid reinterpret-casting from void pointer since the type is already known at compile time.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.cpp | 30 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.h | 6 |
2 files changed, 16 insertions, 20 deletions
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp index d72d99899..8c33722d3 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp | |||
| @@ -501,11 +501,10 @@ void BufferCacheRuntime::BindVertexBuffer(u32 index, VkBuffer buffer, u32 offset | |||
| 501 | } | 501 | } |
| 502 | } | 502 | } |
| 503 | 503 | ||
| 504 | void BufferCacheRuntime::BindVertexBuffers(VideoCommon::HostBindings& bindings) { | 504 | void BufferCacheRuntime::BindVertexBuffers(VideoCommon::HostBindings<Buffer>& bindings) { |
| 505 | boost::container::small_vector<VkBuffer, 32> buffer_handles; | 505 | boost::container::small_vector<VkBuffer, 32> buffer_handles; |
| 506 | for (u32 index = 0; index < bindings.buffers.size(); index++) { | 506 | for (u32 index = 0; index < bindings.buffers.size(); ++index) { |
| 507 | auto& buffer = *reinterpret_cast<Buffer*>(bindings.buffers[index]); | 507 | auto handle = bindings.buffers[index]->Handle(); |
| 508 | auto handle = buffer.Handle(); | ||
| 509 | if (handle == VK_NULL_HANDLE) { | 508 | if (handle == VK_NULL_HANDLE) { |
| 510 | bindings.offsets[index] = 0; | 509 | bindings.offsets[index] = 0; |
| 511 | bindings.sizes[index] = VK_WHOLE_SIZE; | 510 | bindings.sizes[index] = VK_WHOLE_SIZE; |
| @@ -521,16 +520,13 @@ void BufferCacheRuntime::BindVertexBuffers(VideoCommon::HostBindings& bindings) | |||
| 521 | buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { | 520 | buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { |
| 522 | cmdbuf.BindVertexBuffers2EXT( | 521 | cmdbuf.BindVertexBuffers2EXT( |
| 523 | bindings.min_index, bindings.max_index - bindings.min_index, buffer_handles.data(), | 522 | bindings.min_index, bindings.max_index - bindings.min_index, buffer_handles.data(), |
| 524 | reinterpret_cast<const VkDeviceSize*>(bindings.offsets.data()), | 523 | bindings.offsets.data(), bindings.sizes.data(), bindings.strides.data()); |
| 525 | reinterpret_cast<const VkDeviceSize*>(bindings.sizes.data()), | ||
| 526 | reinterpret_cast<const VkDeviceSize*>(bindings.strides.data())); | ||
| 527 | }); | 524 | }); |
| 528 | } else { | 525 | } else { |
| 529 | scheduler.Record([bindings = bindings, | 526 | scheduler.Record([bindings = bindings, |
| 530 | buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { | 527 | buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { |
| 531 | cmdbuf.BindVertexBuffers( | 528 | cmdbuf.BindVertexBuffers(bindings.min_index, bindings.max_index - bindings.min_index, |
| 532 | bindings.min_index, bindings.max_index - bindings.min_index, buffer_handles.data(), | 529 | buffer_handles.data(), bindings.offsets.data()); |
| 533 | reinterpret_cast<const VkDeviceSize*>(bindings.offsets.data())); | ||
| 534 | }); | 530 | }); |
| 535 | } | 531 | } |
| 536 | } | 532 | } |
| @@ -556,22 +552,20 @@ void BufferCacheRuntime::BindTransformFeedbackBuffer(u32 index, VkBuffer buffer, | |||
| 556 | }); | 552 | }); |
| 557 | } | 553 | } |
| 558 | 554 | ||
| 559 | void BufferCacheRuntime::BindTransformFeedbackBuffers(VideoCommon::HostBindings& bindings) { | 555 | void BufferCacheRuntime::BindTransformFeedbackBuffers(VideoCommon::HostBindings<Buffer>& bindings) { |
| 560 | if (!device.IsExtTransformFeedbackSupported()) { | 556 | if (!device.IsExtTransformFeedbackSupported()) { |
| 561 | // Already logged in the rasterizer | 557 | // Already logged in the rasterizer |
| 562 | return; | 558 | return; |
| 563 | } | 559 | } |
| 564 | boost::container::small_vector<VkBuffer, 4> buffer_handles; | 560 | boost::container::small_vector<VkBuffer, 4> buffer_handles; |
| 565 | for (u32 index = 0; index < bindings.buffers.size(); index++) { | 561 | for (u32 index = 0; index < bindings.buffers.size(); ++index) { |
| 566 | auto& buffer = *reinterpret_cast<Buffer*>(bindings.buffers[index]); | 562 | buffer_handles.push_back(bindings.buffers[index]->Handle()); |
| 567 | buffer_handles.push_back(buffer.Handle()); | ||
| 568 | } | 563 | } |
| 569 | scheduler.Record( | 564 | scheduler.Record( |
| 570 | [bindings = bindings, buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { | 565 | [bindings = bindings, buffer_handles = buffer_handles](vk::CommandBuffer cmdbuf) { |
| 571 | cmdbuf.BindTransformFeedbackBuffersEXT( | 566 | cmdbuf.BindTransformFeedbackBuffersEXT(0, static_cast<u32>(buffer_handles.size()), |
| 572 | 0, static_cast<u32>(buffer_handles.size()), buffer_handles.data(), | 567 | buffer_handles.data(), bindings.offsets.data(), |
| 573 | reinterpret_cast<const VkDeviceSize*>(bindings.offsets.data()), | 568 | bindings.sizes.data()); |
| 574 | reinterpret_cast<const VkDeviceSize*>(bindings.sizes.data())); | ||
| 575 | }); | 569 | }); |
| 576 | } | 570 | } |
| 577 | 571 | ||
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.h b/src/video_core/renderer_vulkan/vk_buffer_cache.h index 92d3e9f32..cdeef8846 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.h +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h | |||
| @@ -97,10 +97,12 @@ public: | |||
| 97 | void BindQuadIndexBuffer(PrimitiveTopology topology, u32 first, u32 count); | 97 | void BindQuadIndexBuffer(PrimitiveTopology topology, u32 first, u32 count); |
| 98 | 98 | ||
| 99 | void BindVertexBuffer(u32 index, VkBuffer buffer, u32 offset, u32 size, u32 stride); | 99 | void BindVertexBuffer(u32 index, VkBuffer buffer, u32 offset, u32 size, u32 stride); |
| 100 | void BindVertexBuffers(VideoCommon::HostBindings& bindings); | 100 | |
| 101 | void BindVertexBuffers(VideoCommon::HostBindings<Buffer>& bindings); | ||
| 101 | 102 | ||
| 102 | void BindTransformFeedbackBuffer(u32 index, VkBuffer buffer, u32 offset, u32 size); | 103 | void BindTransformFeedbackBuffer(u32 index, VkBuffer buffer, u32 offset, u32 size); |
| 103 | void BindTransformFeedbackBuffers(VideoCommon::HostBindings& bindings); | 104 | |
| 105 | void BindTransformFeedbackBuffers(VideoCommon::HostBindings<Buffer>& bindings); | ||
| 104 | 106 | ||
| 105 | std::span<u8> BindMappedUniformBuffer([[maybe_unused]] size_t stage, | 107 | std::span<u8> BindMappedUniformBuffer([[maybe_unused]] size_t stage, |
| 106 | [[maybe_unused]] u32 binding_index, u32 size) { | 108 | [[maybe_unused]] u32 binding_index, u32 size) { |