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 }