Module: wine Branch: master Commit: 164dcc79738b60061a6565521f0b6eb797ec99fc URL: http://source.winehq.org/git/wine.git/?a=commit;h=164dcc79738b60061a6565521f...
Author: Rico Schüller kgbricola@web.de Date: Sun Oct 3 15:12:06 2010 +0200
d3dcompiler: Implement D3DGetOutputSignatureBlob().
---
dlls/d3dcompiler_43/blob.c | 5 +++++ dlls/d3dcompiler_43/d3dcompiler_43.spec | 2 +- dlls/d3dcompiler_43/d3dcompiler_43_main.c | 7 +++++++ dlls/d3dcompiler_43/d3dcompiler_private.h | 1 + include/d3dcompiler.h | 1 + 5 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/dlls/d3dcompiler_43/blob.c b/dlls/d3dcompiler_43/blob.c index d674090..b7b4724 100644 --- a/dlls/d3dcompiler_43/blob.c +++ b/dlls/d3dcompiler_43/blob.c @@ -129,6 +129,10 @@ static BOOL check_blob_part(DWORD tag, D3D_BLOB_PART part) if (tag == TAG_ISGN) add = TRUE; break;
+ case D3D_BLOB_OUTPUT_SIGNATURE_BLOB: + if (tag == TAG_OSGN) add = TRUE; + break; + default: FIXME("Unhandled D3D_BLOB_PART %s.\n", debug_d3dcompiler_d3d_blob_part(part)); break; @@ -195,6 +199,7 @@ HRESULT d3dcompiler_get_blob_part(const void *data, SIZE_T data_size, D3D_BLOB_P switch(part) { case D3D_BLOB_INPUT_SIGNATURE_BLOB: + case D3D_BLOB_OUTPUT_SIGNATURE_BLOB: if (count != 1) count = 0; break;
diff --git a/dlls/d3dcompiler_43/d3dcompiler_43.spec b/dlls/d3dcompiler_43/d3dcompiler_43.spec index 41f1049..8f7b6db 100644 --- a/dlls/d3dcompiler_43/d3dcompiler_43.spec +++ b/dlls/d3dcompiler_43/d3dcompiler_43.spec @@ -10,7 +10,7 @@ @ stub D3DGetDebugInfo @ stub D3DGetInputAndOutputSignatureBlob @ stdcall D3DGetInputSignatureBlob(ptr long ptr) -@ stub D3DGetOutputSignatureBlob +@ stdcall D3DGetOutputSignatureBlob(ptr long ptr) @ stdcall D3DPreprocess(ptr long str ptr ptr ptr ptr) @ stub D3DReflect @ stub D3DReturnFailure1 diff --git a/dlls/d3dcompiler_43/d3dcompiler_43_main.c b/dlls/d3dcompiler_43/d3dcompiler_43_main.c index 88af168..bc4cac0 100644 --- a/dlls/d3dcompiler_43/d3dcompiler_43_main.c +++ b/dlls/d3dcompiler_43/d3dcompiler_43_main.c @@ -95,3 +95,10 @@ HRESULT WINAPI D3DGetInputSignatureBlob(const void *data, SIZE_T data_size, ID3D
return d3dcompiler_get_blob_part(data, data_size, D3D_BLOB_INPUT_SIGNATURE_BLOB, 0, blob); } + +HRESULT WINAPI D3DGetOutputSignatureBlob(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_OUTPUT_SIGNATURE_BLOB, 0, blob); +} diff --git a/dlls/d3dcompiler_43/d3dcompiler_private.h b/dlls/d3dcompiler_43/d3dcompiler_private.h index eb7674f..41c4f5a 100644 --- a/dlls/d3dcompiler_43/d3dcompiler_private.h +++ b/dlls/d3dcompiler_43/d3dcompiler_private.h @@ -582,6 +582,7 @@ void SlDeleteShader(struct bwriter_shader *shader); ((DWORD)(ch2) << 16) | ((DWORD)(ch3) << 24 )) #define TAG_DXBC MAKE_TAG('D', 'X', 'B', 'C') #define TAG_ISGN MAKE_TAG('I', 'S', 'G', 'N') +#define TAG_OSGN MAKE_TAG('O', 'S', 'G', 'N')
struct dxbc_section { diff --git a/include/d3dcompiler.h b/include/d3dcompiler.h index 0dfe9ff..08c3d01 100644 --- a/include/d3dcompiler.h +++ b/include/d3dcompiler.h @@ -63,6 +63,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 D3DCreateBlob(SIZE_T data_size, ID3DBlob **blob);