Browse Source

potential fix for totk and smo for amd

wildcard-amd
wildcard 2 days ago
parent
commit
0cda02e91e
  1. 3
      src/video_core/renderer_vulkan/fixed_pipeline_state.cpp
  2. 3
      src/video_core/renderer_vulkan/fixed_pipeline_state.h
  3. 6
      src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

3
src/video_core/renderer_vulkan/fixed_pipeline_state.cpp

@ -62,6 +62,9 @@ void FixedPipelineState::Refresh(Tegra::Engines::Maxwell3D& maxwell3d, DynamicFe
extended_dynamic_state_2_logic_op.Assign(features.has_extended_dynamic_state_2_logic_op ? 1 : 0); extended_dynamic_state_2_logic_op.Assign(features.has_extended_dynamic_state_2_logic_op ? 1 : 0);
extended_dynamic_state_3_blend.Assign(features.has_extended_dynamic_state_3_blend ? 1 : 0); extended_dynamic_state_3_blend.Assign(features.has_extended_dynamic_state_3_blend ? 1 : 0);
extended_dynamic_state_3_enables.Assign(features.has_extended_dynamic_state_3_enables ? 1 : 0); extended_dynamic_state_3_enables.Assign(features.has_extended_dynamic_state_3_enables ? 1 : 0);
dynamic_state3_depth_clamp_enable.Assign(features.has_dynamic_state3_depth_clamp_enable ? 1 : 0);
dynamic_state3_logic_op_enable.Assign(features.has_dynamic_state3_logic_op_enable ? 1 : 0);
dynamic_state3_line_stipple_enable.Assign(features.has_dynamic_state3_line_stipple_enable ? 1 : 0);
dynamic_vertex_input.Assign(features.has_dynamic_vertex_input ? 1 : 0); dynamic_vertex_input.Assign(features.has_dynamic_vertex_input ? 1 : 0);
xfb_enabled.Assign(regs.transform_feedback_enabled != 0); xfb_enabled.Assign(regs.transform_feedback_enabled != 0);
ndc_minus_one_to_one.Assign(regs.depth_mode == Maxwell::DepthMode::MinusOneToOne ? 1 : 0); ndc_minus_one_to_one.Assign(regs.depth_mode == Maxwell::DepthMode::MinusOneToOne ? 1 : 0);

3
src/video_core/renderer_vulkan/fixed_pipeline_state.h

@ -208,6 +208,9 @@ struct FixedPipelineState {
BitField<12, 2, u32> tessellation_spacing; BitField<12, 2, u32> tessellation_spacing;
BitField<14, 1, u32> tessellation_clockwise; BitField<14, 1, u32> tessellation_clockwise;
BitField<15, 5, u32> patch_control_points_minus_one; BitField<15, 5, u32> patch_control_points_minus_one;
BitField<20, 1, u32> dynamic_state3_depth_clamp_enable;
BitField<21, 1, u32> dynamic_state3_logic_op_enable;
BitField<22, 1, u32> dynamic_state3_line_stipple_enable;
BitField<24, 4, Maxwell::PrimitiveTopology> topology; BitField<24, 4, Maxwell::PrimitiveTopology> topology;
BitField<28, 4, Tegra::Texture::MsaaMode> msaa_mode; BitField<28, 4, Tegra::Texture::MsaaMode> msaa_mode;

6
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@ -907,10 +907,10 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
// EDS3 - Enables (composite: per-feature) // EDS3 - Enables (composite: per-feature)
if (key.state.extended_dynamic_state_3_enables) { if (key.state.extended_dynamic_state_3_enables) {
if (device.SupportsDynamicState3DepthClampEnable()) {
if (key.state.dynamic_state3_depth_clamp_enable) {
dynamic_states.push_back(VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT); dynamic_states.push_back(VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT);
} }
if (device.SupportsDynamicState3LogicOpEnable()) {
if (key.state.dynamic_state3_logic_op_enable) {
dynamic_states.push_back(VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT); dynamic_states.push_back(VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT);
} }
if (device.SupportsDynamicState3LineRasterizationMode()) { if (device.SupportsDynamicState3LineRasterizationMode()) {
@ -919,7 +919,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
if (device.SupportsDynamicState3ConservativeRasterizationMode()) { if (device.SupportsDynamicState3ConservativeRasterizationMode()) {
dynamic_states.push_back(VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT); dynamic_states.push_back(VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT);
} }
if (device.SupportsDynamicState3LineStippleEnable()) {
if (key.state.dynamic_state3_line_stipple_enable) {
dynamic_states.push_back(VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT); dynamic_states.push_back(VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT);
} }
if (device.SupportsDynamicState3AlphaToCoverageEnable()) { if (device.SupportsDynamicState3AlphaToCoverageEnable()) {

Loading…
Cancel
Save