1/*
2 * Copyright 2010 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19import "oaidl.idl";
20import "ocidl.idl";
21
22import "d3d10.idl";
23cpp_quote("#include <d3d10_1shader.h>")
24
25
26typedef enum D3D10_FEATURE_LEVEL1
27{
28    D3D10_FEATURE_LEVEL_10_0  = 0xa000,
29    D3D10_FEATURE_LEVEL_10_1  = 0xa100,
30    D3D10_FEATURE_LEVEL_9_1   = 0x9100,
31    D3D10_FEATURE_LEVEL_9_2   = 0x9200,
32    D3D10_FEATURE_LEVEL_9_3   = 0x9300
33} D3D10_FEATURE_LEVEL1;
34
35typedef struct D3D10_RENDER_TARGET_BLEND_DESC1
36{
37    BOOL BlendEnable;
38    D3D10_BLEND SrcBlend;
39    D3D10_BLEND DestBlend;
40    D3D10_BLEND_OP BlendOp;
41    D3D10_BLEND SrcBlendAlpha;
42    D3D10_BLEND DestBlendAlpha;
43    D3D10_BLEND_OP BlendOpAlpha;
44    UINT8 RenderTargetWriteMask;
45} D3D10_RENDER_TARGET_BLEND_DESC1;
46
47typedef struct D3D10_BLEND_DESC1
48{
49    BOOL AlphaToCoverageEnable;
50    BOOL IndependentBlendEnable;
51    D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT];
52} D3D10_BLEND_DESC1;
53
54[
55    uuid(edad8d99-8a35-4d6d-8566-2ea276cde161),
56    object,
57    local,
58    pointer_default(unique)
59]
60interface ID3D10BlendState1 : ID3D10BlendState
61{
62    void GetDesc1([out] D3D10_BLEND_DESC1 *pDesc);
63}
64
65typedef struct D3D10_TEXCUBE_ARRAY_SRV1
66{
67    UINT MostDetailedMip;
68    UINT MipLevels;
69    UINT First2DArrayFace;
70    UINT NumCubes;
71} D3D10_TEXCUBE_ARRAY_SRV1;
72
73typedef D3D_SRV_DIMENSION D3D10_SRV_DIMENSION1;
74
75typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC1
76{
77    DXGI_FORMAT Format;
78    D3D10_SRV_DIMENSION1  ViewDimension;
79    union {
80        D3D10_BUFFER_SRV Buffer;
81        D3D10_TEX1D_SRV Texture1D;
82        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
83        D3D10_TEX2D_SRV Texture2D;
84        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
85        D3D10_TEX2DMS_SRV Texture2DMS;
86        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
87        D3D10_TEX3D_SRV Texture3D;
88        D3D10_TEXCUBE_SRV TextureCube;
89        D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray;
90    };
91} D3D10_SHADER_RESOURCE_VIEW_DESC1;
92
93[
94    uuid(9b7e4c87-342c-4106-a19f-4f2704f689f0),
95    object,
96    local,
97    pointer_default(unique)
98]
99interface ID3D10ShaderResourceView1 : ID3D10ShaderResourceView
100{
101    void GetDesc1([out] D3D10_SHADER_RESOURCE_VIEW_DESC1 *pDesc);
102}
103
104[
105    uuid(9b7e4c8f-342c-4106-a19f-4f2704f689f0),
106    object,
107    local,
108    pointer_default(unique)
109]
110interface ID3D10Device1 : ID3D10Device
111{
112    HRESULT CreateShaderResourceView1(
113            [in] ID3D10Resource *pResource,
114            [in, out] const D3D10_SHADER_RESOURCE_VIEW_DESC1 *pDesc,
115            [out] ID3D10ShaderResourceView1 **ppSRView);
116
117    HRESULT CreateBlendState1(
118            [in] const D3D10_BLEND_DESC1 *pBlendStateDesc,
119            [out] ID3D10BlendState1 **ppBlendState);
120
121    D3D10_FEATURE_LEVEL1 GetFeatureLevel();
122}
123
124const UINT D3D10_1_SDK_VERSION = 0x20;
125