vkd3d-utils: Return correct use masks during reflection.

This commit is contained in:
Shaun Ren 2024-10-16 22:04:55 -04:00 committed by Henri Verbeet
parent 7408ab145a
commit 976fe27836
Notes: Henri Verbeet 2024-10-21 18:41:50 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1194

View File

@ -482,7 +482,7 @@ static HRESULT get_signature_parameter(const struct vkd3d_shader_signature *sign
desc->SystemValueType = (D3D_NAME)e->sysval_semantic; desc->SystemValueType = (D3D_NAME)e->sysval_semantic;
desc->ComponentType = (D3D_REGISTER_COMPONENT_TYPE)e->component_type; desc->ComponentType = (D3D_REGISTER_COMPONENT_TYPE)e->component_type;
desc->Mask = e->mask; desc->Mask = e->mask;
desc->ReadWriteMask = output ? (e->mask & ~e->used_mask) : e->used_mask; desc->ReadWriteMask = output ? (0xf ^ e->used_mask) : e->used_mask;
desc->Stream = e->stream_index; desc->Stream = e->stream_index;
desc->MinPrecision = (D3D_MIN_PRECISION)e->min_precision; desc->MinPrecision = (D3D_MIN_PRECISION)e->min_precision;
@ -513,11 +513,11 @@ static HRESULT STDMETHODCALLTYPE d3d12_reflection_GetPatchConstantParameterDesc(
ID3D12ShaderReflection *iface, UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc) ID3D12ShaderReflection *iface, UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc)
{ {
struct d3d12_reflection *reflection = impl_from_ID3D12ShaderReflection(iface); struct d3d12_reflection *reflection = impl_from_ID3D12ShaderReflection(iface);
bool output = ((reflection->desc.Version & 0xffff0000) >> 16) == D3D12_SHVER_HULL_SHADER;
TRACE("iface %p, index %u, desc %p.\n", iface, index, desc); TRACE("iface %p, index %u, desc %p.\n", iface, index, desc);
return get_signature_parameter(&reflection->signature_info.patch_constant, index, desc, return get_signature_parameter(&reflection->signature_info.patch_constant, index, desc, output);
/* FIXME: check shader type */true);
} }
static struct ID3D12ShaderReflectionVariable * STDMETHODCALLTYPE d3d12_reflection_GetVariableByName( static struct ID3D12ShaderReflectionVariable * STDMETHODCALLTYPE d3d12_reflection_GetVariableByName(