libs/vkd3d-shader: Implement arbitrary mappings from D3D shader register to Vulkan descriptors.

An arbitrary mapping can be passed to vkd3d_shader_compile_dxbc().
This commit is contained in:
Józef Kucia
2017-07-26 13:45:25 +02:00
parent d39d0e4c9f
commit edd1e9602d
6 changed files with 118 additions and 35 deletions

View File

@@ -38,8 +38,27 @@ struct vkd3d_shader_code
size_t size;
};
enum vkd3d_descriptor_type
{
VKD3D_DESCRIPTOR_TYPE_UNKNOWN,
VKD3D_DESCRIPTOR_TYPE_CBV, /* cb# */
VKD3D_DESCRIPTOR_TYPE_SRV, /* t# */
VKD3D_DESCRIPTOR_TYPE_UAV, /* u# */
VKD3D_DESCRIPTOR_TYPE_SAMPLER, /* s# */
};
struct vkd3d_shader_resource_binding
{
enum vkd3d_descriptor_type type;
unsigned int index;
uint32_t descriptor_set;
uint32_t binding;
};
HRESULT vkd3d_shader_compile_dxbc(const struct vkd3d_shader_code *dxbc,
struct vkd3d_shader_code *spirv, uint32_t compiler_options);
struct vkd3d_shader_code *spirv, uint32_t compiler_options,
const struct vkd3d_shader_resource_binding *bindings, unsigned int binding_count);
void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
HRESULT vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,