vkd3d-shader: Report CS workgroup size metadata.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
17fd01a2c8
commit
92c4f861e7
|
@ -57,6 +57,7 @@ typedef uint64_t vkd3d_shader_hash_t;
|
|||
struct vkd3d_shader_meta
|
||||
{
|
||||
vkd3d_shader_hash_t hash;
|
||||
uint32_t cs_workgroup_size[3]; /* Only contains valid data if uses_subgroup_size is true. */
|
||||
bool replaced;
|
||||
bool uses_subgroup_size;
|
||||
};
|
||||
|
|
|
@ -498,6 +498,7 @@ int vkd3d_shader_compile_dxil(const struct vkd3d_shader_code *dxbc,
|
|||
spirv->meta.replaced = false;
|
||||
spirv->meta.hash = hash;
|
||||
spirv->meta.uses_subgroup_size = false;
|
||||
memset(spirv->meta.cs_workgroup_size, 0, sizeof(spirv->meta.cs_workgroup_size));
|
||||
if (vkd3d_shader_replace(hash, &spirv->code, &spirv->size))
|
||||
{
|
||||
spirv->meta.replaced = true;
|
||||
|
@ -786,6 +787,10 @@ int vkd3d_shader_compile_dxil(const struct vkd3d_shader_code *dxbc,
|
|||
spirv->code = code;
|
||||
spirv->size = compiled.size;
|
||||
spirv->meta.uses_subgroup_size = dxil_spv_converter_uses_subgroup_size(converter) == DXIL_SPV_TRUE;
|
||||
dxil_spv_converter_get_compute_workgroup_dimensions(converter,
|
||||
&spirv->meta.cs_workgroup_size[0],
|
||||
&spirv->meta.cs_workgroup_size[1],
|
||||
&spirv->meta.cs_workgroup_size[2]);
|
||||
|
||||
vkd3d_shader_dump_spirv_shader(hash, spirv);
|
||||
|
||||
|
@ -826,6 +831,7 @@ int vkd3d_shader_compile_dxil_export(const struct vkd3d_shader_code *dxil,
|
|||
spirv->meta.replaced = false;
|
||||
spirv->meta.uses_subgroup_size = false;
|
||||
spirv->meta.hash = hash;
|
||||
memset(spirv->meta.cs_workgroup_size, 0, sizeof(spirv->meta.cs_workgroup_size));
|
||||
demangled_export = vkd3d_dup_demangled_entry_point_ascii(export);
|
||||
if (demangled_export)
|
||||
{
|
||||
|
|
|
@ -347,6 +347,7 @@ int vkd3d_shader_compile_dxbc(const struct vkd3d_shader_code *dxbc,
|
|||
spirv->meta.replaced = false;
|
||||
spirv->meta.uses_subgroup_size = false;
|
||||
spirv->meta.hash = hash;
|
||||
memset(spirv->meta.cs_workgroup_size, 0, sizeof(spirv->meta.cs_workgroup_size));
|
||||
if (vkd3d_shader_replace(hash, &spirv->code, &spirv->size))
|
||||
{
|
||||
spirv->meta.replaced = true;
|
||||
|
|
Loading…
Reference in New Issue