1*54e60f84SAndroid Build Coastguard Worker /* 2*54e60f84SAndroid Build Coastguard Worker * Copyright © Microsoft Corporation 3*54e60f84SAndroid Build Coastguard Worker * 4*54e60f84SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*54e60f84SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*54e60f84SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*54e60f84SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*54e60f84SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*54e60f84SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*54e60f84SAndroid Build Coastguard Worker * 11*54e60f84SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*54e60f84SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*54e60f84SAndroid Build Coastguard Worker * Software. 14*54e60f84SAndroid Build Coastguard Worker * 15*54e60f84SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*54e60f84SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*54e60f84SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*54e60f84SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*54e60f84SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20*54e60f84SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21*54e60f84SAndroid Build Coastguard Worker * IN THE SOFTWARE. 22*54e60f84SAndroid Build Coastguard Worker */ 23*54e60f84SAndroid Build Coastguard Worker 24*54e60f84SAndroid Build Coastguard Worker #ifndef _VA_WIN32_H_ 25*54e60f84SAndroid Build Coastguard Worker #define _VA_WIN32_H_ 26*54e60f84SAndroid Build Coastguard Worker 27*54e60f84SAndroid Build Coastguard Worker #include <va/va.h> 28*54e60f84SAndroid Build Coastguard Worker #include <windows.h> 29*54e60f84SAndroid Build Coastguard Worker 30*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 31*54e60f84SAndroid Build Coastguard Worker extern "C" { 32*54e60f84SAndroid Build Coastguard Worker #endif 33*54e60f84SAndroid Build Coastguard Worker 34*54e60f84SAndroid Build Coastguard Worker /** \brief HANDLE memory type 35*54e60f84SAndroid Build Coastguard Worker * 36*54e60f84SAndroid Build Coastguard Worker * The HANDLE type can be used with D3D12 sharing resource functions such as: 37*54e60f84SAndroid Build Coastguard Worker * https://docs.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-opensharedhandle 38*54e60f84SAndroid Build Coastguard Worker * https://docs.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-createsharedhandle 39*54e60f84SAndroid Build Coastguard Worker * 40*54e60f84SAndroid Build Coastguard Worker * When used with VASurfaceAttribExternalBufferDescriptor for vaCreateSurfaces(...,num_surfaces,...), 41*54e60f84SAndroid Build Coastguard Worker * the associated VAGenericValueTypePointer is of type HANDLE[num_surfaces] 42*54e60f84SAndroid Build Coastguard Worker * to create each of num_surfaces from the corresponding HANDLE element 43*54e60f84SAndroid Build Coastguard Worker * 44*54e60f84SAndroid Build Coastguard Worker * When used for vaAcquire/ReleaseBufferHandle VABufferInfo.handle type is HANDLE 45*54e60f84SAndroid Build Coastguard Worker * When used for vlVaExportSurfaceHandle, descriptor parameter type is HANDLE* 46*54e60f84SAndroid Build Coastguard Worker */ 47*54e60f84SAndroid Build Coastguard Worker #define VA_SURFACE_ATTRIB_MEM_TYPE_NTHANDLE 0x00010000 48*54e60f84SAndroid Build Coastguard Worker /** \brief ID3D12Resource memory type 49*54e60f84SAndroid Build Coastguard Worker * When used with VASurfaceAttribExternalBufferDescriptor for vaCreateSurfaces(...,num_surfaces,...), 50*54e60f84SAndroid Build Coastguard Worker * the associated VAGenericValueTypePointer is of type ID3D12Resource*[num_surfaces] 51*54e60f84SAndroid Build Coastguard Worker * to create each of num_surfaces from the corresponding ID3D12Resource* element 52*54e60f84SAndroid Build Coastguard Worker * 53*54e60f84SAndroid Build Coastguard Worker * When used for vaAcquire/ReleaseBufferHandle VABufferInfo.handle type is ID3D12Resource* 54*54e60f84SAndroid Build Coastguard Worker * When used for vlVaExportSurfaceHandle, descriptor parameter type is ID3D12Resource** 55*54e60f84SAndroid Build Coastguard Worker */ 56*54e60f84SAndroid Build Coastguard Worker #define VA_SURFACE_ATTRIB_MEM_TYPE_D3D12_RESOURCE 0x00020000 57*54e60f84SAndroid Build Coastguard Worker 58*54e60f84SAndroid Build Coastguard Worker /* 59*54e60f84SAndroid Build Coastguard Worker * Returns a suitable VADisplay for VA API 60*54e60f84SAndroid Build Coastguard Worker */ 61*54e60f84SAndroid Build Coastguard Worker VADisplay vaGetDisplayWin32( 62*54e60f84SAndroid Build Coastguard Worker /* Can be null for adapter autoselection in the VA driver */ 63*54e60f84SAndroid Build Coastguard Worker const LUID* adapter_luid 64*54e60f84SAndroid Build Coastguard Worker ); 65*54e60f84SAndroid Build Coastguard Worker 66*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 67*54e60f84SAndroid Build Coastguard Worker } 68*54e60f84SAndroid Build Coastguard Worker #endif 69*54e60f84SAndroid Build Coastguard Worker 70*54e60f84SAndroid Build Coastguard Worker #endif /* _VA_WIN32_H_ */ 71