From 4467901e310267399a476206cf0bc43fef2ec70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rico=20Sch=C3=BCller?= Date: Sun, 3 Oct 2010 15:12:12 +0200 Subject: [PATCH] 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 deletion(-) diff --git a/dlls/d3dcompiler_43/blob.c b/dlls/d3dcompiler_43/blob.c index b7b47249dcc..ca13f4ba6b0 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 8f7b6db3edf..e605e292250 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 bc4cac089d3..d19924438aa 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 08c3d01d833..90799204e87 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);