summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/macro/macro_hle.cpp3
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp8
-rw-r--r--src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp3
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp27
4 files changed, 38 insertions, 3 deletions
diff --git a/src/video_core/macro/macro_hle.cpp b/src/video_core/macro/macro_hle.cpp
index 3481fcd41..c08b4abb3 100644
--- a/src/video_core/macro/macro_hle.cpp
+++ b/src/video_core/macro/macro_hle.cpp
@@ -410,7 +410,8 @@ HLEMacro::HLEMacro(Engines::Maxwell3D& maxwell3d_) : maxwell3d{maxwell3d_} {
410 builders.emplace(0x3F5E74B9C9A50164ULL, 410 builders.emplace(0x3F5E74B9C9A50164ULL,
411 std::function<std::unique_ptr<CachedMacro>(Engines::Maxwell3D&)>( 411 std::function<std::unique_ptr<CachedMacro>(Engines::Maxwell3D&)>(
412 [](Engines::Maxwell3D& maxwell3d__) -> std::unique_ptr<CachedMacro> { 412 [](Engines::Maxwell3D& maxwell3d__) -> std::unique_ptr<CachedMacro> {
413 return std::make_unique<HLE_MultiDrawIndexedIndirectCount>(maxwell3d__); 413 return std::make_unique<HLE_MultiDrawIndexedIndirectCount>(
414 maxwell3d__);
414 })); 415 }));
415 builders.emplace(0xEAD26C3E2109B06BULL, 416 builders.emplace(0xEAD26C3E2109B06BULL,
416 std::function<std::unique_ptr<CachedMacro>(Engines::Maxwell3D&)>( 417 std::function<std::unique_ptr<CachedMacro>(Engines::Maxwell3D&)>(
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 3ab2defa2..da76b9a22 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -229,9 +229,13 @@ void RasterizerVulkan::DrawIndirect() {
229 const auto& params = maxwell3d->draw_manager->GetIndirectParams(); 229 const auto& params = maxwell3d->draw_manager->GetIndirectParams();
230 buffer_cache.SetDrawIndirect(&params); 230 buffer_cache.SetDrawIndirect(&params);
231 PrepareDraw(params.is_indexed, [this, &params] { 231 PrepareDraw(params.is_indexed, [this, &params] {
232 const auto [buffer, offset] = buffer_cache.GetDrawIndirectBuffer(); 232 const auto indirect_buffer = buffer_cache.GetDrawIndirectBuffer();
233 const auto& buffer = indirect_buffer.first;
234 const auto& offset = indirect_buffer.second;
233 if (params.include_count) { 235 if (params.include_count) {
234 const auto [draw_buffer, offset_base] = buffer_cache.GetDrawIndirectCount(); 236 const auto count = buffer_cache.GetDrawIndirectCount();
237 const auto& draw_buffer = count.first;
238 const auto& offset_base = count.second;
235 scheduler.Record([draw_buffer_obj = draw_buffer->Handle(), 239 scheduler.Record([draw_buffer_obj = draw_buffer->Handle(),
236 buffer_obj = buffer->Handle(), offset_base, offset, 240 buffer_obj = buffer->Handle(), offset_base, offset,
237 params](vk::CommandBuffer cmdbuf) { 241 params](vk::CommandBuffer cmdbuf) {
diff --git a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
index 202806331..66d2e6a70 100644
--- a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
+++ b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
@@ -199,6 +199,9 @@ StagingBufferRef StagingBufferPool::GetStreamBuffer(size_t size) {
199 .buffer = *stream_buffer, 199 .buffer = *stream_buffer,
200 .offset = static_cast<VkDeviceSize>(offset), 200 .offset = static_cast<VkDeviceSize>(offset),
201 .mapped_span = std::span<u8>(stream_pointer + offset, size), 201 .mapped_span = std::span<u8>(stream_pointer + offset, size),
202 .usage{},
203 .log2_level{},
204 .index{},
202 }; 205 };
203} 206}
204 207
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index ea62edb13..13d953772 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -576,6 +576,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
576 .pNext = nullptr, 576 .pNext = nullptr,
577 .extendedDynamicState2 = VK_TRUE, 577 .extendedDynamicState2 = VK_TRUE,
578 .extendedDynamicState2LogicOp = ext_extended_dynamic_state_2_extra ? VK_TRUE : VK_FALSE, 578 .extendedDynamicState2LogicOp = ext_extended_dynamic_state_2_extra ? VK_TRUE : VK_FALSE,
579 .extendedDynamicState2PatchControlPoints = VK_FALSE,
579 }; 580 };
580 SetNext(next, dynamic_state_2); 581 SetNext(next, dynamic_state_2);
581 } else { 582 } else {
@@ -587,8 +588,14 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
587 dynamic_state_3 = { 588 dynamic_state_3 = {
588 .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, 589 .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
589 .pNext = nullptr, 590 .pNext = nullptr,
591 .extendedDynamicState3TessellationDomainOrigin = VK_FALSE,
590 .extendedDynamicState3DepthClampEnable = 592 .extendedDynamicState3DepthClampEnable =
591 ext_extended_dynamic_state_3_enables ? VK_TRUE : VK_FALSE, 593 ext_extended_dynamic_state_3_enables ? VK_TRUE : VK_FALSE,
594 .extendedDynamicState3PolygonMode = VK_FALSE,
595 .extendedDynamicState3RasterizationSamples = VK_FALSE,
596 .extendedDynamicState3SampleMask = VK_FALSE,
597 .extendedDynamicState3AlphaToCoverageEnable = VK_FALSE,
598 .extendedDynamicState3AlphaToOneEnable = VK_FALSE,
592 .extendedDynamicState3LogicOpEnable = 599 .extendedDynamicState3LogicOpEnable =
593 ext_extended_dynamic_state_3_enables ? VK_TRUE : VK_FALSE, 600 ext_extended_dynamic_state_3_enables ? VK_TRUE : VK_FALSE,
594 .extendedDynamicState3ColorBlendEnable = 601 .extendedDynamicState3ColorBlendEnable =
@@ -597,6 +604,26 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
597 ext_extended_dynamic_state_3_blend ? VK_TRUE : VK_FALSE, 604 ext_extended_dynamic_state_3_blend ? VK_TRUE : VK_FALSE,
598 .extendedDynamicState3ColorWriteMask = 605 .extendedDynamicState3ColorWriteMask =
599 ext_extended_dynamic_state_3_blend ? VK_TRUE : VK_FALSE, 606 ext_extended_dynamic_state_3_blend ? VK_TRUE : VK_FALSE,
607 .extendedDynamicState3RasterizationStream = VK_FALSE,
608 .extendedDynamicState3ConservativeRasterizationMode = VK_FALSE,
609 .extendedDynamicState3ExtraPrimitiveOverestimationSize = VK_FALSE,
610 .extendedDynamicState3DepthClipEnable = VK_FALSE,
611 .extendedDynamicState3SampleLocationsEnable = VK_FALSE,
612 .extendedDynamicState3ColorBlendAdvanced = VK_FALSE,
613 .extendedDynamicState3ProvokingVertexMode = VK_FALSE,
614 .extendedDynamicState3LineRasterizationMode = VK_FALSE,
615 .extendedDynamicState3LineStippleEnable = VK_FALSE,
616 .extendedDynamicState3DepthClipNegativeOneToOne = VK_FALSE,
617 .extendedDynamicState3ViewportWScalingEnable = VK_FALSE,
618 .extendedDynamicState3ViewportSwizzle = VK_FALSE,
619 .extendedDynamicState3CoverageToColorEnable = VK_FALSE,
620 .extendedDynamicState3CoverageToColorLocation = VK_FALSE,
621 .extendedDynamicState3CoverageModulationMode = VK_FALSE,
622 .extendedDynamicState3CoverageModulationTableEnable = VK_FALSE,
623 .extendedDynamicState3CoverageModulationTable = VK_FALSE,
624 .extendedDynamicState3CoverageReductionMode = VK_FALSE,
625 .extendedDynamicState3RepresentativeFragmentTestEnable = VK_FALSE,
626 .extendedDynamicState3ShadingRateImageEnable = VK_FALSE,
600 }; 627 };
601 SetNext(next, dynamic_state_3); 628 SetNext(next, dynamic_state_3);
602 } else { 629 } else {