|  | /* | 
|  | * Copyright 2009 Henri Verbeet for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "d3d10.idl"; | 
|  | import "d3d10shader.idl"; | 
|  |  | 
|  | interface ID3D10EffectConstantBuffer; | 
|  | interface ID3D10EffectBlendVariable; | 
|  | interface ID3D10EffectDepthStencilVariable; | 
|  | interface ID3D10EffectDepthStencilViewVariable; | 
|  | interface ID3D10EffectMatrixVariable; | 
|  | interface ID3D10EffectPass; | 
|  | interface ID3D10EffectRasterizerVariable; | 
|  | interface ID3D10EffectRenderTargetViewVariable; | 
|  | interface ID3D10EffectSamplerVariable; | 
|  | interface ID3D10EffectScalarVariable; | 
|  | interface ID3D10EffectShaderVariable; | 
|  | interface ID3D10EffectShaderResourceVariable; | 
|  | interface ID3D10EffectStringVariable; | 
|  | interface ID3D10EffectVectorVariable; | 
|  |  | 
|  | #ifndef D3D10_BYTES_FROM_BITS | 
|  | #define D3D10_BYTES_FROM_BITS(x) (((x) + 7) >> 3) | 
|  | #endif | 
|  | cpp_quote("#ifndef D3D10_BYTES_FROM_BITS") | 
|  | cpp_quote("#define D3D10_BYTES_FROM_BITS(x) (((x) + 7) >> 3)") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | const unsigned int D3D10_EFFECT_VARIABLE_POOLED                 = 0x1; | 
|  | const unsigned int D3D10_EFFECT_VARIABLE_ANNOTATION             = 0x2; | 
|  | const unsigned int D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT    = 0x4; | 
|  |  | 
|  | typedef enum _D3D10_DEVICE_STATE_TYPES | 
|  | { | 
|  | D3D10_DST_SO_BUFFERS = 1, | 
|  | D3D10_DST_OM_RENDER_TARGETS, | 
|  | D3D10_DST_OM_DEPTH_STENCIL_STATE, | 
|  | D3D10_DST_OM_BLEND_STATE, | 
|  | D3D10_DST_VS, | 
|  | D3D10_DST_VS_SAMPLERS, | 
|  | D3D10_DST_VS_SHADER_RESOURCES, | 
|  | D3D10_DST_VS_CONSTANT_BUFFERS, | 
|  | D3D10_DST_GS, | 
|  | D3D10_DST_GS_SAMPLERS, | 
|  | D3D10_DST_GS_SHADER_RESOURCES, | 
|  | D3D10_DST_GS_CONSTANT_BUFFERS, | 
|  | D3D10_DST_PS, | 
|  | D3D10_DST_PS_SAMPLERS, | 
|  | D3D10_DST_PS_SHADER_RESOURCES, | 
|  | D3D10_DST_PS_CONSTANT_BUFFERS, | 
|  | D3D10_DST_IA_VERTEX_BUFFERS, | 
|  | D3D10_DST_IA_INDEX_BUFFER, | 
|  | D3D10_DST_IA_INPUT_LAYOUT, | 
|  | D3D10_DST_IA_PRIMITIVE_TOPOLOGY, | 
|  | D3D10_DST_RS_VIEWPORTS, | 
|  | D3D10_DST_RS_SCISSOR_RECTS, | 
|  | D3D10_DST_RS_RASTERIZER_STATE, | 
|  | D3D10_DST_PREDICATION, | 
|  | } D3D10_DEVICE_STATE_TYPES; | 
|  |  | 
|  | typedef struct _D3D10_EFFECT_TYPE_DESC | 
|  | { | 
|  | const char *TypeName; | 
|  | D3D10_SHADER_VARIABLE_CLASS Class; | 
|  | D3D10_SHADER_VARIABLE_TYPE Type; | 
|  | UINT Elements; | 
|  | UINT Members; | 
|  | UINT Rows; | 
|  | UINT Columns; | 
|  | UINT PackedSize; | 
|  | UINT UnpackedSize; | 
|  | UINT Stride; | 
|  | } D3D10_EFFECT_TYPE_DESC; | 
|  |  | 
|  | typedef struct _D3D10_EFFECT_VARIABLE_DESC | 
|  | { | 
|  | const char *Name; | 
|  | const char *Semantic; | 
|  | UINT Flags; | 
|  | UINT Annotations; | 
|  | UINT BufferOffset; | 
|  | UINT ExplicitBindPoint; | 
|  | } D3D10_EFFECT_VARIABLE_DESC; | 
|  |  | 
|  | typedef struct _D3D10_TECHNIQUE_DESC | 
|  | { | 
|  | const char *Name; | 
|  | UINT Passes; | 
|  | UINT Annotations; | 
|  | } D3D10_TECHNIQUE_DESC; | 
|  |  | 
|  | typedef struct _D3D10_STATE_BLOCK_MASK | 
|  | { | 
|  | BYTE VS; | 
|  | BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]; | 
|  | BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]; | 
|  | BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]; | 
|  | BYTE GS; | 
|  | BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]; | 
|  | BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]; | 
|  | BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]; | 
|  | BYTE PS; | 
|  | BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]; | 
|  | BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]; | 
|  | BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]; | 
|  | BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)]; | 
|  | BYTE IAIndexBuffer; | 
|  | BYTE IAInputLayout; | 
|  | BYTE IAPrimitiveTopology; | 
|  | BYTE OMRenderTargets; | 
|  | BYTE OMDepthStencilState; | 
|  | BYTE OMBlendState; | 
|  | BYTE RSViewports; | 
|  | BYTE RSScissorRects; | 
|  | BYTE RSRasterizerState; | 
|  | BYTE SOBuffers; | 
|  | BYTE Predication; | 
|  | } D3D10_STATE_BLOCK_MASK; | 
|  |  | 
|  | typedef struct _D3D10_EFFECT_DESC | 
|  | { | 
|  | BOOL IsChildEffect; | 
|  | UINT ConstantBuffers; | 
|  | UINT SharedConstantBuffers; | 
|  | UINT GlobalVariables; | 
|  | UINT SharedGlobalVariables; | 
|  | UINT Techniques; | 
|  | } D3D10_EFFECT_DESC; | 
|  |  | 
|  | typedef struct _D3D10_EFFECT_SHADER_DESC | 
|  | { | 
|  | const BYTE *pInputSignature; | 
|  | BOOL IsInline; | 
|  | const BYTE *pBytecode; | 
|  | UINT BytecodeLength; | 
|  | const char *SODecl; | 
|  | UINT NumInputSignatureEntries; | 
|  | UINT NumOutputSignatureEntries; | 
|  | } D3D10_EFFECT_SHADER_DESC; | 
|  |  | 
|  | typedef struct _D3D10_PASS_DESC | 
|  | { | 
|  | const char *Name; | 
|  | UINT Annotations; | 
|  | BYTE *pIAInputSignature; | 
|  | SIZE_T IAInputSignatureSize; | 
|  | UINT StencilRef; | 
|  | UINT SampleMask; | 
|  | FLOAT BlendFactor[4]; | 
|  | } D3D10_PASS_DESC; | 
|  |  | 
|  | typedef struct _D3D10_PASS_SHADER_DESC | 
|  | { | 
|  | ID3D10EffectShaderVariable *pShaderVariable; | 
|  | UINT ShaderIndex; | 
|  | } D3D10_PASS_SHADER_DESC; | 
|  |  | 
|  | const unsigned int D3D10_EFFECT_COMPILE_CHILD_EFFECT    = 0x0001; | 
|  | const unsigned int D3D10_EFFECT_COMPILE_ALLOW_SLOW_OPS  = 0x0002; | 
|  | const unsigned int D3D10_EFFECT_SINGLE_THREADED         = 0x0008; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(4e9e1ddc-cd9d-4772-a837-00180b9b88fd), | 
|  | ] | 
|  | interface ID3D10EffectType | 
|  | { | 
|  | BOOL IsValid(); | 
|  | HRESULT GetDesc(D3D10_EFFECT_TYPE_DESC *desc); | 
|  | ID3D10EffectType *GetMemberTypeByIndex(UINT index); | 
|  | ID3D10EffectType *GetMemberTypeByName(const char *name); | 
|  | ID3D10EffectType *GetMemberTypeBySemantic(const char *semantic); | 
|  | const char *GetMemberName(UINT index); | 
|  | const char *GetMemberSemantic(UINT index); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(ae897105-00e6-45bf-bb8e-281dd6db8e1b), | 
|  | ] | 
|  | interface ID3D10EffectVariable | 
|  | { | 
|  | BOOL IsValid(); | 
|  | ID3D10EffectType *GetType(); | 
|  | HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC *desc); | 
|  | ID3D10EffectVariable *GetAnnotationByIndex(UINT index); | 
|  | ID3D10EffectVariable *GetAnnotationByName(const char *name); | 
|  | ID3D10EffectVariable *GetMemberByIndex(UINT index); | 
|  | ID3D10EffectVariable *GetMemberByName(const char *name); | 
|  | ID3D10EffectVariable *GetMemberBySemantic(const char *semantic); | 
|  | ID3D10EffectVariable *GetElement(UINT index); | 
|  | ID3D10EffectConstantBuffer *GetParentConstantBuffer(); | 
|  | ID3D10EffectScalarVariable *AsScalar(); | 
|  | ID3D10EffectVectorVariable *AsVector(); | 
|  | ID3D10EffectMatrixVariable *AsMatrix(); | 
|  | ID3D10EffectStringVariable *AsString(); | 
|  | ID3D10EffectShaderResourceVariable *AsShaderResource(); | 
|  | ID3D10EffectRenderTargetViewVariable *AsRenderTargetView(); | 
|  | ID3D10EffectDepthStencilViewVariable *AsDepthStencilView(); | 
|  | ID3D10EffectConstantBuffer *AsConstantBuffer(); | 
|  | ID3D10EffectShaderVariable *AsShader(); | 
|  | ID3D10EffectBlendVariable *AsBlend(); | 
|  | ID3D10EffectDepthStencilVariable *AsDepthStencil(); | 
|  | ID3D10EffectRasterizerVariable *AsRasterizer(); | 
|  | ID3D10EffectSamplerVariable *AsSampler(); | 
|  | HRESULT SetRawValue(void *data, UINT offset, UINT count); | 
|  | HRESULT GetRawValue(void *data, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(56648f4d-cc8b-4444-a5ad-b5a3d76e91b3), | 
|  | ] | 
|  | interface ID3D10EffectConstantBuffer : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetConstantBuffer(ID3D10Buffer *buffer); | 
|  | HRESULT GetConstantBuffer(ID3D10Buffer **buffer); | 
|  | HRESULT SetTextureBuffer(ID3D10ShaderResourceView *view); | 
|  | HRESULT GetTextureBuffer(ID3D10ShaderResourceView **view); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(00e48f7b-d2c8-49e8-a86c-022dee53431f), | 
|  | ] | 
|  | interface ID3D10EffectScalarVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetFloat(float value); | 
|  | HRESULT GetFloat(float *value); | 
|  | HRESULT SetFloatArray(float *values, UINT offset, UINT count); | 
|  | HRESULT GetFloatArray(float *values, UINT offset, UINT count); | 
|  | HRESULT SetInt(int value); | 
|  | HRESULT GetInt(int *value); | 
|  | HRESULT SetIntArray(int *values, UINT offset, UINT count); | 
|  | HRESULT GetIntArray(int *values, UINT offset, UINT count); | 
|  | HRESULT SetBool(BOOL value); | 
|  | HRESULT GetBool(BOOL *value); | 
|  | HRESULT SetBoolArray(BOOL *values, UINT offset, UINT count); | 
|  | HRESULT GetBoolArray(BOOL *values, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(62b98c44-1f82-4c67-bcd0-72cf8f217e81), | 
|  | ] | 
|  | interface ID3D10EffectVectorVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetBoolVector(BOOL *value); | 
|  | HRESULT SetIntVector(int *value); | 
|  | HRESULT SetFloatVector(float *value); | 
|  | HRESULT GetBoolVector(BOOL *value); | 
|  | HRESULT GetIntVector(int *value); | 
|  | HRESULT GetFloatVector(float *value); | 
|  | HRESULT SetBoolVectorArray(BOOL *values, UINT offset, UINT count); | 
|  | HRESULT SetIntVectorArray(int *values, UINT offset, UINT count); | 
|  | HRESULT SetFloatVectorArray(float *values, UINT offset, UINT count); | 
|  | HRESULT GetBoolVectorArray(BOOL *values, UINT offset, UINT count); | 
|  | HRESULT GetIntVectorArray(int *values, UINT offset, UINT count); | 
|  | HRESULT GetFloatVectorArray(float *values, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(50666c24-b82f-4eed-a172-5b6e7e8522e0), | 
|  | ] | 
|  | interface ID3D10EffectMatrixVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetMatrix(float *data); | 
|  | HRESULT GetMatrix(float *data); | 
|  | HRESULT SetMatrixArray(float *data, UINT offset, UINT count); | 
|  | HRESULT GetMatrixArray(float *data, UINT offset, UINT count); | 
|  | HRESULT SetMatrixTranspose(float *data); | 
|  | HRESULT GetMatrixTranspose(float *data); | 
|  | HRESULT SetMatrixTransposeArray(float *data, UINT offset, UINT count); | 
|  | HRESULT GetMatrixTransposeArray(float *data, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(71417501-8df9-4e0a-a78a-255f9756baff), | 
|  | ] | 
|  | interface ID3D10EffectStringVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetString(const char **str); | 
|  | HRESULT GetStringArray(const char **strs, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(c0a7157b-d872-4b1d-8073-efc2acd4b1fc), | 
|  | ] | 
|  | interface ID3D10EffectShaderResourceVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetResource(ID3D10ShaderResourceView *resource); | 
|  | HRESULT GetResource(ID3D10ShaderResourceView **resource); | 
|  | HRESULT SetResourceArray(ID3D10ShaderResourceView **resources, UINT offset, UINT count); | 
|  | HRESULT GetResourceArray(ID3D10ShaderResourceView **resources, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(28ca0cc3-c2c9-40bb-b57f-67b737122b17), | 
|  | ] | 
|  | interface ID3D10EffectRenderTargetViewVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetRenderTarget(ID3D10RenderTargetView *view); | 
|  | HRESULT GetRenderTarget(ID3D10RenderTargetView **view); | 
|  | HRESULT SetRenderTargetArray(ID3D10RenderTargetView **views, UINT offset, UINT count); | 
|  | HRESULT GetRenderTargetArray(ID3D10RenderTargetView **views, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(3e02c918-cc79-4985-b622-2d92ad701623), | 
|  | ] | 
|  | interface ID3D10EffectDepthStencilViewVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT SetDepthStencil(ID3D10DepthStencilView *view); | 
|  | HRESULT GetDepthStencil(ID3D10DepthStencilView **view); | 
|  | HRESULT SetDepthStencilArray(ID3D10DepthStencilView **views, UINT offset, UINT count); | 
|  | HRESULT GetDepthStencilArray(ID3D10DepthStencilView **views, UINT offset, UINT count); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(80849279-c799-4797-8c33-0407a07d9e06), | 
|  | ] | 
|  | interface ID3D10EffectShaderVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetShaderDesc(UINT index, D3D10_EFFECT_SHADER_DESC *desc); | 
|  | HRESULT GetVertexShader(UINT index, ID3D10VertexShader **shader); | 
|  | HRESULT GetGeometryShader(UINT index, ID3D10GeometryShader **shader); | 
|  | HRESULT GetPixelShader(UINT index, ID3D10PixelShader **shader); | 
|  | HRESULT GetInputSignatureElementDesc(UINT shader_index, UINT element_index, | 
|  | D3D10_SIGNATURE_PARAMETER_DESC *desc); | 
|  | HRESULT GetOutputSignatureElementDesc(UINT shader_index, UINT element_index, | 
|  | D3D10_SIGNATURE_PARAMETER_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1fcd2294-df6d-4eae-86b3-0e9160cfb07b), | 
|  | ] | 
|  | interface ID3D10EffectBlendVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetBlendState(UINT index, ID3D10BlendState **blend_state); | 
|  | HRESULT GetBackingStore(UINT index, D3D10_BLEND_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(af482368-330a-46a5-9a5c-01c71af24c8d), | 
|  | ] | 
|  | interface ID3D10EffectDepthStencilVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetDepthStencilState(UINT index, ID3D10DepthStencilState **depth_stencil_state); | 
|  | HRESULT GetBackingStore(UINT index, D3D10_DEPTH_STENCIL_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(21af9f0e-4d94-4ea9-9785-2cb76b8c0b34), | 
|  | ] | 
|  | interface ID3D10EffectRasterizerVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetRasterizerState(UINT index, ID3D10RasterizerState **rasterizer_state); | 
|  | HRESULT GetBackingStore(UINT index, D3D10_RASTERIZER_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(6530d5c7-07e9-4271-a418-e7ce4bd1e480), | 
|  | ] | 
|  | interface ID3D10EffectSamplerVariable : ID3D10EffectVariable | 
|  | { | 
|  | HRESULT GetSampler(UINT index, ID3D10SamplerState **sampler); | 
|  | HRESULT GetBackingStore(UINT index, D3D10_SAMPLER_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(db122ce8-d1c9-4292-b237-24ed3de8b175), | 
|  | ] | 
|  | interface ID3D10EffectTechnique | 
|  | { | 
|  | BOOL IsValid(); | 
|  | HRESULT GetDesc(D3D10_TECHNIQUE_DESC *desc); | 
|  | ID3D10EffectVariable *GetAnnotationByIndex(UINT index); | 
|  | ID3D10EffectVariable *GetAnnotationByName(const char *name); | 
|  | ID3D10EffectPass *GetPassByIndex(UINT index); | 
|  | ID3D10EffectPass *GetPassByName(const char *name); | 
|  | HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK *mask); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(51b0ca8b-ec0b-4519-870d-8ee1cb5017c7), | 
|  | ] | 
|  | interface ID3D10Effect : IUnknown | 
|  | { | 
|  | BOOL IsValid(); | 
|  | BOOL IsPool(); | 
|  | HRESULT GetDevice(ID3D10Device **device); | 
|  | HRESULT GetDesc(D3D10_EFFECT_DESC *desc); | 
|  | ID3D10EffectConstantBuffer *GetConstantBufferByIndex(UINT index); | 
|  | ID3D10EffectConstantBuffer *GetConstantBufferByName(const char *name); | 
|  | ID3D10EffectVariable *GetVariableByIndex(UINT index); | 
|  | ID3D10EffectVariable *GetVariableByName(const char *name); | 
|  | ID3D10EffectVariable *GetVariableBySemantic(const char *semantic); | 
|  | ID3D10EffectTechnique *GetTechniqueByIndex(UINT index); | 
|  | ID3D10EffectTechnique *GetTechniqueByName(const char *name); | 
|  | HRESULT Optimize(); | 
|  | BOOL IsOptimized(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(9537ab04-3250-412e-8213-fcd2f8677933), | 
|  | ] | 
|  | interface ID3D10EffectPool : IUnknown | 
|  | { | 
|  | ID3D10Effect *AsEffect(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(5cfbeb89-1a06-46e0-b282-e3f9bfa36a54), | 
|  | ] | 
|  | interface ID3D10EffectPass | 
|  | { | 
|  | BOOL IsValid(); | 
|  | HRESULT GetDesc(D3D10_PASS_DESC *desc); | 
|  | HRESULT GetVertexShaderDesc(D3D10_PASS_SHADER_DESC *desc); | 
|  | HRESULT GetGeometryShaderDesc(D3D10_PASS_SHADER_DESC *desc); | 
|  | HRESULT GetPixelShaderDesc(D3D10_PASS_SHADER_DESC *desc); | 
|  | ID3D10EffectVariable *GetAnnotationByIndex(UINT index); | 
|  | ID3D10EffectVariable *GetAnnotationByName(const char *name); | 
|  | HRESULT Apply(UINT flags); | 
|  | HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK *mask); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(0803425a-57f5-4dd6-9465-a87570834a08), | 
|  | ] | 
|  | interface ID3D10StateBlock : IUnknown | 
|  | { | 
|  | HRESULT Capture(); | 
|  | HRESULT Apply(); | 
|  | HRESULT ReleaseAllDeviceObjects(); | 
|  | HRESULT GetDevice(ID3D10Device **device); | 
|  | } | 
|  |  | 
|  | HRESULT __stdcall D3D10CompileEffectFromMemory(void *data, SIZE_T data_size, const char *filename, | 
|  | const D3D10_SHADER_MACRO *defines, ID3D10Include *include, UINT hlsl_flags, UINT fx_flags, | 
|  | ID3D10Blob **effect, ID3D10Blob **errors); | 
|  | HRESULT __stdcall D3D10CreateEffectFromMemory(void *data, SIZE_T data_size, UINT flags, | 
|  | ID3D10Device *device, ID3D10EffectPool *effect_pool, ID3D10Effect **effect); | 
|  | HRESULT __stdcall D3D10CreateEffectPoolFromMemory(void *data, SIZE_T data_size, UINT fx_flags, | 
|  | ID3D10Device *device, ID3D10EffectPool **effect_pool); | 
|  | HRESULT __stdcall D3D10CreateStateBlock(ID3D10Device *device, | 
|  | D3D10_STATE_BLOCK_MASK *mask, ID3D10StateBlock **stateblock); | 
|  |  | 
|  | HRESULT __stdcall D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK *mask_x, | 
|  | D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result); | 
|  | HRESULT __stdcall D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK *mask); | 
|  | HRESULT __stdcall D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK *mask, | 
|  | D3D10_DEVICE_STATE_TYPES state_type, UINT start_idx, UINT count); | 
|  | HRESULT __stdcall D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK *mask); | 
|  | HRESULT __stdcall D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK *mask, | 
|  | D3D10_DEVICE_STATE_TYPES state_type, UINT start_idx, UINT count); | 
|  | BOOL __stdcall D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK *mask, | 
|  | D3D10_DEVICE_STATE_TYPES state_type, UINT idx); | 
|  | HRESULT __stdcall D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK *mask_x, | 
|  | D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result); | 
|  | HRESULT __stdcall D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK *mask_x, | 
|  | D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result); |