xref: /aosp_15_r20/external/libva/va/win32/va_win32.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
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