mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
libs/vkd3d-shader: Remove dependency on D3D12 headers.
We would like to allow building libvkd3d-shader as a standalone library without our Direct3D translation layers. In the long term, it should be possible to build and use libvkd3d-shader without Win32 data types, Vulkan headers and libs. Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
4c35737940
commit
fddf86e6ea
@@ -1006,11 +1006,15 @@ HRESULT d3d12_root_signature_create(struct d3d12_device *device,
|
||||
const void *bytecode, size_t bytecode_length, struct d3d12_root_signature **root_signature)
|
||||
{
|
||||
const struct vkd3d_shader_code dxbc = {bytecode, bytecode_length};
|
||||
D3D12_ROOT_SIGNATURE_DESC root_signature_desc;
|
||||
union
|
||||
{
|
||||
D3D12_ROOT_SIGNATURE_DESC d3d12;
|
||||
struct vkd3d_root_signature_desc vkd3d;
|
||||
} root_signature_desc;
|
||||
struct d3d12_root_signature *object;
|
||||
HRESULT hr;
|
||||
|
||||
if (FAILED(hr = vkd3d_shader_parse_root_signature(&dxbc, &root_signature_desc)))
|
||||
if (FAILED(hr = vkd3d_shader_parse_root_signature(&dxbc, &root_signature_desc.vkd3d)))
|
||||
{
|
||||
WARN("Failed to parse root signature, hr %#x.\n", hr);
|
||||
return hr;
|
||||
@@ -1018,12 +1022,12 @@ HRESULT d3d12_root_signature_create(struct d3d12_device *device,
|
||||
|
||||
if (!(object = vkd3d_malloc(sizeof(*object))))
|
||||
{
|
||||
vkd3d_shader_free_root_signature(&root_signature_desc);
|
||||
vkd3d_shader_free_root_signature(&root_signature_desc.vkd3d);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
hr = d3d12_root_signature_init(object, device, &root_signature_desc);
|
||||
vkd3d_shader_free_root_signature(&root_signature_desc);
|
||||
hr = d3d12_root_signature_init(object, device, &root_signature_desc.d3d12);
|
||||
vkd3d_shader_free_root_signature(&root_signature_desc.vkd3d);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
vkd3d_free(object);
|
||||
|
@@ -79,7 +79,11 @@ struct d3d12_root_signature_deserializer
|
||||
ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer_iface;
|
||||
LONG refcount;
|
||||
|
||||
D3D12_ROOT_SIGNATURE_DESC desc;
|
||||
union
|
||||
{
|
||||
D3D12_ROOT_SIGNATURE_DESC d3d12;
|
||||
struct vkd3d_root_signature_desc vkd3d;
|
||||
} desc;
|
||||
};
|
||||
|
||||
static struct d3d12_root_signature_deserializer *impl_from_ID3D12RootSignatureDeserializer(
|
||||
@@ -128,7 +132,7 @@ static ULONG STDMETHODCALLTYPE d3d12_root_signature_deserializer_Release(ID3D12R
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
vkd3d_shader_free_root_signature(&deserializer->desc);
|
||||
vkd3d_shader_free_root_signature(&deserializer->desc.vkd3d);
|
||||
vkd3d_free(deserializer);
|
||||
}
|
||||
|
||||
@@ -142,7 +146,7 @@ static const D3D12_ROOT_SIGNATURE_DESC * STDMETHODCALLTYPE d3d12_root_signature_
|
||||
|
||||
TRACE("iface %p.\n", iface);
|
||||
|
||||
return &deserializer->desc;
|
||||
return &deserializer->desc.d3d12;
|
||||
}
|
||||
|
||||
static const struct ID3D12RootSignatureDeserializerVtbl d3d12_root_signature_deserializer_vtbl =
|
||||
@@ -163,7 +167,7 @@ static HRESULT d3d12_root_signature_deserializer_init(struct d3d12_root_signatur
|
||||
deserializer->ID3D12RootSignatureDeserializer_iface.lpVtbl = &d3d12_root_signature_deserializer_vtbl;
|
||||
deserializer->refcount = 1;
|
||||
|
||||
if (FAILED(hr = vkd3d_shader_parse_root_signature(dxbc, &deserializer->desc)))
|
||||
if (FAILED(hr = vkd3d_shader_parse_root_signature(dxbc, &deserializer->desc.vkd3d)))
|
||||
{
|
||||
WARN("Failed to parse root signature, hr %#x.\n", hr);
|
||||
return hr;
|
||||
@@ -331,7 +335,8 @@ HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *root_sig
|
||||
*error_blob = NULL;
|
||||
}
|
||||
|
||||
if (FAILED(hr = vkd3d_shader_serialize_root_signature(root_signature_desc,
|
||||
if (FAILED(hr = vkd3d_shader_serialize_root_signature(
|
||||
(const struct vkd3d_root_signature_desc *)root_signature_desc,
|
||||
(enum vkd3d_root_signature_version)version, &dxbc)))
|
||||
{
|
||||
WARN("Failed to serialize root signature, hr %#x.\n", hr);
|
||||
|
Reference in New Issue
Block a user