Browse Source

test

pull/2975/head
JPikachu 4 months ago
parent
commit
6d52c77f14
  1. 33
      src/video_core/renderer_vulkan/vk_rasterizer.cpp
  2. 8
      src/video_core/vulkan_common/vulkan_device.cpp

33
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@ -945,7 +945,6 @@ bool AccelerateDMA::BufferToImage(const Tegra::DMA::ImageCopy& copy_info,
void RasterizerVulkan::UpdateDynamicStates() { void RasterizerVulkan::UpdateDynamicStates() {
auto& regs = maxwell3d->regs; auto& regs = maxwell3d->regs;
UpdateViewportsState(regs); UpdateViewportsState(regs);
UpdateScissorsState(regs); UpdateScissorsState(regs);
UpdateDepthBias(regs); UpdateDepthBias(regs);
@ -953,19 +952,7 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateDepthBounds(regs); UpdateDepthBounds(regs);
UpdateStencilFaces(regs); UpdateStencilFaces(regs);
UpdateLineWidth(regs); UpdateLineWidth(regs);
const u8 dynamic_state = Settings::values.dyna_state.GetValue();
auto features = DynamicFeatures{
.has_extended_dynamic_state = device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0,
.has_extended_dynamic_state_2 = device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1,
.has_extended_dynamic_state_2_extra = device.IsExtExtendedDynamicState2ExtrasSupported() && dynamic_state > 1,
.has_extended_dynamic_state_3_blend = device.IsExtExtendedDynamicState3BlendingSupported() && dynamic_state > 2,
.has_extended_dynamic_state_3_enables = device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2,
.has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported(),
};
if (features.has_extended_dynamic_state) {
if (device.IsExtExtendedDynamicStateSupported()) {
UpdateCullMode(regs); UpdateCullMode(regs);
UpdateDepthCompareOp(regs); UpdateDepthCompareOp(regs);
UpdateFrontFace(regs); UpdateFrontFace(regs);
@ -976,14 +963,13 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateDepthTestEnable(regs); UpdateDepthTestEnable(regs);
UpdateDepthWriteEnable(regs); UpdateDepthWriteEnable(regs);
UpdateStencilTestEnable(regs); UpdateStencilTestEnable(regs);
if (features.has_extended_dynamic_state_2) {
if (device.IsExtExtendedDynamicState2Supported()) {
UpdatePrimitiveRestartEnable(regs); UpdatePrimitiveRestartEnable(regs);
UpdateRasterizerDiscardEnable(regs); UpdateRasterizerDiscardEnable(regs);
UpdateDepthBiasEnable(regs); UpdateDepthBiasEnable(regs);
} }
if (features.has_extended_dynamic_state_3_enables) {
if (device.IsExtExtendedDynamicState3Supported()) {
using namespace Tegra::Engines; using namespace Tegra::Engines;
if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE || if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE ||
@ -1010,20 +996,15 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateDepthClampEnable(regs); UpdateDepthClampEnable(regs);
} }
} }
if (features.has_extended_dynamic_state_2_extra) {
if (device.IsExtExtendedDynamicState2ExtrasSupported()) {
UpdateLogicOp(regs); UpdateLogicOp(regs);
} }
if (features.has_extended_dynamic_state_3_enables) {
if (device.IsExtExtendedDynamicState3Supported()) {
UpdateBlending(regs); UpdateBlending(regs);
UpdateLineStippleEnable(regs);
UpdateConservativeRasterizationMode(regs);
} }
} }
if (features.has_dynamic_vertex_input) {
if (auto* gp = pipeline_cache.CurrentGraphicsPipeline();
gp && gp->HasDynamicVertexInput()) {
UpdateVertexInput(regs);
}
if (device.IsExtVertexInputDynamicStateSupported()) {
UpdateVertexInput(regs);
} }
} }

8
src/video_core/vulkan_common/vulkan_device.cpp

@ -753,14 +753,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
Settings::values.dyna_state.SetValue(0); Settings::values.dyna_state.SetValue(0);
} }
if (Settings::values.dyna_state.GetValue() != 0) {
if (Settings::values.dyna_state.GetValue() == 0) {
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
}
}
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), first_next, dld); logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), first_next, dld);
graphics_queue = logical.GetQueue(graphics_family); graphics_queue = logical.GetQueue(graphics_family);

Loading…
Cancel
Save