mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
|
#include "dxvk_shader_key.h"
|
||
|
|
||
|
namespace dxvk {
|
||
|
|
||
|
DxvkShaderKey::DxvkShaderKey()
|
||
|
: m_type(0),
|
||
|
m_sha1(Sha1Hash::compute(nullptr, 0)) { }
|
||
|
|
||
|
|
||
|
std::string DxvkShaderKey::toString() const {
|
||
|
const char* prefix = nullptr;
|
||
|
|
||
|
switch (m_type) {
|
||
|
case VK_SHADER_STAGE_VERTEX_BIT: prefix = "VS_"; break;
|
||
|
case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT: prefix = "TCS_"; break;
|
||
|
case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT: prefix = "TES_"; break;
|
||
|
case VK_SHADER_STAGE_GEOMETRY_BIT: prefix = "GS_"; break;
|
||
|
case VK_SHADER_STAGE_FRAGMENT_BIT: prefix = "FS_"; break;
|
||
|
case VK_SHADER_STAGE_COMPUTE_BIT: prefix = "CS_"; break;
|
||
|
default: prefix = "";
|
||
|
}
|
||
|
|
||
|
return str::format(prefix, m_sha1.toString());
|
||
|
}
|
||
|
|
||
|
|
||
|
size_t DxvkShaderKey::hash() const {
|
||
|
DxvkHashState result;
|
||
|
result.add(uint32_t(m_type));
|
||
|
|
||
|
for (uint32_t i = 0; i < 5; i++)
|
||
|
result.add(m_sha1.dword(i));
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool DxvkShaderKey::eq(const DxvkShaderKey& key) const {
|
||
|
return m_type == key.m_type
|
||
|
&& m_sha1 == key.m_sha1;
|
||
|
}
|
||
|
|
||
|
}
|