[dxvk] Remove viewport state from graphics pipelines

And bump state cache version to v13.
This commit is contained in:
Philip Rebohle 2022-07-03 15:26:08 +02:00
parent 4b82a05e05
commit 95f7aae3e6
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
4 changed files with 56 additions and 28 deletions

View File

@ -2400,7 +2400,6 @@ namespace dxvk {
rs.polygonMode,
rs.cullMode,
rs.frontFace,
m_state.gp.state.rs.viewportCount(),
rs.sampleCount,
rs.conservativeMode);

View File

@ -223,17 +223,15 @@ namespace dxvk {
VkPolygonMode polygonMode,
VkCullModeFlags cullMode,
VkFrontFace frontFace,
uint32_t viewportCount,
VkSampleCountFlags sampleCount,
VkConservativeRasterizationModeEXT conservativeMode)
: m_depthClipEnable (uint32_t(depthClipEnable)),
m_depthBiasEnable (uint32_t(depthBiasEnable)),
m_polygonMode (uint32_t(polygonMode)),
m_cullMode (uint32_t(cullMode)),
m_frontFace (uint32_t(frontFace)),
m_viewportCount (uint32_t(viewportCount)),
m_sampleCount (uint32_t(sampleCount)),
m_conservativeMode(uint32_t(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) { }
VkBool32 depthClipEnable() const {
@ -256,10 +254,6 @@ namespace dxvk {
return VkFrontFace(m_frontFace);
}
uint32_t viewportCount() const {
return m_viewportCount;
}
VkSampleCountFlags sampleCount() const {
return VkSampleCountFlags(m_sampleCount);
}
@ -268,21 +262,16 @@ namespace dxvk {
return VkConservativeRasterizationModeEXT(m_conservativeMode);
}
void setViewportCount(uint32_t viewportCount) {
m_viewportCount = viewportCount;
}
private:
uint32_t m_depthClipEnable : 1;
uint32_t m_depthBiasEnable : 1;
uint32_t m_polygonMode : 2;
uint32_t m_cullMode : 2;
uint32_t m_frontFace : 1;
uint32_t m_viewportCount : 5;
uint32_t m_sampleCount : 5;
uint32_t m_conservativeMode : 2;
uint32_t m_reserved : 13;
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;
};

View File

@ -62,6 +62,20 @@ namespace dxvk {
return read(data);
}
bool read(DxvkRsInfo& data, uint32_t version) {
if (version < 13) {
DxvkRsInfoV12 v12;
if (!read(v12))
return false;
data = v12.convert();
return true;
}
return read(data);
}
bool read(DxvkRtInfo& data, uint32_t version) {
// v12 introduced this field
if (version < 12)

View File

@ -51,7 +51,7 @@ namespace dxvk {
*/
struct DxvkStateCacheHeader {
char magic[4] = { 'D', 'X', 'V', 'K' };
uint32_t version = 12;
uint32_t version = 13;
uint32_t entrySize = 0; /* no longer meaningful */
};
@ -123,4 +123,30 @@ namespace dxvk {
}
};
class DxvkRsInfoV12 {
public:
uint32_t m_depthClipEnable : 1;
uint32_t m_depthBiasEnable : 1;
uint32_t m_polygonMode : 2;
uint32_t m_cullMode : 2;
uint32_t m_frontFace : 1;
uint32_t m_viewportCount : 5;
uint32_t m_sampleCount : 5;
uint32_t m_conservativeMode : 2;
uint32_t m_reserved : 13;
DxvkRsInfo convert() const {
return DxvkRsInfo(
VkBool32(m_depthClipEnable),
VkBool32(m_depthBiasEnable),
VkPolygonMode(m_polygonMode),
VkCullModeFlags(m_cullMode),
VkFrontFace(m_frontFace),
VkSampleCountFlags(m_sampleCount),
VkConservativeRasterizationModeEXT(m_conservativeMode));
}
};
}