[PATCH vkd3d 1/2] vkd3d: Expose vkd3d_create_blob() as a public API.

Zebediah Figura zfigura at codeweavers.com
Tue Jun 30 19:30:25 CDT 2020


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 include/vkd3d.h         |  4 ++++
 libs/vkd3d/vkd3d.map    |  1 +
 libs/vkd3d/vkd3d_main.c | 14 ++++----------
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/include/vkd3d.h b/include/vkd3d.h
index 0ef8105..f05eb56 100644
--- a/include/vkd3d.h
+++ b/include/vkd3d.h
@@ -193,6 +193,8 @@ HRESULT vkd3d_serialize_versioned_root_signature(const D3D12_VERSIONED_ROOT_SIGN
 HRESULT vkd3d_create_versioned_root_signature_deserializer(const void *data, SIZE_T data_size,
         REFIID iid, void **deserializer);
 
+HRESULT vkd3d_create_blob(void *buffer, SIZE_T size, ID3DBlob **blob);
+
 #endif  /* VKD3D_NO_PROTOTYPES */
 
 /*
@@ -236,6 +238,8 @@ typedef HRESULT (*PFN_vkd3d_serialize_versioned_root_signature)(const D3D12_VERS
 typedef HRESULT (*PFN_vkd3d_create_versioned_root_signature_deserializer)(const void *data, SIZE_T data_size,
         REFIID iid, void **deserializer);
 
+typedef HRESULT (*PFN_vkd3d_create_blob)(void *buffer, SIZE_T size, ID3DBlob **blob);
+
 #ifdef __cplusplus
 }
 #endif  /* __cplusplus */
diff --git a/libs/vkd3d/vkd3d.map b/libs/vkd3d/vkd3d.map
index 6f1f376..d1515d9 100644
--- a/libs/vkd3d/vkd3d.map
+++ b/libs/vkd3d/vkd3d.map
@@ -2,6 +2,7 @@ VKD3D_1_0
 {
 global:
     vkd3d_acquire_vk_queue;
+    vkd3d_create_blob;
     vkd3d_create_device;
     vkd3d_create_image_resource;
     vkd3d_create_instance;
diff --git a/libs/vkd3d/vkd3d_main.c b/libs/vkd3d/vkd3d_main.c
index 7775077..9e05f11 100644
--- a/libs/vkd3d/vkd3d_main.c
+++ b/libs/vkd3d/vkd3d_main.c
@@ -520,7 +520,7 @@ static void d3d_blob_init(struct d3d_blob *blob, void *buffer, SIZE_T size)
     blob->size = size;
 }
 
-static HRESULT d3d_blob_create(void *buffer, SIZE_T size, struct d3d_blob **blob)
+HRESULT vkd3d_create_blob(void *buffer, SIZE_T size, ID3DBlob **blob)
 {
     struct d3d_blob *object;
 
@@ -531,7 +531,7 @@ static HRESULT d3d_blob_create(void *buffer, SIZE_T size, struct d3d_blob **blob
 
     TRACE("Created blob object %p.\n", object);
 
-    *blob = object;
+    *blob = &object->ID3DBlob_iface;
 
     return S_OK;
 }
@@ -541,7 +541,6 @@ HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *desc,
 {
     struct vkd3d_versioned_root_signature_desc vkd3d_desc;
     struct vkd3d_shader_code dxbc;
-    struct d3d_blob *blob_object;
     HRESULT hr;
     int ret;
 
@@ -572,15 +571,13 @@ HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *desc,
         return hresult_from_vkd3d_result(ret);
     }
 
-    if (FAILED(hr = d3d_blob_create((void *)dxbc.code, dxbc.size, &blob_object)))
+    if (FAILED(hr = vkd3d_create_blob((void *)dxbc.code, dxbc.size, blob)))
     {
         WARN("Failed to create blob object, hr %#x.\n", hr);
         vkd3d_shader_free_shader_code(&dxbc);
         return hr;
     }
 
-    *blob = &blob_object->ID3DBlob_iface;
-
     return S_OK;
 }
 
@@ -589,7 +586,6 @@ HRESULT vkd3d_serialize_versioned_root_signature(const D3D12_VERSIONED_ROOT_SIGN
 {
     const struct vkd3d_versioned_root_signature_desc *vkd3d_desc;
     struct vkd3d_shader_code dxbc;
-    struct d3d_blob *blob_object;
     HRESULT hr;
     int ret;
 
@@ -613,14 +609,12 @@ HRESULT vkd3d_serialize_versioned_root_signature(const D3D12_VERSIONED_ROOT_SIGN
         return hresult_from_vkd3d_result(ret);
     }
 
-    if (FAILED(hr = d3d_blob_create((void *)dxbc.code, dxbc.size, &blob_object)))
+    if (FAILED(hr = vkd3d_create_blob((void *)dxbc.code, dxbc.size, blob)))
     {
         WARN("Failed to create blob object, hr %#x.\n", hr);
         vkd3d_shader_free_shader_code(&dxbc);
         return hr;
     }
 
-    *blob = &blob_object->ID3DBlob_iface;
-
     return S_OK;
 }
-- 
2.27.0




More information about the wine-devel mailing list