Rico Schüller : d3dcompiler: Implement D3DGetInputAndOutputSignatureBlob().

Alexandre Julliard julliard at winehq.org
Thu Oct 7 11:24:29 CDT 2010


Module: wine
Branch: master
Commit: 4467901e310267399a476206cf0bc43fef2ec70f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4467901e310267399a476206cf0bc43fef2ec70f

Author: Rico Schüller <kgbricola at web.de>
Date:   Sun Oct  3 15:12:12 2010 +0200

d3dcompiler: Implement D3DGetInputAndOutputSignatureBlob().

---

 dlls/d3dcompiler_43/blob.c                |    8 ++++++++
 dlls/d3dcompiler_43/d3dcompiler_43.spec   |    2 +-
 dlls/d3dcompiler_43/d3dcompiler_43_main.c |    7 +++++++
 include/d3dcompiler.h                     |    1 +
 4 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/dlls/d3dcompiler_43/blob.c b/dlls/d3dcompiler_43/blob.c
index b7b4724..ca13f4b 100644
--- a/dlls/d3dcompiler_43/blob.c
+++ b/dlls/d3dcompiler_43/blob.c
@@ -133,6 +133,10 @@ static BOOL check_blob_part(DWORD tag, D3D_BLOB_PART part)
             if (tag == TAG_OSGN) add = TRUE;
             break;
 
+        case D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB:
+            if (tag == TAG_ISGN || tag == TAG_OSGN) add = TRUE;
+            break;
+
         default:
             FIXME("Unhandled D3D_BLOB_PART %s.\n", debug_d3dcompiler_d3d_blob_part(part));
             break;
@@ -203,6 +207,10 @@ HRESULT d3dcompiler_get_blob_part(const void *data, SIZE_T data_size, D3D_BLOB_P
             if (count != 1) count = 0;
             break;
 
+        case D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB:
+            if (count != 2) count = 0;
+            break;
+
         default:
             FIXME("Unhandled D3D_BLOB_PART %s.\n", debug_d3dcompiler_d3d_blob_part(part));
             break;
diff --git a/dlls/d3dcompiler_43/d3dcompiler_43.spec b/dlls/d3dcompiler_43/d3dcompiler_43.spec
index 8f7b6db..e605e29 100644
--- a/dlls/d3dcompiler_43/d3dcompiler_43.spec
+++ b/dlls/d3dcompiler_43/d3dcompiler_43.spec
@@ -8,7 +8,7 @@
 @ stub D3DDisassemble
 @ stdcall D3DGetBlobPart(ptr long long long ptr)
 @ stub D3DGetDebugInfo
-@ stub D3DGetInputAndOutputSignatureBlob
+@ stdcall D3DGetInputAndOutputSignatureBlob(ptr long ptr)
 @ stdcall D3DGetInputSignatureBlob(ptr long ptr)
 @ stdcall D3DGetOutputSignatureBlob(ptr long ptr)
 @ stdcall D3DPreprocess(ptr long str ptr ptr ptr ptr)
diff --git a/dlls/d3dcompiler_43/d3dcompiler_43_main.c b/dlls/d3dcompiler_43/d3dcompiler_43_main.c
index bc4cac0..d199244 100644
--- a/dlls/d3dcompiler_43/d3dcompiler_43_main.c
+++ b/dlls/d3dcompiler_43/d3dcompiler_43_main.c
@@ -102,3 +102,10 @@ HRESULT WINAPI D3DGetOutputSignatureBlob(const void *data, SIZE_T data_size, ID3
 
     return d3dcompiler_get_blob_part(data, data_size, D3D_BLOB_OUTPUT_SIGNATURE_BLOB, 0, blob);
 }
+
+HRESULT WINAPI D3DGetInputAndOutputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob)
+{
+    TRACE("data %p, data_size %lu, blob %p\n", data, data_size, blob);
+
+    return d3dcompiler_get_blob_part(data, data_size, D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB, 0, blob);
+}
diff --git a/include/d3dcompiler.h b/include/d3dcompiler.h
index 08c3d01..9079920 100644
--- a/include/d3dcompiler.h
+++ b/include/d3dcompiler.h
@@ -64,6 +64,7 @@ typedef enum D3D_BLOB_PART
 HRESULT WINAPI D3DGetBlobPart(const void *data, SIZE_T data_size, D3D_BLOB_PART part, UINT flags, ID3DBlob **blob);
 HRESULT WINAPI D3DGetInputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob);
 HRESULT WINAPI D3DGetOutputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob);
+HRESULT WINAPI D3DGetInputAndOutputSignatureBlob(const void *data, SIZE_T data_size, ID3DBlob **blob);
 
 HRESULT WINAPI D3DCreateBlob(SIZE_T data_size, ID3DBlob **blob);
 




More information about the wine-cvs mailing list