mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-26 05:09:01 +02:00
[vk] ExtendedDynamicState repair #2
This commit is contained in:
parent
a18f78367d
commit
54bb5b79f8
3 changed files with 31 additions and 17 deletions
|
|
@ -909,8 +909,6 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
|
||||||
VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT,
|
VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT,
|
||||||
VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT,
|
VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT,
|
||||||
VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT,
|
VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT,
|
||||||
VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT,
|
|
||||||
VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT,
|
|
||||||
};
|
};
|
||||||
dynamic_states.insert(dynamic_states.end(), extended3.begin(), extended3.end());
|
dynamic_states.insert(dynamic_states.end(), extended3.begin(), extended3.end());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1009,13 +1009,6 @@ void RasterizerVulkan::UpdateDynamicStates() {
|
||||||
UpdateStencilFaces(regs);
|
UpdateStencilFaces(regs);
|
||||||
UpdateLineWidth(regs);
|
UpdateLineWidth(regs);
|
||||||
|
|
||||||
// Extended Dynamic States (EDS) - Controlled by dyna_state setting in vulkan_device.cpp
|
|
||||||
// User granularity levels (accumulative):
|
|
||||||
// Level 0: Core only
|
|
||||||
// Level 1: Core + EDS1
|
|
||||||
// Level 2: Core + EDS1 + EDS2
|
|
||||||
// Level 3: Core + EDS1 + EDS2 + EDS3
|
|
||||||
|
|
||||||
// EDS1: CullMode, DepthCompare, FrontFace, StencilOp, DepthBoundsTest, DepthTest, DepthWrite, StencilTest
|
// EDS1: CullMode, DepthCompare, FrontFace, StencilOp, DepthBoundsTest, DepthTest, DepthWrite, StencilTest
|
||||||
if (device.IsExtExtendedDynamicStateSupported()) {
|
if (device.IsExtExtendedDynamicStateSupported()) {
|
||||||
UpdateCullMode(regs);
|
UpdateCullMode(regs);
|
||||||
|
|
@ -1049,8 +1042,7 @@ void RasterizerVulkan::UpdateDynamicStates() {
|
||||||
if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE ||
|
if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE ||
|
||||||
device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) {
|
device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) {
|
||||||
const auto has_float = std::any_of(
|
const auto has_float = std::any_of(
|
||||||
regs.vertex_attrib_format.begin(),
|
regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(),
|
||||||
regs.vertex_attrib_format.end(),
|
|
||||||
[](const auto& attrib) {
|
[](const auto& attrib) {
|
||||||
return attrib.type == Maxwell3D::Regs::VertexAttribute::Type::Float;
|
return attrib.type == Maxwell3D::Regs::VertexAttribute::Type::Float;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1260,13 +1260,37 @@ void Device::RemoveUnsuitableExtensions() {
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
||||||
|
|
||||||
// VK_EXT_extended_dynamic_state3
|
// VK_EXT_extended_dynamic_state3
|
||||||
dynamic_state3_blending =
|
const bool supports_color_blend_enable =
|
||||||
features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable &&
|
features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable;
|
||||||
features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation &&
|
const bool supports_color_blend_equation =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation;
|
||||||
|
const bool supports_color_write_mask =
|
||||||
features.extended_dynamic_state3.extendedDynamicState3ColorWriteMask;
|
features.extended_dynamic_state3.extendedDynamicState3ColorWriteMask;
|
||||||
dynamic_state3_enables =
|
dynamic_state3_blending = supports_color_blend_enable && supports_color_blend_equation &&
|
||||||
features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable &&
|
supports_color_write_mask;
|
||||||
|
|
||||||
|
const bool supports_depth_clamp_enable =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable;
|
||||||
|
const bool supports_logic_op_enable =
|
||||||
features.extended_dynamic_state3.extendedDynamicState3LogicOpEnable;
|
features.extended_dynamic_state3.extendedDynamicState3LogicOpEnable;
|
||||||
|
const bool supports_line_raster_mode =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3LineRasterizationMode &&
|
||||||
|
extensions.line_rasterization;
|
||||||
|
const bool supports_conservative_raster_mode =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3ConservativeRasterizationMode &&
|
||||||
|
extensions.conservative_rasterization;
|
||||||
|
const bool supports_line_stipple_enable =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3LineStippleEnable &&
|
||||||
|
extensions.line_rasterization;
|
||||||
|
const bool supports_alpha_to_coverage =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3AlphaToCoverageEnable;
|
||||||
|
const bool supports_alpha_to_one =
|
||||||
|
features.extended_dynamic_state3.extendedDynamicState3AlphaToOneEnable;
|
||||||
|
|
||||||
|
dynamic_state3_enables = supports_depth_clamp_enable && supports_logic_op_enable &&
|
||||||
|
supports_line_raster_mode && supports_conservative_raster_mode &&
|
||||||
|
supports_line_stipple_enable && supports_alpha_to_coverage &&
|
||||||
|
supports_alpha_to_one;
|
||||||
|
|
||||||
extensions.extended_dynamic_state3 = dynamic_state3_blending || dynamic_state3_enables;
|
extensions.extended_dynamic_state3 = dynamic_state3_blending || dynamic_state3_enables;
|
||||||
dynamic_state3_blending = dynamic_state3_blending && extensions.extended_dynamic_state3;
|
dynamic_state3_blending = dynamic_state3_blending && extensions.extended_dynamic_state3;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue