1 module aurora.directx.d3d11.d3dcsx;
2 
3 import aurora.directx.com;
4 import aurora.directx.dxgi;
5 import aurora.directx.d3d11;
6 
7 //
8 // Constants
9 //
10 
11 enum int D3DX11_FFT_MAX_PRECOMPUTE_BUFFERS = 4;
12 enum int D3DX11_FFT_MAX_TEMP_BUFFERS = 4;
13 enum int D3DX11_FFT_MAX_DIMENSIONS = 32;
14 
15 //
16 // Enumerations
17 //
18 
19 public enum D3DX11_FFT_CREATE_FLAG : int { 
20 	DO_NOT_ADDREF_BUFFERS  = 0x01L
21 }
22 
23 public enum D3DX11_FFT_DATA_TYPE : int { 
24 	REAL,
25 	COMPLEX
26 }
27 
28 public enum D3DX11_FFT_DIM_MASK : int { 
29 	MASK_1D  = 0x1,
30 	MASK_2D  = 0x3,
31 	MASK_3D  = 0x7
32 }
33 
34 public enum D3DX11_SCAN_DATA_TYPE : int { 
35 	FLOAT  = 1,
36 	INT = 2,
37 	UINT = 3
38 }
39 
40 public enum D3DX11_SCAN_DIRECTION : int { 
41 	FORWARD   = 1,
42 	BACKWARD = 2
43 }
44 
45 public enum D3DX11_SCAN_OPCODE : int { 
46 	ADD  = 1,
47 	MIN = 2,
48 	MAX = 3,
49 	MUL = 4,
50 	AND = 5,
51 	OR = 6,
52 	XOR = 7
53 }
54 
55 //
56 // Structures
57 //
58 
59 public struct D3DX11_FFT_BUFFER_INFO {
60 	uint NumTempBufferSizes;
61 	uint[D3DX11_FFT_MAX_TEMP_BUFFERS] TempBufferFloatSizes;
62 	uint NumPrecomputeBufferSizes;
63 	uint[D3DX11_FFT_MAX_PRECOMPUTE_BUFFERS] PrecomputeBufferFloatSizes;
64 }
65 
66 public struct D3DX11_FFT_DESC {
67 	uint NumDimensions;
68 	uint[D3DX11_FFT_MAX_DIMENSIONS] ElementLengths;
69 	uint DimensionMask;
70 	D3DX11_FFT_DATA_TYPE Type;
71 }
72 
73 //
74 // Functions
75 //
76 
77 extern(Windows) HRESULT D3DX11CreateScan(ID3D11DeviceContext pDeviceContext, uint MaxElementScanSize, uint MaxScanCount, ID3DX11Scan *ppScan);
78 extern(Windows) HRESULT D3DX11CreateSegmentedScan(ID3D11DeviceContext pDeviceContext, uint MaxElementScanSize, ID3DX11SegmentedScan *ppScan);
79 extern(Windows) HRESULT D3DX11CreateFFT(ID3D11DeviceContext pDeviceContext,	const(D3DX11_FFT_DESC) *pDesc, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
80 extern(Windows) HRESULT D3DX11CreateFFT1DComplex(ID3D11DeviceContext pDeviceContext, uint X, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
81 extern(Windows) HRESULT D3DX11CreateFFT1DReal(ID3D11DeviceContext pDeviceContext, uint X, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
82 extern(Windows) HRESULT D3DX11CreateFFT2DComplex(ID3D11DeviceContext pDeviceContext, uint X, uint Y, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
83 extern(Windows) HRESULT D3DX11CreateFFT2DReal(ID3D11DeviceContext *pDeviceContext, uint X, uint Y, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
84 extern(Windows) HRESULT D3DX11CreateFFT3DComplex(ID3D11DeviceContext *pDeviceContext, uint X, uint Y, uint Z, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
85 extern(Windows) HRESULT D3DX11CreateFFT3DReal(ID3D11DeviceContext *pDeviceContext, uint X, uint Y, uint Z, uint Flags, D3DX11_FFT_BUFFER_INFO *pBufferInfo, ID3DX11FFT *ppFFT);
86 
87 //
88 // Interfaces
89 //
90 
91 mixin(uuid!(ID3DX11FFT, "b3f7a938-4c93-4310-a675-b30d6de50553"));
92 public interface ID3DX11FFT : IUnknown
93 {
94 extern(Windows):
95 	HRESULT AttachBuffersAndPrecompute(uint NumTempBuffers, const(ID3D11UnorderedAccessView) *ppTempBuffers, uint NumPrecomputeBuffers, const(ID3D11UnorderedAccessView) *ppPrecomputeBuffers);
96 	HRESULT ForwardTransform(const(ID3D11UnorderedAccessView) pInputBuffer, ID3D11UnorderedAccessView *ppOutputBuffer);
97 	float GetForwardScale();
98 	float GetInverseScale();
99 	HRESULT InverseTransform(const(ID3D11UnorderedAccessView) pInputBuffer, ID3D11UnorderedAccessView *ppOutputBuffer);
100 	HRESULT SetForwardScale(float ForwardScale);
101 	HRESULT SetInverseScale(float InverseScale);
102 }
103 
104 mixin(uuid!(ID3DX11Scan, "5089b68f-e71d-4d38-be8e-f363b95a9405"));
105 public interface ID3DX11Scan : IUnknown
106 {
107 extern(Windows):
108 	HRESULT Multiscan(D3DX11_SCAN_DATA_TYPE ElementType, D3DX11_SCAN_OPCODE OpCode, uint ElementScanSize, uint ElementScanPitch, uint ScanCount, ID3D11UnorderedAccessView pSrc, ID3D11UnorderedAccessView pDst);
109 	HRESULT Scan(D3DX11_SCAN_DATA_TYPE ElementType, D3DX11_SCAN_OPCODE OpCode, uint ElementScanSize, ID3D11UnorderedAccessView pSrc, ID3D11UnorderedAccessView pDst);
110 	HRESULT SetScanDirection(D3DX11_SCAN_DIRECTION Direction);
111 }
112 
113 mixin(uuid!(ID3DX11SegmentedScan, "a915128c-d954-4c79-bfe1-64db923194d6"));
114 public interface ID3DX11SegmentedScan : IUnknown
115 {
116 extern(Windows):
117 	HRESULT SegScan(D3DX11_SCAN_DATA_TYPE ElementType, D3DX11_SCAN_OPCODE OpCode, uint ElementScanSize, ID3D11UnorderedAccessView pSrc, ID3D11UnorderedAccessView pSrcElementFlags, ID3D11UnorderedAccessView pDst);
118 	HRESULT SetScanDirection(D3DX11_SCAN_DIRECTION Direction);
119 }