vkd3d-shader: Introduce vkd3d_shader_descriptor_type_from_register_type helper.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
Philip Rebohle 2020-02-25 23:38:33 +01:00 committed by Hans-Kristian Arntzen
parent d95762db65
commit 74e706cbe3
1 changed files with 21 additions and 23 deletions

View File

@ -2319,6 +2319,25 @@ static bool vkd3d_dxbc_compiler_has_combined_sampler(const struct vkd3d_dxbc_com
return false;
}
static enum vkd3d_shader_descriptor_type vkd3d_shader_descriptor_type_from_register_type(
enum vkd3d_shader_register_type reg_type)
{
switch (reg_type)
{
case VKD3DSPR_CONSTBUFFER:
return VKD3D_SHADER_DESCRIPTOR_TYPE_CBV;
case VKD3DSPR_RESOURCE:
return VKD3D_SHADER_DESCRIPTOR_TYPE_SRV;
case VKD3DSPR_UAV:
return VKD3D_SHADER_DESCRIPTOR_TYPE_UAV;
case VKD3DSPR_SAMPLER:
return VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER;
default:
FIXME("Unhandled register type %#x.\n", reg_type);
return VKD3D_SHADER_DESCRIPTOR_TYPE_UNKNOWN;
}
}
static bool vkd3d_get_binding_info_for_register(
struct vkd3d_dxbc_compiler *compiler,
const struct vkd3d_shader_register *reg,
@ -2330,18 +2349,7 @@ static bool vkd3d_get_binding_info_for_register(
if (shader_is_sm_5_1(compiler))
{
key.descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_UNKNOWN;
if (reg->type == VKD3DSPR_CONSTBUFFER)
key.descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_CBV;
else if (reg->type == VKD3DSPR_RESOURCE)
key.descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_SRV;
else if (reg->type == VKD3DSPR_UAV)
key.descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_UAV;
else if (reg->type == VKD3DSPR_SAMPLER)
key.descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER;
else
FIXME("Unhandled register type %#x.\n", reg->type);
key.descriptor_type = vkd3d_shader_descriptor_type_from_register_type(reg->type);
key.idx = reg->idx[0].offset;
entry = rb_get(&compiler->sm51_resource_table, &key);
if (entry)
@ -2374,17 +2382,7 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor
unsigned int reg_space = 0;
unsigned int reg_idx = 0;
descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_UNKNOWN;
if (reg->type == VKD3DSPR_CONSTBUFFER)
descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_CBV;
else if (reg->type == VKD3DSPR_RESOURCE)
descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_SRV;
else if (reg->type == VKD3DSPR_UAV)
descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_UAV;
else if (reg->type == VKD3DSPR_SAMPLER)
descriptor_type = VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER;
else
FIXME("Unhandled register type %#x.\n", reg->type);
descriptor_type = vkd3d_shader_descriptor_type_from_register_type(reg->type);
resource_type_flag = resource_type == VKD3D_SHADER_RESOURCE_BUFFER
? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE;