[dxvk] Bump state cache version to v6

This commit is contained in:
Philip Rebohle 2019-09-21 13:38:33 +02:00
parent e253183bc2
commit a74eceaf46
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 49 additions and 3 deletions

View File

@ -300,6 +300,8 @@ namespace dxvk {
if (curHeader.version <= 4)
expectedSize = sizeof(DxvkStateCacheEntryV4);
else if (curHeader.version <= 5)
expectedSize = sizeof(DxvkStateCacheEntryV5);
if (curHeader.entrySize != expectedSize) {
Logger::warn("DXVK: State cache entry size changed");
@ -391,6 +393,13 @@ namespace dxvk {
convertEntryV2(v4);
return convertEntryV4(v4, entry);
} else if (version <= 5) {
DxvkStateCacheEntryV5 v5;
if (!readCacheEntryTyped(stream, v5))
return false;
return convertEntryV5(v5, entry);
} else {
return readCacheEntryTyped(stream, entry);
}
@ -428,10 +437,10 @@ namespace dxvk {
const DxvkStateCacheEntryV4& in,
DxvkStateCacheEntry& out) const {
out.shaders = in.shaders;
out.cpState = in.cpState;
out.format = in.format;
out.hash = in.hash;
out.cpState.bsBindingMask = in.cpState.bsBindingMask;
out.gpState.bsBindingMask = in.gpState.bsBindingMask;
out.gpState.iaPrimitiveTopology = in.gpState.iaPrimitiveTopology;
@ -480,6 +489,19 @@ namespace dxvk {
}
bool DxvkStateCache::convertEntryV5(
const DxvkStateCacheEntryV5& in,
DxvkStateCacheEntry& out) const {
out.shaders = in.shaders;
out.gpState = in.gpState;
out.format = in.format;
out.hash = in.hash;
out.cpState.bsBindingMask = in.cpState.bsBindingMask;
return true;
}
void DxvkStateCache::workerFunc() {
env::setThreadName("dxvk-shader");

View File

@ -159,6 +159,10 @@ namespace dxvk {
const DxvkStateCacheEntryV4& in,
DxvkStateCacheEntry& out) const;
bool convertEntryV5(
const DxvkStateCacheEntryV5& in,
DxvkStateCacheEntry& out) const;
void workerFunc();
void writerFunc();

View File

@ -52,7 +52,7 @@ namespace dxvk {
*/
struct DxvkStateCacheHeader {
char magic[4] = { 'D', 'X', 'V', 'K' };
uint32_t version = 5;
uint32_t version = 6;
uint32_t entrySize = sizeof(DxvkStateCacheEntry);
};
@ -103,13 +103,33 @@ namespace dxvk {
};
/**
* \brief Version 5 compute pipeline state
*/
struct DxvkComputePipelineStateInfoV5 {
DxvkBindingMask bsBindingMask;
};
/**
* \brief Version 4 state cache entry
*/
struct DxvkStateCacheEntryV4 {
DxvkStateCacheKey shaders;
DxvkGraphicsPipelineStateInfoV4 gpState;
DxvkComputePipelineStateInfo cpState;
DxvkComputePipelineStateInfoV5 cpState;
DxvkRenderPassFormat format;
Sha1Hash hash;
};
/**
* \brief Version 5 state cache entry
*/
struct DxvkStateCacheEntryV5 {
DxvkStateCacheKey shaders;
DxvkGraphicsPipelineStateInfo gpState;
DxvkComputePipelineStateInfoV5 cpState;
DxvkRenderPassFormat format;
Sha1Hash hash;
};