d3d11_misc.h revision 6c598c78bd17642d731cf57b8369cc794f64ba2f
1496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer#if API < 11 2496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencerextern "C" HRESULT STDMETHODCALLTYPE D3D10CreateBlob( 3496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer __in SIZE_T NumBytes, 4496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer __out LPD3D10BLOB *ppBuffer 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner); 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner 7496c277a6d161413e3f6976c9991ddccd8ecae8aReid SpencerHRESULT STDMETHODCALLTYPE D3D10CreateBlob( 8496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer __in SIZE_T NumBytes, 9496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer __out LPD3D10BLOB *ppBuffer 10496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer) 11496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer{ 12496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer void* data = malloc(NumBytes); 13496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer if(!data) 1490b54138834a057179c7a02931217ab5a82ed389Reid Spencer return E_OUTOFMEMORY; 15ced4110f5b068b9b64e3a55a9ee57b621ce4acb1Reid Spencer *ppBuffer = new GalliumD3DBlob(data, NumBytes); 1690b54138834a057179c7a02931217ab5a82ed389Reid Spencer return S_OK; 1748fe63526e35ddaee7e98879596a569911f41319Sebastian Redl} 1890b54138834a057179c7a02931217ab5a82ed389Reid Spencer 1923a1cf3e085325783ef2e4078308f913cba5012eJeff CohenLPCSTR STDMETHODCALLTYPE D3D10GetPixelShaderProfile( 2048fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer __in ID3D10Device *pDevice 21f6cbc0fd6494e50c48ebe4b5eecde1c70bcd5165Reid Spencer) 2248fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer{ 23f6cbc0fd6494e50c48ebe4b5eecde1c70bcd5165Reid Spencer return "ps_4_0"; 24f6cbc0fd6494e50c48ebe4b5eecde1c70bcd5165Reid Spencer} 2590b54138834a057179c7a02931217ab5a82ed389Reid Spencer 2648fdf91d0f17b19bb7345156b928689df94d0c6cReid SpencerLPCSTR STDMETHODCALLTYPE D3D10GetVertexShaderProfile( 2748fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer __in ID3D10Device *pDevice 2848fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer) 2948fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer{ 3048fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer return "vs_4_0"; 3148fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer} 3248fdf91d0f17b19bb7345156b928689df94d0c6cReid Spencer 3348fdf91d0f17b19bb7345156b928689df94d0c6cReid SpencerLPCSTR STDMETHODCALLTYPE D3D10GetGeometryShaderProfile( 3490b54138834a057179c7a02931217ab5a82ed389Reid Spencer __in ID3D10Device *pDevice 3590b54138834a057179c7a02931217ab5a82ed389Reid Spencer) 3690b54138834a057179c7a02931217ab5a82ed389Reid Spencer{ 3790b54138834a057179c7a02931217ab5a82ed389Reid Spencer return "gs_4_0"; 3890b54138834a057179c7a02931217ab5a82ed389Reid Spencer} 39ee841a1a8735805f84d609ae105bec92525033c6Jeff Cohen 40ee841a1a8735805f84d609ae105bec92525033c6Jeff Cohenstatic HRESULT dxbc_assemble_as_blob(struct dxbc_chunk_header** chunks, unsigned num_chunks, ID3D10Blob** blob) 41ee841a1a8735805f84d609ae105bec92525033c6Jeff Cohen{ 42ced4110f5b068b9b64e3a55a9ee57b621ce4acb1Reid Spencer std::pair<void*, size_t> p = dxbc_assemble(chunks, num_chunks); 4335033a5876aa27ea5729bc29b41bb4460a303cadChris Lattner if(!p.first) 4490b54138834a057179c7a02931217ab5a82ed389Reid Spencer return E_OUTOFMEMORY; 457b60a15abc155196d9515a1e242ec0137afff753Reid Spencer *blob = new GalliumD3DBlob(p.first, p.second); 46df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return S_OK; 477b60a15abc155196d9515a1e242ec0137afff753Reid Spencer} 48298d6c14ca1936677aaf6cca3efc569b6e53d294Reid Spencer 49298d6c14ca1936677aaf6cca3efc569b6e53d294Reid SpencerHRESULT D3D10GetInputSignatureBlob( 50298d6c14ca1936677aaf6cca3efc569b6e53d294Reid Spencer __in const void *pShaderBytecode, 51298d6c14ca1936677aaf6cca3efc569b6e53d294Reid Spencer __in SIZE_T BytecodeLength, 5290b54138834a057179c7a02931217ab5a82ed389Reid Spencer __out ID3D10Blob **ppSignatureBlob 5390b54138834a057179c7a02931217ab5a82ed389Reid Spencer) 54496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer{ 55496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer dxbc_chunk_signature* sig = dxbc_find_signature(pShaderBytecode, BytecodeLength, false); 56496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer if(!sig) 57496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer return E_FAIL; 5890b54138834a057179c7a02931217ab5a82ed389Reid Spencer 59496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer return dxbc_assemble_as_blob((dxbc_chunk_header**)&sig, 1, ppSignatureBlob); 60496c277a6d161413e3f6976c9991ddccd8ecae8aReid Spencer} 613be2d12bdec9ec3a244aae695d3b586ac27dcfdeDaniel Dunbar 62df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel DunbarHRESULT D3D10GetOutputSignatureBlob( 63df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __in const void *pShaderBytecode, 64df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __in SIZE_T BytecodeLength, 65df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __out ID3D10Blob **ppSignatureBlob 66df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar) 67df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar{ 68df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar dxbc_chunk_signature* sig = dxbc_find_signature(pShaderBytecode, BytecodeLength, true); 69df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar if(!sig) 70df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return E_FAIL; 71df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar 72df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return dxbc_assemble_as_blob((dxbc_chunk_header**)&sig, 1, ppSignatureBlob); 73df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar} 74df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar 75df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel DunbarHRESULT D3D10GetInputAndOutputSignatureBlob( 76df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __in const void *pShaderBytecode, 77df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __in SIZE_T BytecodeLength, 78df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar __out ID3D10Blob **ppSignatureBlob 79df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar) 80df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar{ 81df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar dxbc_chunk_signature* sigs[2]; 82df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar sigs[0] = dxbc_find_signature(pShaderBytecode, BytecodeLength, false); 83df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar if(!sigs[0]) 84df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return E_FAIL; 85df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar sigs[1] = dxbc_find_signature(pShaderBytecode, BytecodeLength, true); 86df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar if(!sigs[1]) 87df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return E_FAIL; 88df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar 89df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar return dxbc_assemble_as_blob((dxbc_chunk_header**)&sigs, 2, ppSignatureBlob); 903be2d12bdec9ec3a244aae695d3b586ac27dcfdeDaniel Dunbar} 9190b54138834a057179c7a02931217ab5a82ed389Reid Spencer 92df3388492bc2bfc73b3e0195693e2f67f10dcf52Daniel Dunbar#endif 937b60a15abc155196d9515a1e242ec0137afff753Reid Spencer