1 module aurora.directx.d3d11.d3d11_1;
2 
3 public import aurora.directx.d3d11.d3d11_0;
4 
5 public:
6 
7 ///
8 /// Constants
9 ///
10 
11 ///
12 /// Functions
13 ///
14 
15 ///
16 /// Enumerations
17 ///
18 
19 enum D3D11_COPY_FLAGS : uint
20 {
21     NO_OVERWRITE = 0x1,
22     DISCARD = 0x2
23 }
24 
25 enum D3D11_LOGIC_OP : uint
26 {
27     CLEAR	= 0,
28     SET	= ( CLEAR + 1 ) ,
29     COPY	= ( SET + 1 ) ,
30     COPY_INVERTED	= ( COPY + 1 ) ,
31     NOOP	= ( COPY_INVERTED + 1 ) ,
32     INVERT	= ( NOOP + 1 ) ,
33     AND	= ( INVERT + 1 ) ,
34     NAND	= ( AND + 1 ) ,
35     OR	= ( NAND + 1 ) ,
36     NOR	= ( OR + 1 ) ,
37     XOR	= ( NOR + 1 ) ,
38     EQUIV	= ( XOR + 1 ) ,
39     AND_REVERSE	= ( EQUIV + 1 ) ,
40     AND_INVERTED	= ( AND_REVERSE + 1 ) ,
41     OR_REVERSE	= ( AND_INVERTED + 1 ) ,
42     OR_INVERTED	= ( OR_REVERSE + 1 ) 
43 }
44 
45 enum D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG : uint
46 {
47     SINGLETHREADED	= 0x1
48 }
49 
50 enum D3D11_VIDEO_DECODER_CAPS : uint
51 {
52     DOWNSAMPLE	= 0x1,
53     NON_REAL_TIME	= 0x2,
54     DOWNSAMPLE_DYNAMIC	= 0x4,
55     DOWNSAMPLE_REQUIRED	= 0x8,
56     UNSUPPORTED	= 0x10
57 }
58 
59 enum D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS : uint
60 {
61     MULTIPLANE_OVERLAY_ROTATION	= 0x1,
62     MULTIPLANE_OVERLAY_RESIZE	= 0x2,
63     MULTIPLANE_OVERLAY_COLOR_SPACE_CONVERSION	= 0x4,
64     TRIPLE_BUFFER_OUTPUT	= 0x8
65 }
66 
67 enum D3D11_CRYPTO_SESSION_STATUS : uint
68 {
69     OK	= 0,
70     KEY_LOST	= 1,
71     KEY_AND_CONTENT_LOST	= 2
72 }
73 
74 ///
75 /// Structures
76 ///
77 
78 struct D3D11_RENDER_TARGET_BLEND_DESC1
79 {
80 	bool           BlendEnable;
81 	bool           LogicOpEnable;
82 	D3D11_BLEND    SrcBlend;
83 	D3D11_BLEND    DestBlend;
84 	D3D11_BLEND_OP BlendOp;
85 	D3D11_BLEND    SrcBlendAlpha;
86 	D3D11_BLEND    DestBlendAlpha;
87 	D3D11_BLEND_OP BlendOpAlpha;
88 	D3D11_LOGIC_OP LogicOp;
89 	ubyte          RenderTargetWriteMask;
90 }
91 
92 struct D3D11_BLEND_DESC1
93 {
94     bool AlphaToCoverageEnable;
95     bool IndependentBlendEnable;
96     D3D11_RENDER_TARGET_BLEND_DESC1[8] RenderTarget;
97 }
98 
99 struct D3D11_RASTERIZER_DESC1 {
100 	D3D11_FILL_MODE FillMode;
101 	D3D11_CULL_MODE CullMode;
102 	bool            FrontCounterClockwise;
103 	int             DepthBias;
104 	float           DepthBiasClamp;
105 	float           SlopeScaledDepthBias;
106 	bool            DepthClipEnable;
107 	bool            ScissorEnable;
108 	bool            MultisampleEnable;
109 	bool            AntialiasedLineEnable;
110 	uint            ForcedSampleCount;
111 }
112 
113 struct D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK
114 {
115     uint ClearSize;
116     uint EncryptedSize;
117 }
118 
119 struct D3D11_VIDEO_DECODER_BUFFER_DESC1
120 {
121     D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
122     uint DataOffset;
123     uint DataSize;void *pIV;
124     uint IVSize;
125     D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK *pSubSampleMappingBlock;
126     uint SubSampleMappingCount;
127 }
128 
129 struct D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION
130 {
131     ID3D11CryptoSession pCryptoSession;
132     uint BlobSize;void *pBlob;
133     GUID *pKeyInfoId;
134     uint PrivateDataSize;
135     void *pPrivateData;
136 }
137 
138 struct D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT
139 {
140     bool Enable;
141     uint Width;
142     uint Height;
143     DXGI_FORMAT Format;
144 }
145 
146 struct D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA
147 {
148     uint PrivateDataSize;
149     uint HWProtectionDataSize;
150     ubyte[4] pbInput;
151 }
152 
153 struct D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA
154     {
155     uint PrivateDataSize;
156     uint MaxHWProtectionDataSize;
157     uint HWProtectionDataSize;
158     ulong TransportTime;
159     ulong ExecutionTime;
160     ubyte[4] pbOutput;
161 }
162 
163 struct D3D11_KEY_EXCHANGE_HW_PROTECTION_DATA
164 {
165     uint HWProtectionFunctionID;
166     D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA *pInputData;
167     D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA *pOutputData;
168     HRESULT Status;
169 }
170 
171 struct D3D11_VIDEO_SAMPLE_DESC
172 {
173     uint Width;
174     uint Height;
175     DXGI_FORMAT Format;
176     DXGI_COLOR_SPACE_TYPE ColorSpace;
177 }
178 
179 ///
180 /// Interfaces
181 ///
182 
183 mixin(uuid!(ID3D11BlendState1, "cc86fabe-da55-401d-85e7-e3c9de2877e9"));
184 public interface ID3D11BlendState1 : ID3D11BlendState
185 {
186 extern(Windows):
187 	void GetDesc1(D3D11_BLEND_DESC1 *pDesc);
188 }
189 
190 mixin(uuid!(ID3D11RasterizerState1, "1217d7a6-5039-418c-b042-9cbe256afd6e"));
191 public interface ID3D11RasterizerState1 : ID3D11RasterizerState
192 {
193 extern(Windows):
194 	void GetDesc1(D3D11_RASTERIZER_DESC1 *pDesc);
195 }
196 
197 mixin(uuid!(ID3DDeviceContextState, "5c1e0d8a-7c23-48f9-8c59-a92958ceff11"));
198 public interface ID3DDeviceContextState : ID3D11DeviceChild
199 {
200 extern(Windows):
201 }
202 
203 mixin(uuid!(ID3D11DeviceContext1, "bb2c6faa-b5fb-4082-8e6b-388b8cfa90e1"));
204 public interface ID3D11DeviceContext1 : ID3D11DeviceContext
205 {
206 extern(Windows):
207 	void ClearView(ID3D11View pView, const(float[4]) Color, const(D3D11_RECT) *pRect, uint NumRects);
208 	void CopySubresourceRegion1(ID3D11Resource pDstResource, uint DstSubresource, uint DstX, uint DstY, uint DstZ, ID3D11Resource pSrcResource, uint SrcSubresource, const(D3D11_BOX) *pSrcBox, uint CopyFlags);
209 	void CSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
210 	void CSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint)*pFirstConstant, const(uint)*pNumConstants);
211 	void DiscardResource(ID3D11Resource pResource);
212 	void DiscardView(ID3D11View pResourceView);
213 	void DiscardView1(ID3D11View pResourceView, const(D3D11_RECT) *pRects, uint NumRects);
214 	void DSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
215 	void DSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint) *pFirstConstant, const(uint) *pNumConstants);
216 	void GSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
217 	void GSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint) *pFirstConstant, const(uint) *pNumConstants);
218 	void HSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
219 	void HSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint) *pFirstConstant, const(uint) *pNumConstants);
220 	void PSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
221 	void PSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint) *pFirstConstant, const(uint) *pNumConstants);
222 	void SwapDeviceContextState(ID3DDeviceContextState pState, ID3DDeviceContextState *ppPreviousState);
223 	void UpdateSubresource1(ID3D11Resource pDstResource, uint DstSubresource, const(D3D11_BOX) *pDstBox, const(void) *pSrcData, uint SrcRowPitch, uint SrcDepthPitch, uint CopyFlags);
224 	void VSGetConstantBuffers1(uint StartSlot, uint NumBuffers, ID3D11Buffer *ppConstantBuffers, uint* pFirstConstant, uint* pNumConstants);
225 	void VSSetConstantBuffers1(uint StartSlot, uint NumBuffers, const(ID3D11Buffer) *ppConstantBuffers, const(uint) *pFirstConstant, const(uint) *pNumConstants);
226 }
227 
228 mixin(uuid!(ID3D11VideoContext1, "A7F026DA-A5F8-4487-A564-15E34357651E"));
229 public interface ID3D11VideoContext1 : ID3D11VideoContext
230 {
231 extern(Windows):
232     HRESULT CheckCryptoSessionStatus(ID3D11CryptoSession pCryptoSession, D3D11_CRYPTO_SESSION_STATUS *pStatus);
233     HRESULT DecoderEnableDownsampling(ID3D11VideoDecoder pDecoder, DXGI_COLOR_SPACE_TYPE InputColorSpace, const D3D11_VIDEO_SAMPLE_DESC *pOutputDesc, uint ReferenceFrameCount);
234     HRESULT DecoderUpdateDownsampling(ID3D11VideoDecoder pDecoder, const D3D11_VIDEO_SAMPLE_DESC *pOutputDesc);
235     HRESULT GetDataForNewHardwareKey(ID3D11CryptoSession pCryptoSession, uint PrivateInputSize, const void *pPrivatInputData, ulong *pPrivateOutputData);
236     HRESULT SubmitDecoderBuffers1(ID3D11VideoDecoder pDecoder, uint NumBuffers, const D3D11_VIDEO_DECODER_BUFFER_DESC1 *pBufferDesc);
237     HRESULT VideoProcessorGetBehaviorHints(ID3D11VideoProcessor pVideoProcessor, uint OutputWidth, uint OutputHeight, DXGI_FORMAT OutputFormat, uint StreamCount, const D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT *pStreams, uint *pBehaviorHints);
238     void VideoProcessorGetOutputColorSpace1(ID3D11VideoProcessor pVideoProcessor, DXGI_COLOR_SPACE_TYPE *pColorSpace);
239     void VideoProcessorGetOutputShaderUsage(ID3D11VideoProcessor pVideoProcessor, bool *pShaderUsage);
240     void VideoProcessorGetStreamColorSpace1(ID3D11VideoProcessor pVideoProcessor, uint StreamIndex, DXGI_COLOR_SPACE_TYPE *pColorSpace);
241     void VideoProcessorGetStreamMirror(ID3D11VideoProcessor pVideoProcessor, uint StreamIndex, bool *pEnable, bool *pFlipHorizontal, bool *pFlipVertical);
242     void VideoProcessorSetOutputColorSpace1(ID3D11VideoProcessor pVideoProcessor, DXGI_COLOR_SPACE_TYPE ColorSpace);
243     void VideoProcessorSetOutputShaderUsage(ID3D11VideoProcessor pVideoProcessor, bool ShaderUsage);
244     void VideoProcessorSetStreamColorSpace1(ID3D11VideoProcessor pVideoProcessor, uint StreamIndex, DXGI_COLOR_SPACE_TYPE ColorSpace);
245     void VideoProcessorSetStreamMirror(ID3D11VideoProcessor pVideoProcessor, uint StreamIndex, bool Enable, bool FlipHorizontal, bool FlipVertical);
246 }
247 
248 mixin(uuid!(ID3D11VideoDevice1, "29DA1D51-1321-4454-804B-F5FC9F861F0F"));
249 public interface ID3D11VideoDevice1 : ID3D11VideoDevice
250 {
251 extern(Windows):
252     HRESULT CheckVideoDecoderDownsampling(const D3D11_VIDEO_DECODER_DESC *pInputDesc, DXGI_COLOR_SPACE_TYPE InputColorSpace, const D3D11_VIDEO_DECODER_CONFIG *pInputConfig, const DXGI_RATIONAL *pFrameRate, const D3D11_VIDEO_SAMPLE_DESC *pOutputDesc, bool *pSupported, bool *pRealTimeHint);
253     HRESULT GetCryptoSessionPrivateDataSize(const GUID *pCryptoType, const GUID *pDecoderProfile, const GUID *pKeyExchangeType, uint *pPrivateInputSize, uint *pPrivateOutputSize);
254     HRESULT GetVideoDecoderCaps(const GUID *pDecoderProfile, uint SampleWidth, uint SampleHeight, const DXGI_RATIONAL *pFrameRate, uint BitRate, const GUID *pCryptoType, uint *pDecoderCaps);
255     HRESULT RecommendVideoDecoderDownsampleParameters(const D3D11_VIDEO_DECODER_DESC *pInputDesc, DXGI_COLOR_SPACE_TYPE InputColorSpace, const D3D11_VIDEO_DECODER_CONFIG *pInputConfig, const DXGI_RATIONAL *pFrameRate, D3D11_VIDEO_SAMPLE_DESC *pRecommendedOutputDesc);
256 }
257 
258 mixin(uuid!(ID3D11VideoProcessorEnumerator1, "465217F2-5568-43CF-B5B9-F61D54531CA1"));
259 public interface ID3D11VideoProcessorEnumerator1 : ID3D11VideoProcessorEnumerator
260 {
261 extern(Windows):
262     HRESULT CheckVideoProcessorFormatConversion(DXGI_FORMAT InputFormat, DXGI_COLOR_SPACE_TYPE InputColorSpace, DXGI_FORMAT OutputFormat, DXGI_COLOR_SPACE_TYPE OutputColorSpace, bool *pSupported);
263 }
264 
265 mixin(uuid!(ID3D11Device1, "a04bfb29-08ef-43d6-a49c-a9bdbdcbe686"));
266 public interface ID3D11Device1 : ID3D11Device
267 {
268 extern(Windows):
269 	HRESULT CreateBlendState1(const D3D11_BLEND_DESC1 *pBlendStateDesc, ID3D11BlendState1 *ppBlendState);
270 	HRESULT CreateDeferredContext1(uint ContextFlags, ID3D11DeviceContext1 *ppDeferredContext);
271 	HRESULT CreateDeviceContextState(uint Flags, const D3D_FEATURE_LEVEL *pFeatureLevels, uint FeatureLevels, uint SDKVersion, IID* EmulatedInterface, D3D_FEATURE_LEVEL *pChosenFeatureLevel, ID3DDeviceContextState *ppContextState);
272 	HRESULT CreateRasterizerState1(const D3D11_RASTERIZER_DESC1 *pRasterizerDesc, ID3D11RasterizerState1 *ppRasterizerState);
273 	void GetImmediateContext1(ID3D11DeviceContext1 *ppImmediateContext);
274 	HRESULT OpenSharedResource1(HANDLE hResource, IID* returnedInterface, void **ppResource);
275 	HRESULT OpenSharedResourceByName(const(wchar)* lpName, uint dwDesiredAccess, IID* returnedInterface, void **ppResource);
276 }
277 
278 mixin(uuid!(ID3DUserDefinedAnnotation, "b2daad8b-03d4-4dbf-95eb-32ab4b63d0ab"));
279 public interface ID3DUserDefinedAnnotation : IUnknown
280 {
281 extern(Windows):
282     int BeginEvent(const wchar *Name);
283     int EndEvent();
284     bool GetStatus();
285     void SetMarker(const wchar *Name);
286 }