Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-07-12 13:07:25 +0300
committerPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-07-12 13:07:25 +0300
commit59475fb05355246b6f59419aef0930aa7f2913a9 (patch)
treee4123158825458dda7536f16fdb20159034de2fc
parentd3c8d210471446f7b00c74f3b117d60f65cc4d08 (diff)
[dxvk] Remove cull mode and front face from pipeline statedynamic-raster-state
And bump state cache version to v14.
-rw-r--r--src/dxvk/dxvk_context.cpp2
-rw-r--r--src/dxvk/dxvk_graphics.cpp14
-rw-r--r--src/dxvk/dxvk_graphics_state.h16
-rw-r--r--src/dxvk/dxvk_state_cache.cpp10
-rw-r--r--src/dxvk/dxvk_state_cache_types.h30
5 files changed, 38 insertions, 34 deletions
diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp
index 3218771a..0e722406 100644
--- a/src/dxvk/dxvk_context.cpp
+++ b/src/dxvk/dxvk_context.cpp
@@ -2438,8 +2438,6 @@ namespace dxvk {
rs.depthClipEnable,
rs.depthBiasEnable,
rs.polygonMode,
- rs.cullMode,
- rs.frontFace,
rs.sampleCount,
rs.conservativeMode);
diff --git a/src/dxvk/dxvk_graphics.cpp b/src/dxvk/dxvk_graphics.cpp
index 92d26a6b..fb38c3de 100644
--- a/src/dxvk/dxvk_graphics.cpp
+++ b/src/dxvk/dxvk_graphics.cpp
@@ -395,8 +395,6 @@ namespace dxvk {
// Set up basic rasterization state
rsInfo.depthClampEnable = VK_TRUE;
rsInfo.polygonMode = state.rs.polygonMode();
- rsInfo.cullMode = state.rs.cullMode();
- rsInfo.frontFace = state.rs.frontFace();
rsInfo.depthBiasEnable = state.rs.depthBiasEnable();
rsInfo.lineWidth = 1.0f;
@@ -1096,22 +1094,10 @@ namespace dxvk {
}
// Log rasterizer state
- std::string cullMode;
-
- switch (state.rs.cullMode()) {
- case VK_CULL_MODE_NONE: cullMode = "VK_CULL_MODE_NONE"; break;
- case VK_CULL_MODE_BACK_BIT: cullMode = "VK_CULL_MODE_BACK_BIT"; break;
- case VK_CULL_MODE_FRONT_BIT: cullMode = "VK_CULL_MODE_FRONT_BIT"; break;
- case VK_CULL_MODE_FRONT_AND_BACK: cullMode = "VK_CULL_MODE_FRONT_AND_BACK"; break;
- default: cullMode = str::format(state.rs.cullMode());
- }
-
sstr << "Rasterizer state:" << std::endl
<< " depth clip: " << (state.rs.depthClipEnable() ? "yes" : "no") << std::endl
<< " depth bias: " << (state.rs.depthBiasEnable() ? "yes" : "no") << std::endl
<< " polygon mode: " << state.rs.polygonMode() << std::endl
- << " cull mode: " << cullMode << std::endl
- << " front face: " << state.rs.frontFace() << std::endl
<< " conservative: " << (state.rs.conservativeMode() == VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT ? "no" : "yes") << std::endl;
// Log multisample state
diff --git a/src/dxvk/dxvk_graphics_state.h b/src/dxvk/dxvk_graphics_state.h
index 18924926..9a733999 100644
--- a/src/dxvk/dxvk_graphics_state.h
+++ b/src/dxvk/dxvk_graphics_state.h
@@ -221,15 +221,11 @@ namespace dxvk {
VkBool32 depthClipEnable,
VkBool32 depthBiasEnable,
VkPolygonMode polygonMode,
- VkCullModeFlags cullMode,
- VkFrontFace frontFace,
VkSampleCountFlags sampleCount,
VkConservativeRasterizationModeEXT conservativeMode)
: m_depthClipEnable (uint16_t(depthClipEnable)),
m_depthBiasEnable (uint16_t(depthBiasEnable)),
m_polygonMode (uint16_t(polygonMode)),
- m_cullMode (uint16_t(cullMode)),
- m_frontFace (uint16_t(frontFace)),
m_sampleCount (uint16_t(sampleCount)),
m_conservativeMode(uint16_t(conservativeMode)),
m_reserved (0) { }
@@ -246,14 +242,6 @@ namespace dxvk {
return VkPolygonMode(m_polygonMode);
}
- VkCullModeFlags cullMode() const {
- return VkCullModeFlags(m_cullMode);
- }
-
- VkFrontFace frontFace() const {
- return VkFrontFace(m_frontFace);
- }
-
VkSampleCountFlags sampleCount() const {
return VkSampleCountFlags(m_sampleCount);
}
@@ -267,11 +255,9 @@ namespace dxvk {
uint16_t m_depthClipEnable : 1;
uint16_t m_depthBiasEnable : 1;
uint16_t m_polygonMode : 2;
- uint16_t m_cullMode : 2;
- uint16_t m_frontFace : 1;
uint16_t m_sampleCount : 5;
uint16_t m_conservativeMode : 2;
- uint16_t m_reserved : 2;
+ uint16_t m_reserved : 5;
};
diff --git a/src/dxvk/dxvk_state_cache.cpp b/src/dxvk/dxvk_state_cache.cpp
index 5c147192..63a982c3 100644
--- a/src/dxvk/dxvk_state_cache.cpp
+++ b/src/dxvk/dxvk_state_cache.cpp
@@ -73,6 +73,16 @@ namespace dxvk {
return true;
}
+ if (version < 14) {
+ DxvkRsInfoV13 v13;
+
+ if (!read(v13))
+ return false;
+
+ data = v13.convert();
+ return true;
+ }
+
return read(data);
}
diff --git a/src/dxvk/dxvk_state_cache_types.h b/src/dxvk/dxvk_state_cache_types.h
index 1e65b426..71577b1a 100644
--- a/src/dxvk/dxvk_state_cache_types.h
+++ b/src/dxvk/dxvk_state_cache_types.h
@@ -52,7 +52,7 @@ namespace dxvk {
*/
struct DxvkStateCacheHeader {
char magic[4] = { 'D', 'X', 'V', 'K' };
- uint32_t version = 13;
+ uint32_t version = 14;
uint32_t entrySize = 0; /* no longer meaningful */
};
@@ -143,11 +143,35 @@ namespace dxvk {
VkBool32(m_depthClipEnable),
VkBool32(m_depthBiasEnable),
VkPolygonMode(m_polygonMode),
- VkCullModeFlags(m_cullMode),
- VkFrontFace(m_frontFace),
VkSampleCountFlags(m_sampleCount),
VkConservativeRasterizationModeEXT(m_conservativeMode));
}
};
+
+
+ class DxvkRsInfoV13 {
+
+ public:
+
+ uint16_t m_depthClipEnable : 1;
+ uint16_t m_depthBiasEnable : 1;
+ uint16_t m_polygonMode : 2;
+ uint16_t m_cullMode : 2;
+ uint16_t m_frontFace : 1;
+ uint16_t m_sampleCount : 5;
+ uint16_t m_conservativeMode : 2;
+ uint16_t m_reserved : 2;
+
+ DxvkRsInfo convert() const {
+ return DxvkRsInfo(
+ VkBool32(m_depthClipEnable),
+ VkBool32(m_depthBiasEnable),
+ VkPolygonMode(m_polygonMode),
+ VkSampleCountFlags(m_sampleCount),
+ VkConservativeRasterizationModeEXT(m_conservativeMode));
+ }
+
+ };
+
}