mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d: Use the DXBC checksum to construct a shader source name.
This commit is contained in:
Notes:
Henri Verbeet
2025-06-18 16:00:13 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1574
@@ -2383,7 +2383,9 @@ static HRESULT create_shader_stage(struct d3d12_device *device,
|
|||||||
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
||||||
struct vkd3d_shader_compile_info compile_info;
|
struct vkd3d_shader_compile_info compile_info;
|
||||||
struct VkShaderModuleCreateInfo shader_desc;
|
struct VkShaderModuleCreateInfo shader_desc;
|
||||||
|
struct vkd3d_shader_dxbc_desc dxbc_desc;
|
||||||
struct vkd3d_shader_code spirv = {0};
|
struct vkd3d_shader_code spirv = {0};
|
||||||
|
char source_name[33];
|
||||||
VkResult vr;
|
VkResult vr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -2416,6 +2418,16 @@ static HRESULT create_shader_stage(struct d3d12_device *device,
|
|||||||
compile_info.log_level = VKD3D_SHADER_LOG_NONE;
|
compile_info.log_level = VKD3D_SHADER_LOG_NONE;
|
||||||
compile_info.source_name = NULL;
|
compile_info.source_name = NULL;
|
||||||
|
|
||||||
|
if ((ret = vkd3d_shader_parse_dxbc(&(struct vkd3d_shader_code){code->pShaderBytecode, code->BytecodeLength},
|
||||||
|
0, &dxbc_desc, NULL)) >= 0)
|
||||||
|
{
|
||||||
|
sprintf(source_name, "%08x%08x%08x%08x", dxbc_desc.checksum[0],
|
||||||
|
dxbc_desc.checksum[1], dxbc_desc.checksum[2], dxbc_desc.checksum[3]);
|
||||||
|
vkd3d_shader_free_dxbc(&dxbc_desc);
|
||||||
|
TRACE("Compiling shader \"%s\".\n", source_name);
|
||||||
|
compile_info.source_name = source_name;
|
||||||
|
}
|
||||||
|
|
||||||
if ((ret = vkd3d_shader_parse_dxbc_source_type(&compile_info.source, &compile_info.source_type, NULL)) < 0
|
if ((ret = vkd3d_shader_parse_dxbc_source_type(&compile_info.source, &compile_info.source_type, NULL)) < 0
|
||||||
|| (ret = vkd3d_shader_compile(&compile_info, &spirv, NULL)) < 0)
|
|| (ret = vkd3d_shader_compile(&compile_info, &spirv, NULL)) < 0)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user