xref: /aosp_15_r20/external/intel-media-driver/cmrtlib/agnostic/share/cm_rt.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
1*ba62d9d3SAndroid Build Coastguard Worker /*
2*ba62d9d3SAndroid Build Coastguard Worker * Copyright (c) 2017, Intel Corporation
3*ba62d9d3SAndroid Build Coastguard Worker *
4*ba62d9d3SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a
5*ba62d9d3SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"),
6*ba62d9d3SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation
7*ba62d9d3SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*ba62d9d3SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the
9*ba62d9d3SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions:
10*ba62d9d3SAndroid Build Coastguard Worker *
11*ba62d9d3SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included
12*ba62d9d3SAndroid Build Coastguard Worker * in all copies or substantial portions of the Software.
13*ba62d9d3SAndroid Build Coastguard Worker *
14*ba62d9d3SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15*ba62d9d3SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*ba62d9d3SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*ba62d9d3SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18*ba62d9d3SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19*ba62d9d3SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20*ba62d9d3SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE.
21*ba62d9d3SAndroid Build Coastguard Worker */
22*ba62d9d3SAndroid Build Coastguard Worker //!
23*ba62d9d3SAndroid Build Coastguard Worker //! \file      cm_rt.h
24*ba62d9d3SAndroid Build Coastguard Worker //! \brief     Contains all exposed APIs and Definitions for CM
25*ba62d9d3SAndroid Build Coastguard Worker //!
26*ba62d9d3SAndroid Build Coastguard Worker 
27*ba62d9d3SAndroid Build Coastguard Worker #ifndef __CM_RT_H__
28*ba62d9d3SAndroid Build Coastguard Worker #define __CM_RT_H__
29*ba62d9d3SAndroid Build Coastguard Worker 
30*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
31*ba62d9d3SAndroid Build Coastguard Worker // Version
32*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
33*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_1_0
34*ba62d9d3SAndroid Build Coastguard Worker #define CM_1_0          100
35*ba62d9d3SAndroid Build Coastguard Worker #endif
36*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_2_0
37*ba62d9d3SAndroid Build Coastguard Worker #define CM_2_0          200
38*ba62d9d3SAndroid Build Coastguard Worker #endif
39*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_2_1
40*ba62d9d3SAndroid Build Coastguard Worker #define CM_2_1          201
41*ba62d9d3SAndroid Build Coastguard Worker #endif
42*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_2_2
43*ba62d9d3SAndroid Build Coastguard Worker #define CM_2_2          202
44*ba62d9d3SAndroid Build Coastguard Worker #endif
45*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_2_3
46*ba62d9d3SAndroid Build Coastguard Worker #define CM_2_3          203
47*ba62d9d3SAndroid Build Coastguard Worker #endif
48*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_2_4
49*ba62d9d3SAndroid Build Coastguard Worker #define CM_2_4          204
50*ba62d9d3SAndroid Build Coastguard Worker #endif
51*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_3_0
52*ba62d9d3SAndroid Build Coastguard Worker #define CM_3_0          300
53*ba62d9d3SAndroid Build Coastguard Worker #endif
54*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_4_0
55*ba62d9d3SAndroid Build Coastguard Worker #define CM_4_0          400
56*ba62d9d3SAndroid Build Coastguard Worker #endif
57*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_5_0
58*ba62d9d3SAndroid Build Coastguard Worker #define CM_5_0          500
59*ba62d9d3SAndroid Build Coastguard Worker #endif
60*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_6_0
61*ba62d9d3SAndroid Build Coastguard Worker #define CM_6_0          600
62*ba62d9d3SAndroid Build Coastguard Worker #endif
63*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_7_0
64*ba62d9d3SAndroid Build Coastguard Worker #define CM_7_0          700
65*ba62d9d3SAndroid Build Coastguard Worker #endif
66*ba62d9d3SAndroid Build Coastguard Worker #ifndef CM_7_2
67*ba62d9d3SAndroid Build Coastguard Worker #define CM_7_2          702 //for MDFRT API refreshment.
68*ba62d9d3SAndroid Build Coastguard Worker #endif
69*ba62d9d3SAndroid Build Coastguard Worker 
70*ba62d9d3SAndroid Build Coastguard Worker //Legacy MACRO, will be removed later
71*ba62d9d3SAndroid Build Coastguard Worker #ifndef __INTEL_MDF
72*ba62d9d3SAndroid Build Coastguard Worker #define __INTEL_MDF     (CM_7_2)
73*ba62d9d3SAndroid Build Coastguard Worker #endif
74*ba62d9d3SAndroid Build Coastguard Worker 
75*ba62d9d3SAndroid Build Coastguard Worker //New MACRO
76*ba62d9d3SAndroid Build Coastguard Worker #ifndef __INTEL_CM
77*ba62d9d3SAndroid Build Coastguard Worker #define __INTEL_CM      (CM_7_2)
78*ba62d9d3SAndroid Build Coastguard Worker #endif
79*ba62d9d3SAndroid Build Coastguard Worker 
80*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
81*ba62d9d3SAndroid Build Coastguard Worker // external headers
82*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
83*ba62d9d3SAndroid Build Coastguard Worker #include <stdint.h>
84*ba62d9d3SAndroid Build Coastguard Worker 
85*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
86*ba62d9d3SAndroid Build Coastguard Worker // Macros
87*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
88*ba62d9d3SAndroid Build Coastguard Worker #ifdef __cplusplus
89*ba62d9d3SAndroid Build Coastguard Worker #define EXTERN_C     extern "C"
90*ba62d9d3SAndroid Build Coastguard Worker #else
91*ba62d9d3SAndroid Build Coastguard Worker #define EXTERN_C
92*ba62d9d3SAndroid Build Coastguard Worker #endif
93*ba62d9d3SAndroid Build Coastguard Worker #define CM_RT_API
94*ba62d9d3SAndroid Build Coastguard Worker #define CM_KERNEL_FUNCTION(...) CM_KERNEL_FUNCTION2(__VA_ARGS__)
95*ba62d9d3SAndroid Build Coastguard Worker 
96*ba62d9d3SAndroid Build Coastguard Worker #define _NAME_MERGE_(x, y)                      x ## y
97*ba62d9d3SAndroid Build Coastguard Worker #define _NAME_LABEL_(name, id)                  _NAME_MERGE_(name, id)
98*ba62d9d3SAndroid Build Coastguard Worker #define __CODEGEN_UNIQUE(name)                  _NAME_LABEL_(name, __LINE__)
99*ba62d9d3SAndroid Build Coastguard Worker #define BITFIELD_RANGE( startbit, endbit )     ((endbit)-(startbit)+1)
100*ba62d9d3SAndroid Build Coastguard Worker #define BITFIELD_BIT(bit)                        1
101*ba62d9d3SAndroid Build Coastguard Worker 
102*ba62d9d3SAndroid Build Coastguard Worker #define CM_MIN_SURF_WIDTH   1
103*ba62d9d3SAndroid Build Coastguard Worker #define CM_MIN_SURF_HEIGHT  1
104*ba62d9d3SAndroid Build Coastguard Worker #define CM_MIN_SURF_DEPTH   2
105*ba62d9d3SAndroid Build Coastguard Worker 
106*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_1D_SURF_WIDTH    0x80000000 // 2^31 2 GB
107*ba62d9d3SAndroid Build Coastguard Worker 
108*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_2D_SURF_WIDTH    16384
109*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_2D_SURF_HEIGHT   16384
110*ba62d9d3SAndroid Build Coastguard Worker 
111*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_3D_SURF_WIDTH    2048
112*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_3D_SURF_HEIGHT   2048
113*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_3D_SURF_DEPTH    2048
114*ba62d9d3SAndroid Build Coastguard Worker 
115*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_OPTION_SIZE_IN_BYTE          512
116*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_KERNEL_NAME_SIZE_IN_BYTE     256
117*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_ISA_FILE_NAME_SIZE_IN_BYTE   256
118*ba62d9d3SAndroid Build Coastguard Worker 
119*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_WIDTH_FOR_MW        511
120*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_HEIGHT_FOR_MW       511
121*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_WIDTH_FOR_MO        512
122*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_HEIGHT_FOR_MO       512
123*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_WIDTH_SKLUP_FOR_MW  2047
124*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_THREADSPACE_HEIGHT_SKLUP_FOR_MW 2047
125*ba62d9d3SAndroid Build Coastguard Worker 
126*ba62d9d3SAndroid Build Coastguard Worker 
127*ba62d9d3SAndroid Build Coastguard Worker //Time in seconds before kernel should timeout
128*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_TIMEOUT 2
129*ba62d9d3SAndroid Build Coastguard Worker //Time in milliseconds before kernel should timeout
130*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_TIMEOUT_MS CM_MAX_TIMEOUT*1000
131*ba62d9d3SAndroid Build Coastguard Worker 
132*ba62d9d3SAndroid Build Coastguard Worker #define CM_NO_EVENT  ((CmEvent *)(-1))  //NO Event
133*ba62d9d3SAndroid Build Coastguard Worker 
134*ba62d9d3SAndroid Build Coastguard Worker // Cm Device Create Option
135*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CREATE_OPTION_SCRATCH_SPACE_DISABLE       1
136*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CREATE_OPTION_TDR_DISABLE                 64
137*ba62d9d3SAndroid Build Coastguard Worker 
138*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_DISABLE_TASKFLUSHEDSEMAPHORE_OFFSET  6
139*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_DISABLE_TASKFLUSHEDSEMAPHORE_MASK   (1<<CM_DEVICE_CONFIG_DISABLE_TASKFLUSHEDSEMAPHORE_OFFSET)
140*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CREATE_OPTION_TASKFLUSHEDSEMAPHORE_DISABLE  1   //to disable the semaphore for task flushed
141*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_MIDTHREADPREEMPTION_OFFSET           22
142*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_MIDTHREADPREEMPTION_DISENABLE         (1 << CM_DEVICE_CONFIG_MIDTHREADPREEMPTION_OFFSET)
143*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_KERNEL_DEBUG_OFFSET                  23
144*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_KERNEL_DEBUG_ENABLE               (1 << CM_DEVICE_CONFIG_KERNEL_DEBUG_OFFSET)
145*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_VEBOX_OFFSET                      28
146*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_VEBOX_DISABLE                     (1 << CM_DEVICE_CONFIG_VEBOX_OFFSET)
147*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_GPUCOPY_OFFSET                    29
148*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_GPUCOPY_DISABLE                   (1 << CM_DEVICE_CONFIG_GPUCOPY_OFFSET)
149*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_FAST_PATH_OFFSET                  30
150*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CONFIG_FAST_PATH_ENABLE                  (1 << CM_DEVICE_CONFIG_FAST_PATH_OFFSET)
151*ba62d9d3SAndroid Build Coastguard Worker 
152*ba62d9d3SAndroid Build Coastguard Worker #define CM_DEVICE_CREATE_OPTION_DEFAULT                    CM_DEVICE_CONFIG_FAST_PATH_ENABLE
153*ba62d9d3SAndroid Build Coastguard Worker 
154*ba62d9d3SAndroid Build Coastguard Worker #define CM_MAX_DEPENDENCY_COUNT         8
155*ba62d9d3SAndroid Build Coastguard Worker #define CM_NUM_DWORD_FOR_MW_PARAM       16
156*ba62d9d3SAndroid Build Coastguard Worker 
157*ba62d9d3SAndroid Build Coastguard Worker #define CM_NUM_COEFF_ROWS 17
158*ba62d9d3SAndroid Build Coastguard Worker #define CM_NUM_COEFF_ROWS_SKL 32
159*ba62d9d3SAndroid Build Coastguard Worker 
160*ba62d9d3SAndroid Build Coastguard Worker #define CM_NUM_CONVOLVE_ROWS 16
161*ba62d9d3SAndroid Build Coastguard Worker #define CM_NUM_CONVOLVE_ROWS_SKL 32
162*ba62d9d3SAndroid Build Coastguard Worker 
163*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_NONE           0,
164*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_HORZ_LEFT      1 << 0
165*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_HORZ_CENTER    1 << 1
166*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_HORZ_RIGHT     1 << 2
167*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_VERT_TOP       1 << 4
168*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_VERT_CENTER    1 << 5
169*ba62d9d3SAndroid Build Coastguard Worker #define    CM_CHROMA_SITING_VERT_BOTTOM    1 << 6
170*ba62d9d3SAndroid Build Coastguard Worker 
171*ba62d9d3SAndroid Build Coastguard Worker #define CM_NULL_SURFACE                     0xFFFF
172*ba62d9d3SAndroid Build Coastguard Worker 
173*ba62d9d3SAndroid Build Coastguard Worker #define  CM_FUSED_EU_DISABLE                 0
174*ba62d9d3SAndroid Build Coastguard Worker #define  CM_FUSED_EU_ENABLE                  1
175*ba62d9d3SAndroid Build Coastguard Worker #define  CM_FUSED_EU_DEFAULT                 CM_FUSED_EU_DISABLE
176*ba62d9d3SAndroid Build Coastguard Worker 
177*ba62d9d3SAndroid Build Coastguard Worker #define  CM_TURBO_BOOST_DISABLE               0
178*ba62d9d3SAndroid Build Coastguard Worker #define  CM_TURBO_BOOST_ENABLE                1
179*ba62d9d3SAndroid Build Coastguard Worker #define  CM_TURBO_BOOST_DEFAULT              CM_TURBO_BOOST_ENABLE
180*ba62d9d3SAndroid Build Coastguard Worker 
181*ba62d9d3SAndroid Build Coastguard Worker #define CM_CALLBACK __cdecl
182*ba62d9d3SAndroid Build Coastguard Worker 
183*ba62d9d3SAndroid Build Coastguard Worker // SVM buffer access flags definition
184*ba62d9d3SAndroid Build Coastguard Worker #define CM_SVM_ACCESS_FLAG_COARSE_GRAINED    (0)                                 //Coarse-grained SVM buffer, IA/GT cache coherency disabled
185*ba62d9d3SAndroid Build Coastguard Worker #define CM_SVM_ACCESS_FLAG_FINE_GRAINED      (1 << 0)                            //Fine-grained SVM buffer, IA/GT cache coherency enabled
186*ba62d9d3SAndroid Build Coastguard Worker #define CM_SVM_ACCESS_FLAG_ATOMICS           (1 << 1)                            //Crosse IA/GT atomics supported SVM buffer, need CM_SVM_ACCESS_FLAG_FINE_GRAINED flag is set as well
187*ba62d9d3SAndroid Build Coastguard Worker #define CM_SVM_ACCESS_FLAG_DEFAULT           CM_SVM_ACCESS_FLAG_COARSE_GRAINED   //default is coarse-grained SVM buffer
188*ba62d9d3SAndroid Build Coastguard Worker 
189*ba62d9d3SAndroid Build Coastguard Worker #define CM_BUFFER_STATELESS_CREATE_OPTION_GFX_MEM 0
190*ba62d9d3SAndroid Build Coastguard Worker #define CM_BUFFER_STATELESS_CREATE_OPTION_SYS_MEM 1
191*ba62d9d3SAndroid Build Coastguard Worker #define CM_BUFFER_STATELESS_CREATE_OPTION_DEGAULT CM_BUFFER_STATELESS_CREATE_OPTION_GFX_MEM
192*ba62d9d3SAndroid Build Coastguard Worker 
193*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
194*ba62d9d3SAndroid Build Coastguard Worker // OS-specific includings and types
195*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
196*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_def_os.h"
197*ba62d9d3SAndroid Build Coastguard Worker 
198*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
199*ba62d9d3SAndroid Build Coastguard Worker // Enumerations
200*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
201*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_RETURN_CODE
202*ba62d9d3SAndroid Build Coastguard Worker {
203*ba62d9d3SAndroid Build Coastguard Worker     CM_SUCCESS                                  = 0,
204*ba62d9d3SAndroid Build Coastguard Worker     /*
205*ba62d9d3SAndroid Build Coastguard Worker      * RANGE -1 ~ -9999 FOR EXTERNAL ERROR CODE
206*ba62d9d3SAndroid Build Coastguard Worker      */
207*ba62d9d3SAndroid Build Coastguard Worker     CM_FAILURE                                  = -1,
208*ba62d9d3SAndroid Build Coastguard Worker     CM_NOT_IMPLEMENTED                          = -2,
209*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_ALLOCATION_FAILURE               = -3,
210*ba62d9d3SAndroid Build Coastguard Worker     CM_OUT_OF_HOST_MEMORY                       = -4,
211*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_FORMAT_NOT_SUPPORTED             = -5,
212*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_SURFACE_AMOUNT                    = -6,
213*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_KERNEL_ARG_AMOUNT                 = -7,
214*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_KERNEL_ARG_SIZE_IN_BYTE           = -8,
215*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_ARG_INDEX                        = -9,
216*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_ARG_VALUE                        = -10,
217*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_ARG_SIZE                         = -11,
218*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_THREAD_INDEX                     = -12,
219*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_WIDTH                            = -13,
220*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_HEIGHT                           = -14,
221*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_DEPTH                            = -15,
222*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_COMMON_ISA                       = -16,
223*ba62d9d3SAndroid Build Coastguard Worker     CM_OPEN_VIDEO_DEVICE_FAILURE                = -17,
224*ba62d9d3SAndroid Build Coastguard Worker     CM_VIDEO_DEVICE_LOCKED                      = -18,  // Video device is already locked.
225*ba62d9d3SAndroid Build Coastguard Worker     CM_LOCK_VIDEO_DEVICE_FAILURE                = -19,  // Video device is not locked but can't be locked.
226*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_SAMPLER_AMOUNT                    = -20,
227*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_KERNEL_PER_ENQUEUE            = -21,
228*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_KERNEL_SIZE_IN_BYTE           = -22,
229*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_THREAD_AMOUNT_PER_ENQUEUE     = -23,
230*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_VME_STATE_G6_AMOUNT               = -24,
231*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_THREAD_SPACE                     = -25,
232*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_TIMEOUT                       = -26,
233*ba62d9d3SAndroid Build Coastguard Worker     CM_JITDLL_LOAD_FAILURE                      = -27,
234*ba62d9d3SAndroid Build Coastguard Worker     CM_JIT_COMPILE_FAILURE                      = -28,
235*ba62d9d3SAndroid Build Coastguard Worker     CM_JIT_COMPILESIM_FAILURE                   = -29,
236*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_THREAD_GROUP_SPACE               = -30,
237*ba62d9d3SAndroid Build Coastguard Worker     CM_THREAD_ARG_NOT_ALLOWED                   = -31,
238*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_GLOBAL_BUFFER_INDEX              = -32,
239*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_BUFFER_HANDLER                   = -33,
240*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_SLM_SIZE                      = -34,
241*ba62d9d3SAndroid Build Coastguard Worker     CM_JITDLL_OLDER_THAN_ISA                    = -35,
242*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_HARDWARE_THREAD_NUMBER           = -36,
243*ba62d9d3SAndroid Build Coastguard Worker     CM_GTPIN_INVOKE_FAILURE                     = -37,
244*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALIDE_L3_CONFIGURATION                = -38,
245*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_TEXTURE2D_USAGE                  = -39,
246*ba62d9d3SAndroid Build Coastguard Worker     CM_INTEL_GFX_NOTFOUND                       = -40,
247*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_INVALID_SYSMEM                   = -41,
248*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_INVALID_WIDTH                    = -42,
249*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_INVALID_STRIDE                   = -43,
250*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_DRIVEN_FAILURE                     = -44,
251*ba62d9d3SAndroid Build Coastguard Worker     CM_LOCK_SURFACE_FAIL                        = -45, // Lock surface failed
252*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_GENX_BINARY                      = -46,
253*ba62d9d3SAndroid Build Coastguard Worker     CM_FEATURE_NOT_SUPPORTED_IN_DRIVER          = -47, // driver out-of-sync
254*ba62d9d3SAndroid Build Coastguard Worker     CM_QUERY_DLL_VERSION_FAILURE                = -48, //Fail in getting DLL file version
255*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNELPAYLOAD_PERTHREADARG_MUTEX_FAIL    = -49,
256*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNELPAYLOAD_PERKERNELARG_MUTEX_FAIL    = -50,
257*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNELPAYLOAD_SETTING_FAILURE            = -51,
258*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNELPAYLOAD_SURFACE_INVALID_BTINDEX    = -52,
259*ba62d9d3SAndroid Build Coastguard Worker     CM_NOT_SET_KERNEL_ARGUMENT                  = -53,
260*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_INVALID_SURFACES                 = -54,
261*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_INVALID_SIZE                     = -55,
262*ba62d9d3SAndroid Build Coastguard Worker     CM_GPUCOPY_OUT_OF_RESOURCE                  = -56,
263*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_VIDEO_DEVICE                     = -57,
264*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_DELAY_DESTROY                    = -58,
265*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_VEBOX_STATE                      = -59,
266*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_VEBOX_SURFACE                    = -60,
267*ba62d9d3SAndroid Build Coastguard Worker     CM_FEATURE_NOT_SUPPORTED_BY_HARDWARE        = -61,
268*ba62d9d3SAndroid Build Coastguard Worker     CM_RESOURCE_USAGE_NOT_SUPPORT_READWRITE     = -62,
269*ba62d9d3SAndroid Build Coastguard Worker     CM_MULTIPLE_MIPLEVELS_NOT_SUPPORTED         = -63,
270*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_UMD_CONTEXT                      = -64,
271*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_LIBVA_SURFACE                    = -65,
272*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_LIBVA_INITIALIZE                 = -66,
273*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_THREADSPACE_NOT_SET               = -67,
274*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_KERNEL_THREADSPACE               = -68,
275*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_THREADSPACE_THREADS_NOT_ASSOCIATED= -69,
276*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_THREADSPACE_INTEGRITY_FAILED      = -70,
277*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_USERPROVIDED_GENBINARY           = -71,
278*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_PRIVATE_DATA                     = -72,
279*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_MOS_RESOURCE_HANDLE              = -73,
280*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_CACHED                           = -74,
281*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_IN_USE                           = -75,
282*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_GPUCOPY_KERNEL                   = -76,
283*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_DEPENDENCY_WITH_WALKING_PATTERN  = -77,
284*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_MEDIA_WALKING_PATTERN            = -78,
285*ba62d9d3SAndroid Build Coastguard Worker     CM_FAILED_TO_ALLOCATE_SVM_BUFFER            = -79,
286*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_POWER_OPTION_FOR_PLATFORM     = -80,
287*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_KERNEL_THREADGROUPSPACE          = -81,
288*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_KERNEL_SPILL_CODE                = -82,
289*ba62d9d3SAndroid Build Coastguard Worker     CM_UMD_DRIVER_NOT_SUPPORTED                 = -83,
290*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_GPU_FREQUENCY_VALUE              = -84,
291*ba62d9d3SAndroid Build Coastguard Worker     CM_SYSTEM_MEMORY_NOT_4KPAGE_ALIGNED         = -85,
292*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_ARG_SETTING_FAILED                = -86,
293*ba62d9d3SAndroid Build Coastguard Worker     CM_NO_AVAILABLE_SURFACE                     = -87,
294*ba62d9d3SAndroid Build Coastguard Worker     CM_VA_SURFACE_NOT_SUPPORTED                 = -88,
295*ba62d9d3SAndroid Build Coastguard Worker     CM_TOO_MUCH_THREADS                         = -89,
296*ba62d9d3SAndroid Build Coastguard Worker     CM_NULL_POINTER                             = -90,
297*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_NUM_2D_ALIASES                = -91,
298*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_PARAM_SIZE                       = -92,
299*ba62d9d3SAndroid Build Coastguard Worker     CM_GT_UNSUPPORTED                           = -93,
300*ba62d9d3SAndroid Build Coastguard Worker     CM_GTPIN_FLAG_NO_LONGER_SUPPORTED           = -94,
301*ba62d9d3SAndroid Build Coastguard Worker     CM_PLATFORM_UNSUPPORTED_FOR_API             = -95,
302*ba62d9d3SAndroid Build Coastguard Worker     CM_TASK_MEDIA_RESET                         = -96,
303*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNELPAYLOAD_SAMPLER_INVALID_BTINDEX    = -97,
304*ba62d9d3SAndroid Build Coastguard Worker     CM_EXCEED_MAX_NUM_BUFFER_ALIASES            = -98,
305*ba62d9d3SAndroid Build Coastguard Worker     CM_SYSTEM_MEMORY_NOT_4PIXELS_ALIGNED        = -99,
306*ba62d9d3SAndroid Build Coastguard Worker     CM_FAILED_TO_CREATE_CURBE_SURFACE           = -100,
307*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_CAP_NAME                         = -101,
308*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_PARAM_FOR_CREATE_QUEUE_EX        = -102,
309*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_CREATE_OPTION_FOR_BUFFER_STATELESS = -103,
310*ba62d9d3SAndroid Build Coastguard Worker     CM_INVALID_KERNEL_ARG_POINTER                 = -104,
311*ba62d9d3SAndroid Build Coastguard Worker     CM_LOAD_LIBRARY_FAILED                        = -105,
312*ba62d9d3SAndroid Build Coastguard Worker     CM_NO_SUPPORTED_ADAPTER                       = -106,
313*ba62d9d3SAndroid Build Coastguard Worker 
314*ba62d9d3SAndroid Build Coastguard Worker     /*
315*ba62d9d3SAndroid Build Coastguard Worker      * RANGE <=-10000 FOR INTERNAL ERROR CODE
316*ba62d9d3SAndroid Build Coastguard Worker      */
317*ba62d9d3SAndroid Build Coastguard Worker     CM_INTERNAL_ERROR_CODE_OFFSET               = -10000,
318*ba62d9d3SAndroid Build Coastguard Worker } CM_RETURN_CODE;
319*ba62d9d3SAndroid Build Coastguard Worker 
320*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_STATUS
321*ba62d9d3SAndroid Build Coastguard Worker {
322*ba62d9d3SAndroid Build Coastguard Worker     CM_STATUS_QUEUED         = 0,
323*ba62d9d3SAndroid Build Coastguard Worker     CM_STATUS_FLUSHED        = 1,
324*ba62d9d3SAndroid Build Coastguard Worker     CM_STATUS_FINISHED       = 2,
325*ba62d9d3SAndroid Build Coastguard Worker     CM_STATUS_STARTED        = 3,
326*ba62d9d3SAndroid Build Coastguard Worker     CM_STATUS_RESET          = 4
327*ba62d9d3SAndroid Build Coastguard Worker 
328*ba62d9d3SAndroid Build Coastguard Worker } CM_STATUS;
329*ba62d9d3SAndroid Build Coastguard Worker 
330*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_PIXEL_TYPE
331*ba62d9d3SAndroid Build Coastguard Worker {
332*ba62d9d3SAndroid Build Coastguard Worker     CM_PIXEL_UINT,
333*ba62d9d3SAndroid Build Coastguard Worker     CM_PIXEL_SINT,
334*ba62d9d3SAndroid Build Coastguard Worker     CM_PIXEL_OTHER
335*ba62d9d3SAndroid Build Coastguard Worker } CM_PIXEL_TYPE;
336*ba62d9d3SAndroid Build Coastguard Worker 
337*ba62d9d3SAndroid Build Coastguard Worker enum GPU_PLATFORM{
338*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_UNKNOWN     = 0,
339*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_BDW         = 4,
340*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_SKL         = 7,
341*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_BXT         = 8,
342*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_KBL         = 11,
343*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_ICLLP       = 13,
344*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_TGLLP       = 15,
345*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GLK         = 16,
346*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_CFL         = 17,
347*ba62d9d3SAndroid Build Coastguard Worker };
348*ba62d9d3SAndroid Build Coastguard Worker 
349*ba62d9d3SAndroid Build Coastguard Worker enum GPU_GT_PLATFORM{
350*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT_UNKNOWN  = 0,
351*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT1         = 1,
352*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT2         = 2,
353*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT3         = 3,
354*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT4         = 4,
355*ba62d9d3SAndroid Build Coastguard Worker     PLATFORM_INTEL_GT1_5       = 10
356*ba62d9d3SAndroid Build Coastguard Worker };
357*ba62d9d3SAndroid Build Coastguard Worker 
358*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_DEVICE_CAP_NAME
359*ba62d9d3SAndroid Build Coastguard Worker {
360*ba62d9d3SAndroid Build Coastguard Worker     CAP_KERNEL_COUNT_PER_TASK,
361*ba62d9d3SAndroid Build Coastguard Worker     CAP_KERNEL_BINARY_SIZE,
362*ba62d9d3SAndroid Build Coastguard Worker     CAP_SAMPLER_COUNT ,
363*ba62d9d3SAndroid Build Coastguard Worker     CAP_SAMPLER_COUNT_PER_KERNEL,
364*ba62d9d3SAndroid Build Coastguard Worker     CAP_BUFFER_COUNT ,
365*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE2D_COUNT,
366*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE3D_COUNT,
367*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE_COUNT_PER_KERNEL,
368*ba62d9d3SAndroid Build Coastguard Worker     CAP_ARG_COUNT_PER_KERNEL,
369*ba62d9d3SAndroid Build Coastguard Worker     CAP_ARG_SIZE_PER_KERNEL ,
370*ba62d9d3SAndroid Build Coastguard Worker     CAP_USER_DEFINED_THREAD_COUNT_PER_TASK,
371*ba62d9d3SAndroid Build Coastguard Worker     CAP_HW_THREAD_COUNT,
372*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE2D_FORMAT_COUNT,
373*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE2D_FORMATS,
374*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE3D_FORMAT_COUNT,
375*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE3D_FORMATS,
376*ba62d9d3SAndroid Build Coastguard Worker     CAP_VME_STATE_COUNT,
377*ba62d9d3SAndroid Build Coastguard Worker     CAP_GPU_PLATFORM,
378*ba62d9d3SAndroid Build Coastguard Worker     CAP_GT_PLATFORM,
379*ba62d9d3SAndroid Build Coastguard Worker     CAP_MIN_FREQUENCY,
380*ba62d9d3SAndroid Build Coastguard Worker     CAP_MAX_FREQUENCY,
381*ba62d9d3SAndroid Build Coastguard Worker     CAP_L3_CONFIG,
382*ba62d9d3SAndroid Build Coastguard Worker     CAP_GPU_CURRENT_FREQUENCY,
383*ba62d9d3SAndroid Build Coastguard Worker     CAP_USER_DEFINED_THREAD_COUNT_PER_TASK_NO_THREAD_ARG,
384*ba62d9d3SAndroid Build Coastguard Worker     CAP_USER_DEFINED_THREAD_COUNT_PER_MEDIA_WALKER,
385*ba62d9d3SAndroid Build Coastguard Worker     CAP_USER_DEFINED_THREAD_COUNT_PER_THREAD_GROUP,
386*ba62d9d3SAndroid Build Coastguard Worker     CAP_SURFACE2DUP_COUNT,
387*ba62d9d3SAndroid Build Coastguard Worker     CAP_PLATFORM_INFO,
388*ba62d9d3SAndroid Build Coastguard Worker     CAP_MAX_BUFFER_SIZE,
389*ba62d9d3SAndroid Build Coastguard Worker     CAP_MAX_SUBDEV_COUNT //for app to retrieve the total count of sub devices
390*ba62d9d3SAndroid Build Coastguard Worker } CM_DEVICE_CAP_NAME;
391*ba62d9d3SAndroid Build Coastguard Worker 
392*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_FASTCOPY_OPTION
393*ba62d9d3SAndroid Build Coastguard Worker {
394*ba62d9d3SAndroid Build Coastguard Worker     CM_FASTCOPY_OPTION_NONBLOCKING  = 0x00,
395*ba62d9d3SAndroid Build Coastguard Worker     CM_FASTCOPY_OPTION_BLOCKING     = 0x01
396*ba62d9d3SAndroid Build Coastguard Worker } CM_FASTCOPY_OPTION;
397*ba62d9d3SAndroid Build Coastguard Worker 
398*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_DEPENDENCY_PATTERN
399*ba62d9d3SAndroid Build Coastguard Worker {
400*ba62d9d3SAndroid Build Coastguard Worker     CM_NONE_DEPENDENCY          = 0,    //All threads run parallel, scanline dispatch
401*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT                = 1,
402*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT26              = 2,
403*ba62d9d3SAndroid Build Coastguard Worker     CM_VERTICAL_WAVE            = 3,
404*ba62d9d3SAndroid Build Coastguard Worker     CM_HORIZONTAL_WAVE          = 4,
405*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT26Z             = 5,
406*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT26X             = 6,
407*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT26ZIG           = 7,
408*ba62d9d3SAndroid Build Coastguard Worker     CM_WAVEFRONT26ZI            = 8
409*ba62d9d3SAndroid Build Coastguard Worker } CM_DEPENDENCY_PATTERN;
410*ba62d9d3SAndroid Build Coastguard Worker 
411*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_WALKING_PATTERN
412*ba62d9d3SAndroid Build Coastguard Worker {
413*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_DEFAULT      = 0,
414*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT    = 1,
415*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT26  = 2,
416*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_VERTICAL     = 3,
417*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_HORIZONTAL   = 4,
418*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT26X = 5,
419*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT26ZIG = 6,
420*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT45D = 7,
421*ba62d9d3SAndroid Build Coastguard Worker     CM_WALK_WAVEFRONT45XD_2 = 8
422*ba62d9d3SAndroid Build Coastguard Worker } CM_WALKING_PATTERN;
423*ba62d9d3SAndroid Build Coastguard Worker 
424*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_26ZI_DISPATCH_PATTERN
425*ba62d9d3SAndroid Build Coastguard Worker {
426*ba62d9d3SAndroid Build Coastguard Worker     VVERTICAL_HVERTICAL_26           = 0,
427*ba62d9d3SAndroid Build Coastguard Worker     VVERTICAL_HHORIZONTAL_26         = 1,
428*ba62d9d3SAndroid Build Coastguard Worker     VVERTICAL26_HHORIZONTAL26        = 2,
429*ba62d9d3SAndroid Build Coastguard Worker     VVERTICAL1X26_HHORIZONTAL1X26    = 3
430*ba62d9d3SAndroid Build Coastguard Worker } CM_26ZI_DISPATCH_PATTERN;
431*ba62d9d3SAndroid Build Coastguard Worker 
432*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_MW_GROUP_SELECT
433*ba62d9d3SAndroid Build Coastguard Worker {
434*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_NONE        = 0,
435*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_COLORLOOP   = 1,
436*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_INNERLOCAL  = 2,
437*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_MIDLOCAL    = 3,
438*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_OUTERLOCAL  = 4,
439*ba62d9d3SAndroid Build Coastguard Worker     CM_MW_GROUP_INNERGLOBAL = 5,
440*ba62d9d3SAndroid Build Coastguard Worker } CM_MW_GROUP_SELECT;
441*ba62d9d3SAndroid Build Coastguard Worker 
442*ba62d9d3SAndroid Build Coastguard Worker /**************** L3/Cache ***************/
443*ba62d9d3SAndroid Build Coastguard Worker enum MEMORY_OBJECT_CONTROL
444*ba62d9d3SAndroid Build Coastguard Worker {
445*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_DEFAULT = 0,
446*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_L3,
447*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_LLC_ELLC,
448*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_LLC,
449*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_ELLC,
450*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_LLC_L3,
451*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_ELLC_L3,
452*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_NO_CACHE,
453*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_SKL_COUNT,
454*ba62d9d3SAndroid Build Coastguard Worker 
455*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_DEFAULT = 0,
456*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_L3,
457*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_LLC_ELLC,
458*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_LLC,
459*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_ELLC,
460*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_LLC_L3,
461*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_ELLC_L3,
462*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_NO_CACHE,
463*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_CNL_COUNT,
464*ba62d9d3SAndroid Build Coastguard Worker 
465*ba62d9d3SAndroid Build Coastguard Worker     // Unified memory object control type for SKL+
466*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_DEFAULT = 0x0,
467*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_L3,
468*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_LLC_ELLC,
469*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_LLC,
470*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_ELLC,
471*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_LLC_L3,
472*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_ELLC_L3,
473*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_NO_CACHE,
474*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_L1_ENABLED,
475*ba62d9d3SAndroid Build Coastguard Worker 
476*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL_UNKNOWN = 0xff
477*ba62d9d3SAndroid Build Coastguard Worker };
478*ba62d9d3SAndroid Build Coastguard Worker 
479*ba62d9d3SAndroid Build Coastguard Worker typedef enum _MEMORY_TYPE {
480*ba62d9d3SAndroid Build Coastguard Worker     CM_USE_PTE,
481*ba62d9d3SAndroid Build Coastguard Worker     CM_UN_CACHEABLE,
482*ba62d9d3SAndroid Build Coastguard Worker     CM_WRITE_THROUGH,
483*ba62d9d3SAndroid Build Coastguard Worker     CM_WRITE_BACK,
484*ba62d9d3SAndroid Build Coastguard Worker 
485*ba62d9d3SAndroid Build Coastguard Worker     // BDW
486*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_TYPE_BDW_UC_WITH_FENCE = 0,
487*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_TYPE_BDW_UC,
488*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_TYPE_BDW_WT,
489*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_TYPE_BDW_WB
490*ba62d9d3SAndroid Build Coastguard Worker 
491*ba62d9d3SAndroid Build Coastguard Worker } MEMORY_TYPE;
492*ba62d9d3SAndroid Build Coastguard Worker 
493*ba62d9d3SAndroid Build Coastguard Worker typedef enum _L3_SUGGEST_CONFIG
494*ba62d9d3SAndroid Build Coastguard Worker {
495*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_DEFAULT = 0,
496*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_1,
497*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_2,
498*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_3,
499*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_4,
500*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_5,
501*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_6,
502*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_7,
503*ba62d9d3SAndroid Build Coastguard Worker    CM_L3_PLANE_8,
504*ba62d9d3SAndroid Build Coastguard Worker } L3_SUGGEST_CONFIG;
505*ba62d9d3SAndroid Build Coastguard Worker 
506*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_SAMPLER8x8_SURFACE_
507*ba62d9d3SAndroid Build Coastguard Worker {
508*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_SURFACE = 0,
509*ba62d9d3SAndroid Build Coastguard Worker     CM_VA_SURFACE = 1
510*ba62d9d3SAndroid Build Coastguard Worker }CM_SAMPLER8x8_SURFACE;
511*ba62d9d3SAndroid Build Coastguard Worker 
512*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_SURFACE_ADDRESS_CONTROL_MODE_
513*ba62d9d3SAndroid Build Coastguard Worker {
514*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_CLAMP = 0,
515*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_MIRROR = 1
516*ba62d9d3SAndroid Build Coastguard Worker }CM_SURFACE_ADDRESS_CONTROL_MODE;
517*ba62d9d3SAndroid Build Coastguard Worker 
518*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_MESSAGE_SEQUENCE_
519*ba62d9d3SAndroid Build Coastguard Worker {
520*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_1x1   = 0,
521*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_16x1  = 1,
522*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_16x4  = 2,
523*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_32x1  = 3,
524*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_32x4  = 4,
525*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_64x1  = 5,
526*ba62d9d3SAndroid Build Coastguard Worker     CM_MS_64x4  = 6
527*ba62d9d3SAndroid Build Coastguard Worker }CM_MESSAGE_SEQUENCE;
528*ba62d9d3SAndroid Build Coastguard Worker 
529*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_MIN_MAX_FILTER_CONTROL_
530*ba62d9d3SAndroid Build Coastguard Worker {
531*ba62d9d3SAndroid Build Coastguard Worker     CM_MIN_FILTER   = 0,
532*ba62d9d3SAndroid Build Coastguard Worker     CM_MAX_FILTER   = 1,
533*ba62d9d3SAndroid Build Coastguard Worker     CM_BOTH_FILTER  = 3
534*ba62d9d3SAndroid Build Coastguard Worker }CM_MIN_MAX_FILTER_CONTROL;
535*ba62d9d3SAndroid Build Coastguard Worker 
536*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_VA_FUNCTION_
537*ba62d9d3SAndroid Build Coastguard Worker {
538*ba62d9d3SAndroid Build Coastguard Worker     CM_VA_MINMAXFILTER  = 0,
539*ba62d9d3SAndroid Build Coastguard Worker     CM_VA_DILATE        = 1,
540*ba62d9d3SAndroid Build Coastguard Worker     CM_VA_ERODE         = 2
541*ba62d9d3SAndroid Build Coastguard Worker } CM_VA_FUNCTION;
542*ba62d9d3SAndroid Build Coastguard Worker 
543*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_EVENT_PROFILING_INFO
544*ba62d9d3SAndroid Build Coastguard Worker {
545*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_HWSTART,
546*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_HWEND,
547*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_SUBMIT,
548*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_COMPLETE,
549*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_KERNELCOUNT,
550*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_KERNELNAMES,
551*ba62d9d3SAndroid Build Coastguard Worker     CM_EVENT_PROFILING_THREADSPACE
552*ba62d9d3SAndroid Build Coastguard Worker }CM_EVENT_PROFILING_INFO;
553*ba62d9d3SAndroid Build Coastguard Worker 
554*ba62d9d3SAndroid Build Coastguard Worker // CM Convolve type for SKL+
555*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_CONVOLVE_SKL_TYPE
556*ba62d9d3SAndroid Build Coastguard Worker {
557*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_SKL_TYPE_2D = 0,
558*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_SKL_TYPE_1D = 1,
559*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_SKL_TYPE_1P = 2
560*ba62d9d3SAndroid Build Coastguard Worker } CM_CONVOLVE_SKL_TYPE;
561*ba62d9d3SAndroid Build Coastguard Worker 
562*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_ROTATION
563*ba62d9d3SAndroid Build Coastguard Worker {
564*ba62d9d3SAndroid Build Coastguard Worker     CM_ROTATION_IDENTITY = 0,      //!< Rotation 0 degrees
565*ba62d9d3SAndroid Build Coastguard Worker     CM_ROTATION_90,                //!< Rotation 90 degrees
566*ba62d9d3SAndroid Build Coastguard Worker     CM_ROTATION_180,               //!< Rotation 180 degrees
567*ba62d9d3SAndroid Build Coastguard Worker     CM_ROTATION_270,               //!< Rotation 270 degrees
568*ba62d9d3SAndroid Build Coastguard Worker } CM_ROTATION;
569*ba62d9d3SAndroid Build Coastguard Worker 
570*ba62d9d3SAndroid Build Coastguard Worker // to define frame type for interlace frame support
571*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_FRAME_TYPE
572*ba62d9d3SAndroid Build Coastguard Worker {
573*ba62d9d3SAndroid Build Coastguard Worker     CM_FRAME,     // singe frame, not interlaced
574*ba62d9d3SAndroid Build Coastguard Worker     CM_TOP_FIELD,
575*ba62d9d3SAndroid Build Coastguard Worker     CM_BOTTOM_FIELD,
576*ba62d9d3SAndroid Build Coastguard Worker     MAX_FRAME_TYPE
577*ba62d9d3SAndroid Build Coastguard Worker } CM_FRAME_TYPE;
578*ba62d9d3SAndroid Build Coastguard Worker 
579*ba62d9d3SAndroid Build Coastguard Worker enum CM_QUEUE_TYPE
580*ba62d9d3SAndroid Build Coastguard Worker {
581*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_TYPE_NONE = 0,
582*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_TYPE_RENDER = 1,
583*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_TYPE_COMPUTE = 2
584*ba62d9d3SAndroid Build Coastguard Worker };
585*ba62d9d3SAndroid Build Coastguard Worker 
586*ba62d9d3SAndroid Build Coastguard Worker enum CM_QUEUE_SSEU_USAGE_HINT_TYPE
587*ba62d9d3SAndroid Build Coastguard Worker {
588*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_SSEU_USAGE_HINT_DEFAULT = 0,
589*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_SSEU_USAGE_HINT_VME     = 1
590*ba62d9d3SAndroid Build Coastguard Worker };
591*ba62d9d3SAndroid Build Coastguard Worker 
592*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
593*ba62d9d3SAndroid Build Coastguard Worker // Structures
594*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
595*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_SAMPLER_STATE
596*ba62d9d3SAndroid Build Coastguard Worker {
597*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_FILTER_TYPE minFilterType;
598*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_FILTER_TYPE magFilterType;
599*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressU;
600*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressV;
601*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressW;
602*ba62d9d3SAndroid Build Coastguard Worker } CM_SAMPLER_STATE;
603*ba62d9d3SAndroid Build Coastguard Worker 
604*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_SAMPLER_STATE_EX
605*ba62d9d3SAndroid Build Coastguard Worker {
606*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_FILTER_TYPE minFilterType;
607*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_FILTER_TYPE magFilterType;
608*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressU;
609*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressV;
610*ba62d9d3SAndroid Build Coastguard Worker     CM_TEXTURE_ADDRESS_TYPE addressW;
611*ba62d9d3SAndroid Build Coastguard Worker 
612*ba62d9d3SAndroid Build Coastguard Worker     CM_PIXEL_TYPE SurfaceFormat;
613*ba62d9d3SAndroid Build Coastguard Worker     union {
614*ba62d9d3SAndroid Build Coastguard Worker         DWORD BorderColorRedU;
615*ba62d9d3SAndroid Build Coastguard Worker         INT BorderColorRedS;
616*ba62d9d3SAndroid Build Coastguard Worker         FLOAT BorderColorRedF;
617*ba62d9d3SAndroid Build Coastguard Worker     };
618*ba62d9d3SAndroid Build Coastguard Worker 
619*ba62d9d3SAndroid Build Coastguard Worker     union {
620*ba62d9d3SAndroid Build Coastguard Worker         DWORD BorderColorGreenU;
621*ba62d9d3SAndroid Build Coastguard Worker         INT BorderColorGreenS;
622*ba62d9d3SAndroid Build Coastguard Worker         FLOAT BorderColorGreenF;
623*ba62d9d3SAndroid Build Coastguard Worker     };
624*ba62d9d3SAndroid Build Coastguard Worker 
625*ba62d9d3SAndroid Build Coastguard Worker     union {
626*ba62d9d3SAndroid Build Coastguard Worker         DWORD BorderColorBlueU;
627*ba62d9d3SAndroid Build Coastguard Worker         INT BorderColorBlueS;
628*ba62d9d3SAndroid Build Coastguard Worker         FLOAT BorderColorBlueF;
629*ba62d9d3SAndroid Build Coastguard Worker     };
630*ba62d9d3SAndroid Build Coastguard Worker 
631*ba62d9d3SAndroid Build Coastguard Worker     union {
632*ba62d9d3SAndroid Build Coastguard Worker         DWORD BorderColorAlphaU;
633*ba62d9d3SAndroid Build Coastguard Worker         INT BorderColorAlphaS;
634*ba62d9d3SAndroid Build Coastguard Worker         FLOAT BorderColorAlphaF;
635*ba62d9d3SAndroid Build Coastguard Worker     };
636*ba62d9d3SAndroid Build Coastguard Worker } CM_SAMPLER_STATE_EX;
637*ba62d9d3SAndroid Build Coastguard Worker 
638*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_PLATFORM_INFO
639*ba62d9d3SAndroid Build Coastguard Worker {
640*ba62d9d3SAndroid Build Coastguard Worker     UINT numSlices;
641*ba62d9d3SAndroid Build Coastguard Worker     UINT numSubSlices;
642*ba62d9d3SAndroid Build Coastguard Worker     UINT numEUsPerSubSlice;
643*ba62d9d3SAndroid Build Coastguard Worker     UINT numHWThreadsPerEU;
644*ba62d9d3SAndroid Build Coastguard Worker     UINT numMaxEUsPerPool;
645*ba62d9d3SAndroid Build Coastguard Worker }CM_PLATFORM_INFO, *PCM_PLATFORM_INFO;
646*ba62d9d3SAndroid Build Coastguard Worker 
647*ba62d9d3SAndroid Build Coastguard Worker // CM RT DLL File Version
648*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_DLL_FILE_VERSION
649*ba62d9d3SAndroid Build Coastguard Worker {
650*ba62d9d3SAndroid Build Coastguard Worker     WORD    wMANVERSION;
651*ba62d9d3SAndroid Build Coastguard Worker     WORD    wMANREVISION;
652*ba62d9d3SAndroid Build Coastguard Worker     WORD    wSUBREVISION;
653*ba62d9d3SAndroid Build Coastguard Worker     WORD    wBUILD_NUMBER;
654*ba62d9d3SAndroid Build Coastguard Worker     //Version constructed as : "wMANVERSION.wMANREVISION.wSUBREVISION.wBUILD_NUMBER"
655*ba62d9d3SAndroid Build Coastguard Worker } CM_DLL_FILE_VERSION, *PCM_DLL_FILE_VERSION;
656*ba62d9d3SAndroid Build Coastguard Worker 
657*ba62d9d3SAndroid Build Coastguard Worker // parameters used to set the surface state of the CmSurface
658*ba62d9d3SAndroid Build Coastguard Worker struct CM_VME_SURFACE_STATE_PARAM
659*ba62d9d3SAndroid Build Coastguard Worker {
660*ba62d9d3SAndroid Build Coastguard Worker     UINT    width;
661*ba62d9d3SAndroid Build Coastguard Worker     UINT    height;
662*ba62d9d3SAndroid Build Coastguard Worker };
663*ba62d9d3SAndroid Build Coastguard Worker 
664*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_WALKING_PARAMETERS
665*ba62d9d3SAndroid Build Coastguard Worker {
666*ba62d9d3SAndroid Build Coastguard Worker     DWORD Value[CM_NUM_DWORD_FOR_MW_PARAM];
667*ba62d9d3SAndroid Build Coastguard Worker } CM_WALKING_PARAMETERS, *PCM_WALKING_PARAMETERS;
668*ba62d9d3SAndroid Build Coastguard Worker 
669*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_DEPENDENCY
670*ba62d9d3SAndroid Build Coastguard Worker {
671*ba62d9d3SAndroid Build Coastguard Worker     UINT    count;
672*ba62d9d3SAndroid Build Coastguard Worker     INT     deltaX[CM_MAX_DEPENDENCY_COUNT];
673*ba62d9d3SAndroid Build Coastguard Worker     INT     deltaY[CM_MAX_DEPENDENCY_COUNT];
674*ba62d9d3SAndroid Build Coastguard Worker }CM_DEPENDENCY;
675*ba62d9d3SAndroid Build Coastguard Worker 
676*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_COORDINATE
677*ba62d9d3SAndroid Build Coastguard Worker {
678*ba62d9d3SAndroid Build Coastguard Worker     INT x;
679*ba62d9d3SAndroid Build Coastguard Worker     INT y;
680*ba62d9d3SAndroid Build Coastguard Worker } CM_COORDINATE, *PCM_COORDINATE;
681*ba62d9d3SAndroid Build Coastguard Worker 
682*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_THREAD_PARAM
683*ba62d9d3SAndroid Build Coastguard Worker {
684*ba62d9d3SAndroid Build Coastguard Worker     CM_COORDINATE   scoreboardCoordinates;
685*ba62d9d3SAndroid Build Coastguard Worker     BYTE            scoreboardColor;
686*ba62d9d3SAndroid Build Coastguard Worker     BYTE            sliceDestinationSelect;
687*ba62d9d3SAndroid Build Coastguard Worker     BYTE            subSliceDestinationSelect;
688*ba62d9d3SAndroid Build Coastguard Worker } CM_THREAD_PARAM, *PCM_THREAD_PARAM;
689*ba62d9d3SAndroid Build Coastguard Worker 
690*ba62d9d3SAndroid Build Coastguard Worker struct L3ConfigRegisterValues
691*ba62d9d3SAndroid Build Coastguard Worker {
692*ba62d9d3SAndroid Build Coastguard Worker     unsigned int config_register0;
693*ba62d9d3SAndroid Build Coastguard Worker     unsigned int config_register1;
694*ba62d9d3SAndroid Build Coastguard Worker     unsigned int config_register2;
695*ba62d9d3SAndroid Build Coastguard Worker     unsigned int config_register3;
696*ba62d9d3SAndroid Build Coastguard Worker };
697*ba62d9d3SAndroid Build Coastguard Worker 
698*ba62d9d3SAndroid Build Coastguard Worker //GT-PIN
699*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_SURFACE_DETAILS{
700*ba62d9d3SAndroid Build Coastguard Worker     UINT        width;
701*ba62d9d3SAndroid Build Coastguard Worker     UINT        height;
702*ba62d9d3SAndroid Build Coastguard Worker     UINT        depth;
703*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_FORMAT   format;
704*ba62d9d3SAndroid Build Coastguard Worker     UINT        planeIndex;
705*ba62d9d3SAndroid Build Coastguard Worker     UINT        pitch;
706*ba62d9d3SAndroid Build Coastguard Worker     UINT        slicePitch;
707*ba62d9d3SAndroid Build Coastguard Worker     UINT        SurfaceBaseAddress;
708*ba62d9d3SAndroid Build Coastguard Worker     UINT8       TiledSurface;
709*ba62d9d3SAndroid Build Coastguard Worker     UINT8       TileWalk;
710*ba62d9d3SAndroid Build Coastguard Worker     UINT        XOffset;
711*ba62d9d3SAndroid Build Coastguard Worker     UINT        YOffset;
712*ba62d9d3SAndroid Build Coastguard Worker 
713*ba62d9d3SAndroid Build Coastguard Worker }CM_SURFACE_DETAILS;
714*ba62d9d3SAndroid Build Coastguard Worker 
715*ba62d9d3SAndroid Build Coastguard Worker /*
716*ba62d9d3SAndroid Build Coastguard Worker  *  AVS SAMPLER8x8 STATE
717*ba62d9d3SAndroid Build Coastguard Worker  */
718*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_AVS_COEFF_TABLE{
719*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_0;
720*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_1;
721*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_2;
722*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_3;
723*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_4;
724*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_5;
725*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_6;
726*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_7;
727*ba62d9d3SAndroid Build Coastguard Worker }CM_AVS_COEFF_TABLE;
728*ba62d9d3SAndroid Build Coastguard Worker 
729*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_AVS_INTERNEL_COEFF_TABLE{
730*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_0;
731*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_1;
732*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_2;
733*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_3;
734*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_4;
735*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_5;
736*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_6;
737*ba62d9d3SAndroid Build Coastguard Worker     BYTE   FilterCoeff_0_7;
738*ba62d9d3SAndroid Build Coastguard Worker }CM_AVS_INTERNEL_COEFF_TABLE;
739*ba62d9d3SAndroid Build Coastguard Worker 
740*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_AVS_NONPIPLINED_STATE{
741*ba62d9d3SAndroid Build Coastguard Worker     bool BypassXAF;
742*ba62d9d3SAndroid Build Coastguard Worker     bool BypassYAF;
743*ba62d9d3SAndroid Build Coastguard Worker     BYTE DefaultSharpLvl;
744*ba62d9d3SAndroid Build Coastguard Worker     BYTE maxDerivative4Pixels;
745*ba62d9d3SAndroid Build Coastguard Worker     BYTE maxDerivative8Pixels;
746*ba62d9d3SAndroid Build Coastguard Worker     BYTE transitionArea4Pixels;
747*ba62d9d3SAndroid Build Coastguard Worker     BYTE transitionArea8Pixels;
748*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_COEFF_TABLE Tbl0X[ CM_NUM_COEFF_ROWS_SKL ];
749*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_COEFF_TABLE Tbl0Y[ CM_NUM_COEFF_ROWS_SKL ];
750*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_COEFF_TABLE Tbl1X[ CM_NUM_COEFF_ROWS_SKL ];
751*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_COEFF_TABLE Tbl1Y[ CM_NUM_COEFF_ROWS_SKL ];
752*ba62d9d3SAndroid Build Coastguard Worker     bool bEnableRGBAdaptive;
753*ba62d9d3SAndroid Build Coastguard Worker     bool bAdaptiveFilterAllChannels;
754*ba62d9d3SAndroid Build Coastguard Worker }CM_AVS_NONPIPLINED_STATE;
755*ba62d9d3SAndroid Build Coastguard Worker 
756*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_AVS_INTERNEL_NONPIPLINED_STATE{
757*ba62d9d3SAndroid Build Coastguard Worker     bool BypassXAF;
758*ba62d9d3SAndroid Build Coastguard Worker     bool BypassYAF;
759*ba62d9d3SAndroid Build Coastguard Worker     BYTE DefaultSharpLvl;
760*ba62d9d3SAndroid Build Coastguard Worker     BYTE maxDerivative4Pixels;
761*ba62d9d3SAndroid Build Coastguard Worker     BYTE maxDerivative8Pixels;
762*ba62d9d3SAndroid Build Coastguard Worker     BYTE transitionArea4Pixels;
763*ba62d9d3SAndroid Build Coastguard Worker     BYTE transitionArea8Pixels;
764*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_INTERNEL_COEFF_TABLE Tbl0X[ CM_NUM_COEFF_ROWS_SKL ];
765*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_INTERNEL_COEFF_TABLE Tbl0Y[ CM_NUM_COEFF_ROWS_SKL ];
766*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_INTERNEL_COEFF_TABLE Tbl1X[ CM_NUM_COEFF_ROWS_SKL ];
767*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_INTERNEL_COEFF_TABLE Tbl1Y[ CM_NUM_COEFF_ROWS_SKL ];
768*ba62d9d3SAndroid Build Coastguard Worker     bool bEnableRGBAdaptive;
769*ba62d9d3SAndroid Build Coastguard Worker     bool bAdaptiveFilterAllChannels;
770*ba62d9d3SAndroid Build Coastguard Worker }CM_AVS_INTERNEL_NONPIPLINED_STATE;
771*ba62d9d3SAndroid Build Coastguard Worker 
772*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_AVS_STATE_MSG{
773*ba62d9d3SAndroid Build Coastguard Worker     bool AVSTYPE; //true nearest, false adaptive
774*ba62d9d3SAndroid Build Coastguard Worker     bool EightTapAFEnable; //HSW+
775*ba62d9d3SAndroid Build Coastguard Worker     bool BypassIEF; //ignored for BWL, moved to sampler8x8 payload.
776*ba62d9d3SAndroid Build Coastguard Worker     bool ShuffleOutputWriteback; //SKL mode only to be set when AVS msg sequence is 4x4 or 8x4
777*ba62d9d3SAndroid Build Coastguard Worker     bool HDCDirectWriteEnable;
778*ba62d9d3SAndroid Build Coastguard Worker     unsigned short GainFactor;
779*ba62d9d3SAndroid Build Coastguard Worker     unsigned char GlobalNoiseEstm;
780*ba62d9d3SAndroid Build Coastguard Worker     unsigned char StrongEdgeThr;
781*ba62d9d3SAndroid Build Coastguard Worker     unsigned char WeakEdgeThr;
782*ba62d9d3SAndroid Build Coastguard Worker     unsigned char StrongEdgeWght;
783*ba62d9d3SAndroid Build Coastguard Worker     unsigned char RegularWght;
784*ba62d9d3SAndroid Build Coastguard Worker     unsigned char NonEdgeWght;
785*ba62d9d3SAndroid Build Coastguard Worker     unsigned short wR3xCoefficient;
786*ba62d9d3SAndroid Build Coastguard Worker     unsigned short wR3cCoefficient;
787*ba62d9d3SAndroid Build Coastguard Worker     unsigned short wR5xCoefficient;
788*ba62d9d3SAndroid Build Coastguard Worker     unsigned short wR5cxCoefficient;
789*ba62d9d3SAndroid Build Coastguard Worker     unsigned short wR5cCoefficient;
790*ba62d9d3SAndroid Build Coastguard Worker     //For Non-piplined states
791*ba62d9d3SAndroid Build Coastguard Worker     unsigned short stateID;
792*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_NONPIPLINED_STATE * AvsState;
793*ba62d9d3SAndroid Build Coastguard Worker } CM_AVS_STATE_MSG;
794*ba62d9d3SAndroid Build Coastguard Worker 
795*ba62d9d3SAndroid Build Coastguard Worker struct CM_AVS_STATE_MSG_EX {
796*ba62d9d3SAndroid Build Coastguard Worker   CM_AVS_STATE_MSG_EX();
797*ba62d9d3SAndroid Build Coastguard Worker 
798*ba62d9d3SAndroid Build Coastguard Worker   bool enable_all_channel_adaptive_filter;  // adaptive filter for all channels. validValues => [true..false]
799*ba62d9d3SAndroid Build Coastguard Worker   bool enable_rgb_adaptive_filter;          // adaptive filter for all channels. validValues => [true..false]
800*ba62d9d3SAndroid Build Coastguard Worker   bool enable_8_tap_adaptive_filter;        // enable 8-tap filter. validValues => [true..false]
801*ba62d9d3SAndroid Build Coastguard Worker   bool enable_uv_8_tap_filter;              // enable 8-tap filter on UV/RB channels. validValues => [true..false]
802*ba62d9d3SAndroid Build Coastguard Worker   bool writeback_format;                    // true sampleunorm, false standard. validValues => [true..false]
803*ba62d9d3SAndroid Build Coastguard Worker   bool writeback_mode;                      // true vsa, false ief. validValues => [true..false]
804*ba62d9d3SAndroid Build Coastguard Worker   BYTE state_selection;                     // 0=>first,1=>second scaler8x8 state. validValues => [0..1]
805*ba62d9d3SAndroid Build Coastguard Worker 
806*ba62d9d3SAndroid Build Coastguard Worker   // Image enhancement filter settings.
807*ba62d9d3SAndroid Build Coastguard Worker   bool enable_ief;        // image enhancement filter enable. validValues => [true..false]
808*ba62d9d3SAndroid Build Coastguard Worker   bool ief_type;          // true "basic" or false "advanced". validValues => [true..false]
809*ba62d9d3SAndroid Build Coastguard Worker   bool enable_ief_smooth; // true based on 3x3, false based on 5x5 validValues => [true..false]
810*ba62d9d3SAndroid Build Coastguard Worker   float r3c_coefficient;  // smoothing coeffient. Valid values => [0.0..0.96875]
811*ba62d9d3SAndroid Build Coastguard Worker   float r3x_coefficient;  // smoothing coeffient. Valid values => [0.0..0.96875]
812*ba62d9d3SAndroid Build Coastguard Worker   float r5c_coefficient;  // smoothing coeffient. validValues => [0.0..0.96875]
813*ba62d9d3SAndroid Build Coastguard Worker   float r5cx_coefficient; // smoothing coeffient. validValues => [0.0..0.96875]
814*ba62d9d3SAndroid Build Coastguard Worker   float r5x_coefficient;  // smoothing coeffient. validValues => [0.0..0.96875]
815*ba62d9d3SAndroid Build Coastguard Worker 
816*ba62d9d3SAndroid Build Coastguard Worker   // Edge processing settings.
817*ba62d9d3SAndroid Build Coastguard Worker   BYTE strong_edge_threshold; // validValues => [0..64]
818*ba62d9d3SAndroid Build Coastguard Worker   BYTE strong_edge_weight;    // Sharpening strength when a strong edge. validValues => [0..7]
819*ba62d9d3SAndroid Build Coastguard Worker   BYTE weak_edge_threshold;   // validValues => [0..64]
820*ba62d9d3SAndroid Build Coastguard Worker   BYTE regular_edge_weight;   // Sharpening strength when a weak edge. validValues => [0..7]
821*ba62d9d3SAndroid Build Coastguard Worker   BYTE non_edge_weight;       // Sharpening strength when no edge. validValues => [0..7]
822*ba62d9d3SAndroid Build Coastguard Worker 
823*ba62d9d3SAndroid Build Coastguard Worker   // Chroma key.
824*ba62d9d3SAndroid Build Coastguard Worker   bool enable_chroma_key; // Chroma keying be performed. validValues => [true..false]
825*ba62d9d3SAndroid Build Coastguard Worker   BYTE chroma_key_index;  // ChromaKey Table entry. validValues => [0..3]
826*ba62d9d3SAndroid Build Coastguard Worker 
827*ba62d9d3SAndroid Build Coastguard Worker   // Skin tone settings.
828*ba62d9d3SAndroid Build Coastguard Worker   bool enable_skin_tone;              // SkinToneTunedIEF_Enable. validValues => [true..false]
829*ba62d9d3SAndroid Build Coastguard Worker   bool enable_vy_skin_tone_detection; // Enables STD in the VY subspace. validValues => [true..false]
830*ba62d9d3SAndroid Build Coastguard Worker   bool skin_detail_factor;            // validValues => [true..false]
831*ba62d9d3SAndroid Build Coastguard Worker   BYTE skin_types_margin;             // validValues => [0..255]
832*ba62d9d3SAndroid Build Coastguard Worker   BYTE skin_types_threshold;          // validValues => [0..255]
833*ba62d9d3SAndroid Build Coastguard Worker 
834*ba62d9d3SAndroid Build Coastguard Worker   // Miscellaneous settings.
835*ba62d9d3SAndroid Build Coastguard Worker   BYTE gain_factor;             // validValues => [0..63]
836*ba62d9d3SAndroid Build Coastguard Worker   BYTE global_noise_estimation; // validValues => [0..255]
837*ba62d9d3SAndroid Build Coastguard Worker   bool mr_boost;                // validValues => [true..false]
838*ba62d9d3SAndroid Build Coastguard Worker   BYTE mr_smooth_threshold;     // validValues => [0..3]
839*ba62d9d3SAndroid Build Coastguard Worker   BYTE mr_threshold;
840*ba62d9d3SAndroid Build Coastguard Worker   bool steepness_boost;         // validValues => [true..false]
841*ba62d9d3SAndroid Build Coastguard Worker   BYTE steepness_threshold;     // validValues => [0..15]
842*ba62d9d3SAndroid Build Coastguard Worker   bool texture_coordinate_mode; // true: clamp, false: mirror. validValues => [true..false]
843*ba62d9d3SAndroid Build Coastguard Worker   BYTE max_hue;                 // Rectangle half width. validValued => [0..63]
844*ba62d9d3SAndroid Build Coastguard Worker   BYTE max_saturation;          // Rectangle half length. validValued => [0..63]
845*ba62d9d3SAndroid Build Coastguard Worker   int angles;                   // validValued => [0..360]
846*ba62d9d3SAndroid Build Coastguard Worker   BYTE diamond_margin ;         // validValues => [0..7]
847*ba62d9d3SAndroid Build Coastguard Worker   char diamond_du;              // Rhombus center shift in the sat-direction. validValues => [-64..63]
848*ba62d9d3SAndroid Build Coastguard Worker   char diamond_dv;              // Rhombus center shift in the hue-direction. validValues => [-64..63]
849*ba62d9d3SAndroid Build Coastguard Worker   float diamond_alpha;          // validValues => [0.0..4.0]
850*ba62d9d3SAndroid Build Coastguard Worker   BYTE diamond_threshold;       // validValues => [0..63]
851*ba62d9d3SAndroid Build Coastguard Worker   BYTE rectangle_margin;        // validValues => [0..7]
852*ba62d9d3SAndroid Build Coastguard Worker   BYTE rectangle_midpoint[2];   // validValues => [[0..255, 0..255]]
853*ba62d9d3SAndroid Build Coastguard Worker   float vy_inverse_margin[2];   // validValues => [[0.0..1.0, 0.0..1.0]]
854*ba62d9d3SAndroid Build Coastguard Worker 
855*ba62d9d3SAndroid Build Coastguard Worker   // Piecewise linear function settings.
856*ba62d9d3SAndroid Build Coastguard Worker   BYTE piecewise_linear_y_points[4];      // validValues => [[0..255, 0..255, 0..255, 0..255]]
857*ba62d9d3SAndroid Build Coastguard Worker   float piecewise_linear_y_slopes[2];     // validValues => [[-4.0...4.0, -4.0...4.0]]
858*ba62d9d3SAndroid Build Coastguard Worker   BYTE piecewise_linear_points_lower[4];  // validValues => [[0..255, 0..255, 0..255, 0..255]]
859*ba62d9d3SAndroid Build Coastguard Worker   BYTE piecewise_linear_points_upper[4];  // validValues => [[0..255, 0..255, 0..255, 0..255]]
860*ba62d9d3SAndroid Build Coastguard Worker   float piecewise_linear_slopes_lower[4]; // validValues => [[-4.0...4.0, -4.0...4.0, -4.0...4.0, -4.0...4.0]]
861*ba62d9d3SAndroid Build Coastguard Worker   float piecewise_linear_slopes_upper[4]; // validValues => [[-4.0...4.0, -4.0...4.0, -4.0...4.0, -4.0...4.0]]
862*ba62d9d3SAndroid Build Coastguard Worker   BYTE piecewise_linear_biases_lower[4];  // validValues => [[0..255, 0..255, 0..255, 0..255]]
863*ba62d9d3SAndroid Build Coastguard Worker   BYTE piecewise_linear_biases_upper[4];  // validValues => [[0..255, 0..255, 0..255, 0..255]]
864*ba62d9d3SAndroid Build Coastguard Worker 
865*ba62d9d3SAndroid Build Coastguard Worker   // AVS non-pipelined states.
866*ba62d9d3SAndroid Build Coastguard Worker   BYTE default_sharpness_level;   // default coefficient between smooth and sharp filtering. validValues => [0..255]
867*ba62d9d3SAndroid Build Coastguard Worker   bool enable_x_adaptive_filter;  // validValues => [true, false]
868*ba62d9d3SAndroid Build Coastguard Worker   bool enable_y_adaptive_filter;  // validValues => [true, false]
869*ba62d9d3SAndroid Build Coastguard Worker   BYTE max_derivative_4_pixels;   // lower boundary of the smooth 4 pixel area. validValues => [0..255]
870*ba62d9d3SAndroid Build Coastguard Worker   BYTE max_derivative_8_pixels;   // lower boundary of the smooth 8 pixel area. validValues => [0..255]
871*ba62d9d3SAndroid Build Coastguard Worker   BYTE transition_area_4_pixels;  // used in adaptive filtering to specify the width of the transition area for the 4 pixel calculation. validValues => [0..8]
872*ba62d9d3SAndroid Build Coastguard Worker   BYTE transition_area_8_pixels;  // Used in adaptive filtering to specify the width of the transition area for the 8 pixel calculation. validValues => [0..8]
873*ba62d9d3SAndroid Build Coastguard Worker   CM_AVS_COEFF_TABLE table0_x[CM_NUM_COEFF_ROWS_SKL];
874*ba62d9d3SAndroid Build Coastguard Worker   CM_AVS_COEFF_TABLE table0_y[CM_NUM_COEFF_ROWS_SKL];
875*ba62d9d3SAndroid Build Coastguard Worker   CM_AVS_COEFF_TABLE table1_x[CM_NUM_COEFF_ROWS_SKL];
876*ba62d9d3SAndroid Build Coastguard Worker   CM_AVS_COEFF_TABLE table1_y[CM_NUM_COEFF_ROWS_SKL];
877*ba62d9d3SAndroid Build Coastguard Worker };
878*ba62d9d3SAndroid Build Coastguard Worker 
879*ba62d9d3SAndroid Build Coastguard Worker /*
880*ba62d9d3SAndroid Build Coastguard Worker  *  CONVOLVE STATE DATA STRUCTURES
881*ba62d9d3SAndroid Build Coastguard Worker  */
882*ba62d9d3SAndroid Build Coastguard Worker 
883*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_CONVOLVE_COEFF_TABLE{
884*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_0;
885*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_1;
886*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_2;
887*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_3;
888*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_4;
889*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_5;
890*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_6;
891*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_7;
892*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_8;
893*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_9;
894*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_10;
895*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_11;
896*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_12;
897*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_13;
898*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_14;
899*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_15;
900*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_16;
901*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_17;
902*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_18;
903*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_19;
904*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_20;
905*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_21;
906*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_22;
907*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_23;
908*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_24;
909*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_25;
910*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_26;
911*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_27;
912*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_28;
913*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_29;
914*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_30;
915*ba62d9d3SAndroid Build Coastguard Worker     float   FilterCoeff_0_31;
916*ba62d9d3SAndroid Build Coastguard Worker }CM_CONVOLVE_COEFF_TABLE;
917*ba62d9d3SAndroid Build Coastguard Worker 
918*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_CONVOLVE_STATE_MSG{
919*ba62d9d3SAndroid Build Coastguard Worker     bool CoeffSize; //true 16-bit, false 8-bit
920*ba62d9d3SAndroid Build Coastguard Worker     byte SclDwnValue; //Scale down value
921*ba62d9d3SAndroid Build Coastguard Worker     byte Width; //Kernel Width
922*ba62d9d3SAndroid Build Coastguard Worker     byte Height; //Kernel Height
923*ba62d9d3SAndroid Build Coastguard Worker     //SKL mode
924*ba62d9d3SAndroid Build Coastguard Worker     bool isVertical32Mode;
925*ba62d9d3SAndroid Build Coastguard Worker     bool isHorizontal32Mode;
926*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_SKL_TYPE nConvolveType;
927*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_COEFF_TABLE Table[CM_NUM_CONVOLVE_ROWS_SKL];
928*ba62d9d3SAndroid Build Coastguard Worker } CM_CONVOLVE_STATE_MSG;
929*ba62d9d3SAndroid Build Coastguard Worker 
930*ba62d9d3SAndroid Build Coastguard Worker /*
931*ba62d9d3SAndroid Build Coastguard Worker  *   MISC SAMPLER8x8 State
932*ba62d9d3SAndroid Build Coastguard Worker  */
933*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_MISC_STATE {
934*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 0
935*ba62d9d3SAndroid Build Coastguard Worker     union{
936*ba62d9d3SAndroid Build Coastguard Worker         struct{
937*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row0      : 16;
938*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Reserved  : 8;
939*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Width     : 4;
940*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Height    : 4;
941*ba62d9d3SAndroid Build Coastguard Worker         };
942*ba62d9d3SAndroid Build Coastguard Worker         struct{
943*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
944*ba62d9d3SAndroid Build Coastguard Worker         };
945*ba62d9d3SAndroid Build Coastguard Worker     } DW0;
946*ba62d9d3SAndroid Build Coastguard Worker 
947*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 1
948*ba62d9d3SAndroid Build Coastguard Worker     union{
949*ba62d9d3SAndroid Build Coastguard Worker         struct{
950*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row1      : 16;
951*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row2      : 16;
952*ba62d9d3SAndroid Build Coastguard Worker         };
953*ba62d9d3SAndroid Build Coastguard Worker         struct{
954*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
955*ba62d9d3SAndroid Build Coastguard Worker         };
956*ba62d9d3SAndroid Build Coastguard Worker     } DW1;
957*ba62d9d3SAndroid Build Coastguard Worker 
958*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 2
959*ba62d9d3SAndroid Build Coastguard Worker     union{
960*ba62d9d3SAndroid Build Coastguard Worker         struct{
961*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row3      : 16;
962*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row4      : 16;
963*ba62d9d3SAndroid Build Coastguard Worker         };
964*ba62d9d3SAndroid Build Coastguard Worker         struct{
965*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
966*ba62d9d3SAndroid Build Coastguard Worker         };
967*ba62d9d3SAndroid Build Coastguard Worker     } DW2;
968*ba62d9d3SAndroid Build Coastguard Worker 
969*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 3
970*ba62d9d3SAndroid Build Coastguard Worker     union{
971*ba62d9d3SAndroid Build Coastguard Worker         struct{
972*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row5      : 16;
973*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row6      : 16;
974*ba62d9d3SAndroid Build Coastguard Worker         };
975*ba62d9d3SAndroid Build Coastguard Worker         struct{
976*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
977*ba62d9d3SAndroid Build Coastguard Worker         };
978*ba62d9d3SAndroid Build Coastguard Worker     } DW3;
979*ba62d9d3SAndroid Build Coastguard Worker 
980*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 4
981*ba62d9d3SAndroid Build Coastguard Worker     union{
982*ba62d9d3SAndroid Build Coastguard Worker         struct{
983*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row7      : 16;
984*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row8      : 16;
985*ba62d9d3SAndroid Build Coastguard Worker         };
986*ba62d9d3SAndroid Build Coastguard Worker         struct{
987*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
988*ba62d9d3SAndroid Build Coastguard Worker         };
989*ba62d9d3SAndroid Build Coastguard Worker     } DW4;
990*ba62d9d3SAndroid Build Coastguard Worker 
991*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 5
992*ba62d9d3SAndroid Build Coastguard Worker     union{
993*ba62d9d3SAndroid Build Coastguard Worker         struct{
994*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row9      : 16;
995*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row10      : 16;
996*ba62d9d3SAndroid Build Coastguard Worker         };
997*ba62d9d3SAndroid Build Coastguard Worker         struct{
998*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
999*ba62d9d3SAndroid Build Coastguard Worker         };
1000*ba62d9d3SAndroid Build Coastguard Worker     } DW5;
1001*ba62d9d3SAndroid Build Coastguard Worker 
1002*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 6
1003*ba62d9d3SAndroid Build Coastguard Worker     union{
1004*ba62d9d3SAndroid Build Coastguard Worker         struct{
1005*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row11      : 16;
1006*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row12      : 16;
1007*ba62d9d3SAndroid Build Coastguard Worker         };
1008*ba62d9d3SAndroid Build Coastguard Worker         struct{
1009*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1010*ba62d9d3SAndroid Build Coastguard Worker         };
1011*ba62d9d3SAndroid Build Coastguard Worker     } DW6;
1012*ba62d9d3SAndroid Build Coastguard Worker 
1013*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 7
1014*ba62d9d3SAndroid Build Coastguard Worker     union{
1015*ba62d9d3SAndroid Build Coastguard Worker         struct{
1016*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row13      : 16;
1017*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row14      : 16;
1018*ba62d9d3SAndroid Build Coastguard Worker         };
1019*ba62d9d3SAndroid Build Coastguard Worker         struct{
1020*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1021*ba62d9d3SAndroid Build Coastguard Worker         };
1022*ba62d9d3SAndroid Build Coastguard Worker     } DW7;
1023*ba62d9d3SAndroid Build Coastguard Worker } CM_MISC_STATE;
1024*ba62d9d3SAndroid Build Coastguard Worker 
1025*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_MISC_STATE_MSG{
1026*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 0
1027*ba62d9d3SAndroid Build Coastguard Worker     union{
1028*ba62d9d3SAndroid Build Coastguard Worker         struct{
1029*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row0      : 16;
1030*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Reserved  : 8;
1031*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Width     : 4;
1032*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Height    : 4;
1033*ba62d9d3SAndroid Build Coastguard Worker         };
1034*ba62d9d3SAndroid Build Coastguard Worker         struct{
1035*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1036*ba62d9d3SAndroid Build Coastguard Worker         };
1037*ba62d9d3SAndroid Build Coastguard Worker     }DW0;
1038*ba62d9d3SAndroid Build Coastguard Worker 
1039*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 1
1040*ba62d9d3SAndroid Build Coastguard Worker     union{
1041*ba62d9d3SAndroid Build Coastguard Worker         struct{
1042*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row1      : 16;
1043*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row2      : 16;
1044*ba62d9d3SAndroid Build Coastguard Worker         };
1045*ba62d9d3SAndroid Build Coastguard Worker         struct{
1046*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1047*ba62d9d3SAndroid Build Coastguard Worker         };
1048*ba62d9d3SAndroid Build Coastguard Worker     }DW1;
1049*ba62d9d3SAndroid Build Coastguard Worker 
1050*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 2
1051*ba62d9d3SAndroid Build Coastguard Worker     union{
1052*ba62d9d3SAndroid Build Coastguard Worker         struct{
1053*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row3      : 16;
1054*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row4      : 16;
1055*ba62d9d3SAndroid Build Coastguard Worker         };
1056*ba62d9d3SAndroid Build Coastguard Worker         struct{
1057*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1058*ba62d9d3SAndroid Build Coastguard Worker         };
1059*ba62d9d3SAndroid Build Coastguard Worker     }DW2;
1060*ba62d9d3SAndroid Build Coastguard Worker 
1061*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 3
1062*ba62d9d3SAndroid Build Coastguard Worker     union{
1063*ba62d9d3SAndroid Build Coastguard Worker         struct{
1064*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row5      : 16;
1065*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row6      : 16;
1066*ba62d9d3SAndroid Build Coastguard Worker         };
1067*ba62d9d3SAndroid Build Coastguard Worker         struct{
1068*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1069*ba62d9d3SAndroid Build Coastguard Worker         };
1070*ba62d9d3SAndroid Build Coastguard Worker     }DW3;
1071*ba62d9d3SAndroid Build Coastguard Worker 
1072*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 4
1073*ba62d9d3SAndroid Build Coastguard Worker     union{
1074*ba62d9d3SAndroid Build Coastguard Worker         struct{
1075*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row7      : 16;
1076*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row8      : 16;
1077*ba62d9d3SAndroid Build Coastguard Worker         };
1078*ba62d9d3SAndroid Build Coastguard Worker         struct{
1079*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1080*ba62d9d3SAndroid Build Coastguard Worker         };
1081*ba62d9d3SAndroid Build Coastguard Worker     }DW4;
1082*ba62d9d3SAndroid Build Coastguard Worker 
1083*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 5
1084*ba62d9d3SAndroid Build Coastguard Worker     union{
1085*ba62d9d3SAndroid Build Coastguard Worker         struct{
1086*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row9      : 16;
1087*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row10      : 16;
1088*ba62d9d3SAndroid Build Coastguard Worker         };
1089*ba62d9d3SAndroid Build Coastguard Worker         struct{
1090*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1091*ba62d9d3SAndroid Build Coastguard Worker         };
1092*ba62d9d3SAndroid Build Coastguard Worker     }DW5;
1093*ba62d9d3SAndroid Build Coastguard Worker 
1094*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 6
1095*ba62d9d3SAndroid Build Coastguard Worker     union{
1096*ba62d9d3SAndroid Build Coastguard Worker         struct{
1097*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row11      : 16;
1098*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row12      : 16;
1099*ba62d9d3SAndroid Build Coastguard Worker         };
1100*ba62d9d3SAndroid Build Coastguard Worker         struct{
1101*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1102*ba62d9d3SAndroid Build Coastguard Worker         };
1103*ba62d9d3SAndroid Build Coastguard Worker     }DW6;
1104*ba62d9d3SAndroid Build Coastguard Worker 
1105*ba62d9d3SAndroid Build Coastguard Worker     //DWORD 7
1106*ba62d9d3SAndroid Build Coastguard Worker     union{
1107*ba62d9d3SAndroid Build Coastguard Worker         struct{
1108*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row13      : 16;
1109*ba62d9d3SAndroid Build Coastguard Worker             DWORD   Row14      : 16;
1110*ba62d9d3SAndroid Build Coastguard Worker         };
1111*ba62d9d3SAndroid Build Coastguard Worker         struct{
1112*ba62d9d3SAndroid Build Coastguard Worker             DWORD value;
1113*ba62d9d3SAndroid Build Coastguard Worker         };
1114*ba62d9d3SAndroid Build Coastguard Worker     }DW7;
1115*ba62d9d3SAndroid Build Coastguard Worker } CM_MISC_STATE_MSG;
1116*ba62d9d3SAndroid Build Coastguard Worker 
1117*ba62d9d3SAndroid Build Coastguard Worker enum CM_SAMPLER_STATE_TYPE {
1118*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_AVS = 0,
1119*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_CONV = 1,
1120*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_MISC = 3,
1121*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_CONV1DH = 4,
1122*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_CONV1DV = 5,
1123*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_AVS_EX = 6,
1124*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER8X8_NONE
1125*ba62d9d3SAndroid Build Coastguard Worker };
1126*ba62d9d3SAndroid Build Coastguard Worker 
1127*ba62d9d3SAndroid Build Coastguard Worker struct CM_SAMPLER_8X8_DESCR {
1128*ba62d9d3SAndroid Build Coastguard Worker   CM_SAMPLER_STATE_TYPE stateType;
1129*ba62d9d3SAndroid Build Coastguard Worker   union {
1130*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_STATE_MSG *avs;
1131*ba62d9d3SAndroid Build Coastguard Worker     CM_AVS_STATE_MSG_EX *avs_ex;
1132*ba62d9d3SAndroid Build Coastguard Worker     CM_CONVOLVE_STATE_MSG *conv;
1133*ba62d9d3SAndroid Build Coastguard Worker     CM_MISC_STATE_MSG *misc; //ERODE/DILATE/MINMAX
1134*ba62d9d3SAndroid Build Coastguard Worker   };
1135*ba62d9d3SAndroid Build Coastguard Worker };
1136*ba62d9d3SAndroid Build Coastguard Worker 
1137*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_VEBOX_STATE
1138*ba62d9d3SAndroid Build Coastguard Worker {
1139*ba62d9d3SAndroid Build Coastguard Worker 
1140*ba62d9d3SAndroid Build Coastguard Worker     DWORD       ColorGamutExpansionEnable : 1;
1141*ba62d9d3SAndroid Build Coastguard Worker     DWORD       ColorGamutCompressionEnable : 1;
1142*ba62d9d3SAndroid Build Coastguard Worker     DWORD       GlobalIECPEnable : 1;
1143*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DNEnable : 1;
1144*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DIEnable : 1;
1145*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DNDIFirstFrame : 1;
1146*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DownsampleMethod422to420 : 1;
1147*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DownsampleMethod444to422 : 1;
1148*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DIOutputFrames : 2;
1149*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DemosaicEnable : 1;
1150*ba62d9d3SAndroid Build Coastguard Worker     DWORD       VignetteEnable : 1;
1151*ba62d9d3SAndroid Build Coastguard Worker     DWORD       AlphaPlaneEnable : 1;
1152*ba62d9d3SAndroid Build Coastguard Worker     DWORD       HotPixelFilteringEnable : 1;
1153*ba62d9d3SAndroid Build Coastguard Worker     DWORD       SingleSliceVeboxEnable : 1;
1154*ba62d9d3SAndroid Build Coastguard Worker     DWORD       LaceCorrectionEnable : BITFIELD_BIT(16);
1155*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DisableEncoderStatistics : BITFIELD_BIT(17);
1156*ba62d9d3SAndroid Build Coastguard Worker     DWORD       DisableTemporalDenoiseFilter : BITFIELD_BIT(18);
1157*ba62d9d3SAndroid Build Coastguard Worker     DWORD       SinglePipeEnable : BITFIELD_BIT(19);
1158*ba62d9d3SAndroid Build Coastguard Worker     DWORD      __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(20);
1159*ba62d9d3SAndroid Build Coastguard Worker     DWORD       ForwardGammaCorrectionEnable : BITFIELD_BIT(21);
1160*ba62d9d3SAndroid Build Coastguard Worker     DWORD        __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 24);
1161*ba62d9d3SAndroid Build Coastguard Worker     DWORD       StateSurfaceControlBits : BITFIELD_RANGE(25, 31);
1162*ba62d9d3SAndroid Build Coastguard Worker }  CM_VEBOX_STATE, *PCM_VEBOX_STATE;
1163*ba62d9d3SAndroid Build Coastguard Worker 
1164*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_POWER_OPTION
1165*ba62d9d3SAndroid Build Coastguard Worker {
1166*ba62d9d3SAndroid Build Coastguard Worker     USHORT nSlice;                      // set number of slice to use: 0(default number), 1, 2...
1167*ba62d9d3SAndroid Build Coastguard Worker     USHORT nSubSlice;                   // set number of subslice to use: 0(default number), 1, 2...
1168*ba62d9d3SAndroid Build Coastguard Worker     USHORT nEU;                         // set number of EU to use: 0(default number), 1, 2...
1169*ba62d9d3SAndroid Build Coastguard Worker } CM_POWER_OPTION, *PCM_POWER_OPTION;
1170*ba62d9d3SAndroid Build Coastguard Worker 
1171*ba62d9d3SAndroid Build Coastguard Worker // to support new flag with current API
1172*ba62d9d3SAndroid Build Coastguard Worker // new flag/field could be add to the end of this structure
1173*ba62d9d3SAndroid Build Coastguard Worker //
1174*ba62d9d3SAndroid Build Coastguard Worker struct CM_FLAG {
1175*ba62d9d3SAndroid Build Coastguard Worker     CM_FLAG();
1176*ba62d9d3SAndroid Build Coastguard Worker     CM_ROTATION rotationFlag;
1177*ba62d9d3SAndroid Build Coastguard Worker     INT chromaSiting;
1178*ba62d9d3SAndroid Build Coastguard Worker };
1179*ba62d9d3SAndroid Build Coastguard Worker 
1180*ba62d9d3SAndroid Build Coastguard Worker struct _CM_TASK_CONFIG {
1181*ba62d9d3SAndroid Build Coastguard Worker     bool     turboBoostFlag     : 1;
1182*ba62d9d3SAndroid Build Coastguard Worker     bool     fusedEuDispatchFlag : 1;
1183*ba62d9d3SAndroid Build Coastguard Worker     uint32_t reserved_bits      :30;
1184*ba62d9d3SAndroid Build Coastguard Worker     uint32_t reserved0;
1185*ba62d9d3SAndroid Build Coastguard Worker     uint32_t reserved1;
1186*ba62d9d3SAndroid Build Coastguard Worker     uint32_t reserved2;
1187*ba62d9d3SAndroid Build Coastguard Worker };
1188*ba62d9d3SAndroid Build Coastguard Worker 
1189*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_KERNEL_EXEC_MODE {
1190*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_EXECUTION_MODE_MONOPOLIZED =  0, // Kernel can occupy all DSS for execution */
1191*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_EXECUTION_MODE_CONCURRENT,       // Kernel can occupy part of DSS  and concurrently execute together with other workloads.
1192*ba62d9d3SAndroid Build Coastguard Worker } CM_KERNEL_EXEC_MODE;
1193*ba62d9d3SAndroid Build Coastguard Worker 
1194*ba62d9d3SAndroid Build Coastguard Worker struct CM_EXECUTION_CONFIG {
1195*ba62d9d3SAndroid Build Coastguard Worker     CM_KERNEL_EXEC_MODE kernelExecutionMode = CM_KERNEL_EXECUTION_MODE_MONOPOLIZED;
1196*ba62d9d3SAndroid Build Coastguard Worker     int                 concurrentPolicy    = 0; // Reserve for future extension.
1197*ba62d9d3SAndroid Build Coastguard Worker };
1198*ba62d9d3SAndroid Build Coastguard Worker 
1199*ba62d9d3SAndroid Build Coastguard Worker #define CM_TASK_CONFIG _CM_TASK_CONFIG
1200*ba62d9d3SAndroid Build Coastguard Worker 
1201*ba62d9d3SAndroid Build Coastguard Worker // parameters used to set the surface state of the buffer
1202*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_SURFACE_MEM_OBJ_CTRL {
1203*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_OBJECT_CONTROL mem_ctrl;
1204*ba62d9d3SAndroid Build Coastguard Worker     MEMORY_TYPE mem_type;
1205*ba62d9d3SAndroid Build Coastguard Worker     INT age;
1206*ba62d9d3SAndroid Build Coastguard Worker } CM_SURFACE_MEM_OBJ_CTRL;
1207*ba62d9d3SAndroid Build Coastguard Worker 
1208*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_BUFFER_STATE_PARAM
1209*ba62d9d3SAndroid Build Coastguard Worker {
1210*ba62d9d3SAndroid Build Coastguard Worker     UINT                      uiSize;               // the new size of the buffer, if it is 0, set it as the (original width - offset)
1211*ba62d9d3SAndroid Build Coastguard Worker     UINT                      uiBaseAddressOffset;  // offset should be 16-aligned
1212*ba62d9d3SAndroid Build Coastguard Worker     CM_SURFACE_MEM_OBJ_CTRL   mocs;                 // if not set (all zeros), then the aliases mocs setting is the same as the origin
1213*ba62d9d3SAndroid Build Coastguard Worker }CM_BUFFER_STATE_PARAM;
1214*ba62d9d3SAndroid Build Coastguard Worker 
1215*ba62d9d3SAndroid Build Coastguard Worker typedef struct _CM_SURFACE2D_STATE_PARAM
1216*ba62d9d3SAndroid Build Coastguard Worker {
1217*ba62d9d3SAndroid Build Coastguard Worker     UINT format;
1218*ba62d9d3SAndroid Build Coastguard Worker     UINT width;
1219*ba62d9d3SAndroid Build Coastguard Worker     UINT height;
1220*ba62d9d3SAndroid Build Coastguard Worker     UINT depth;
1221*ba62d9d3SAndroid Build Coastguard Worker     UINT pitch;
1222*ba62d9d3SAndroid Build Coastguard Worker     WORD memory_object_control;
1223*ba62d9d3SAndroid Build Coastguard Worker     UINT surface_x_offset;
1224*ba62d9d3SAndroid Build Coastguard Worker     UINT surface_y_offset;
1225*ba62d9d3SAndroid Build Coastguard Worker     UINT reserved[4]; // for future usage
1226*ba62d9d3SAndroid Build Coastguard Worker } CM_SURFACE2D_STATE_PARAM;
1227*ba62d9d3SAndroid Build Coastguard Worker 
1228*ba62d9d3SAndroid Build Coastguard Worker struct _CM_QUEUE_CREATE_OPTION
1229*ba62d9d3SAndroid Build Coastguard Worker {
1230*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_TYPE                 QueueType               : 3;
1231*ba62d9d3SAndroid Build Coastguard Worker     bool                          RAMode                  : 1;
1232*ba62d9d3SAndroid Build Coastguard Worker     unsigned int                  Reserved0               : 3;
1233*ba62d9d3SAndroid Build Coastguard Worker     bool                          UserGPUContext          : 1; // Is the user-provided GPU Context already created externally
1234*ba62d9d3SAndroid Build Coastguard Worker     unsigned int                  GPUContext              : 8; // user-provided GPU Context ordinal
1235*ba62d9d3SAndroid Build Coastguard Worker     CM_QUEUE_SSEU_USAGE_HINT_TYPE SseuUsageHint           : 3;
1236*ba62d9d3SAndroid Build Coastguard Worker     unsigned int                  Reserved1               : 1;
1237*ba62d9d3SAndroid Build Coastguard Worker     unsigned int                  Reserved2               : 12;
1238*ba62d9d3SAndroid Build Coastguard Worker };
1239*ba62d9d3SAndroid Build Coastguard Worker #define CM_QUEUE_CREATE_OPTION _CM_QUEUE_CREATE_OPTION
1240*ba62d9d3SAndroid Build Coastguard Worker 
1241*ba62d9d3SAndroid Build Coastguard Worker typedef enum _CM_CONDITIONAL_END_OPERATOR_CODE {
1242*ba62d9d3SAndroid Build Coastguard Worker     MAD_GREATER_THAN_IDD = 0,
1243*ba62d9d3SAndroid Build Coastguard Worker     MAD_GREATER_THAN_OR_EQUAL_IDD,
1244*ba62d9d3SAndroid Build Coastguard Worker     MAD_LESS_THAN_IDD,
1245*ba62d9d3SAndroid Build Coastguard Worker     MAD_LESS_THAN_OR_EQUAL_IDD,
1246*ba62d9d3SAndroid Build Coastguard Worker     MAD_EQUAL_IDD,
1247*ba62d9d3SAndroid Build Coastguard Worker     MAD_NOT_EQUAL_IDD
1248*ba62d9d3SAndroid Build Coastguard Worker } CM_CONDITIONAL_END_OPERATOR_CODE;
1249*ba62d9d3SAndroid Build Coastguard Worker 
1250*ba62d9d3SAndroid Build Coastguard Worker struct CM_CONDITIONAL_END_PARAM {
1251*ba62d9d3SAndroid Build Coastguard Worker     DWORD opValue;
1252*ba62d9d3SAndroid Build Coastguard Worker     CM_CONDITIONAL_END_OPERATOR_CODE  opCode;
1253*ba62d9d3SAndroid Build Coastguard Worker     bool  opMask;
1254*ba62d9d3SAndroid Build Coastguard Worker     bool  opLevel;
1255*ba62d9d3SAndroid Build Coastguard Worker };
1256*ba62d9d3SAndroid Build Coastguard Worker 
1257*ba62d9d3SAndroid Build Coastguard Worker struct CM_KERNEL_SYNC_CONFIG {
1258*ba62d9d3SAndroid Build Coastguard Worker     bool     dataCacheFlush   : 1; // true: cache will be flushed;
1259*ba62d9d3SAndroid Build Coastguard Worker     uint32_t reserved         : 31;
1260*ba62d9d3SAndroid Build Coastguard Worker };
1261*ba62d9d3SAndroid Build Coastguard Worker 
1262*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1263*ba62d9d3SAndroid Build Coastguard Worker // Classes forward declarations
1264*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1265*ba62d9d3SAndroid Build Coastguard Worker class CmSampler8x8;
1266*ba62d9d3SAndroid Build Coastguard Worker class CmEvent;
1267*ba62d9d3SAndroid Build Coastguard Worker class CmThreadGroupSpace;
1268*ba62d9d3SAndroid Build Coastguard Worker class CmKernel;
1269*ba62d9d3SAndroid Build Coastguard Worker class CmTask;
1270*ba62d9d3SAndroid Build Coastguard Worker class CmProgram;
1271*ba62d9d3SAndroid Build Coastguard Worker class CmBuffer;
1272*ba62d9d3SAndroid Build Coastguard Worker class CmBufferUP;
1273*ba62d9d3SAndroid Build Coastguard Worker class CmBufferSVM;
1274*ba62d9d3SAndroid Build Coastguard Worker class CmBufferStateless;
1275*ba62d9d3SAndroid Build Coastguard Worker class CmSurface2D;
1276*ba62d9d3SAndroid Build Coastguard Worker class CmSurface2DUP;
1277*ba62d9d3SAndroid Build Coastguard Worker class CmSurface2DStateless;
1278*ba62d9d3SAndroid Build Coastguard Worker class CmSurface3D;
1279*ba62d9d3SAndroid Build Coastguard Worker class CmSampler;
1280*ba62d9d3SAndroid Build Coastguard Worker class CmThreadSpace;
1281*ba62d9d3SAndroid Build Coastguard Worker class CmVebox;
1282*ba62d9d3SAndroid Build Coastguard Worker class CmQueue;
1283*ba62d9d3SAndroid Build Coastguard Worker class SurfaceIndex;
1284*ba62d9d3SAndroid Build Coastguard Worker class SamplerIndex;
1285*ba62d9d3SAndroid Build Coastguard Worker 
1286*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1287*ba62d9d3SAndroid Build Coastguard Worker // Extended definitions if any
1288*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1289*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_extension.h"
1290*ba62d9d3SAndroid Build Coastguard Worker 
1291*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1292*ba62d9d3SAndroid Build Coastguard Worker // Constants
1293*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1294*ba62d9d3SAndroid Build Coastguard Worker const CM_QUEUE_CREATE_OPTION CM_DEFAULT_QUEUE_CREATE_OPTION = { CM_QUEUE_TYPE_RENDER, false, 0, false, 0, CM_QUEUE_SSEU_USAGE_HINT_DEFAULT, 0, 0 };
1295*ba62d9d3SAndroid Build Coastguard Worker 
1296*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1297*ba62d9d3SAndroid Build Coastguard Worker // Classes
1298*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1299*ba62d9d3SAndroid Build Coastguard Worker class CmSampler8x8
1300*ba62d9d3SAndroid Build Coastguard Worker {
1301*ba62d9d3SAndroid Build Coastguard Worker public:
1302*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SamplerIndex* & pIndex ) = 0 ;
1303*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmSampler8x8()1304*ba62d9d3SAndroid Build Coastguard Worker     ~CmSampler8x8(){};
1305*ba62d9d3SAndroid Build Coastguard Worker };
1306*ba62d9d3SAndroid Build Coastguard Worker 
1307*ba62d9d3SAndroid Build Coastguard Worker class CmEvent
1308*ba62d9d3SAndroid Build Coastguard Worker {
1309*ba62d9d3SAndroid Build Coastguard Worker public:
1310*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetStatus( CM_STATUS& status) = 0 ;
1311*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetExecutionTime(UINT64& time) = 0;
1312*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT WaitForTaskFinished(DWORD dwTimeOutMs = CM_MAX_TIMEOUT_MS) = 0 ;
1313*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetSurfaceDetails( UINT kernIndex, UINT surfBTI,CM_SURFACE_DETAILS& outDetails )=0;
1314*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetProfilingInfo(CM_EVENT_PROFILING_INFO infoType, size_t paramSize, PVOID pInputValue, PVOID pValue) = 0;
1315*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetExecutionTickTime(UINT64& ticks) = 0;
1316*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmEvent()1317*ba62d9d3SAndroid Build Coastguard Worker    ~CmEvent(){};
1318*ba62d9d3SAndroid Build Coastguard Worker };
1319*ba62d9d3SAndroid Build Coastguard Worker 
1320*ba62d9d3SAndroid Build Coastguard Worker class CmKernel
1321*ba62d9d3SAndroid Build Coastguard Worker {
1322*ba62d9d3SAndroid Build Coastguard Worker public:
1323*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetThreadCount(UINT count ) = 0;
1324*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetKernelArg(UINT index, size_t size, const void * pValue ) = 0;
1325*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetThreadArg(UINT threadId, UINT index, size_t size, const void * pValue ) = 0;
1326*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetStaticBuffer(UINT index, const void * pValue ) = 0;
1327*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSurfaceBTI(SurfaceIndex* pSurface, UINT BTIndex) = 0;
1328*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AssociateThreadSpace(CmThreadSpace* & pTS) = 0;
1329*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AssociateThreadGroupSpace(CmThreadGroupSpace* & pTGS) = 0;
1330*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSamplerBTI(SamplerIndex* pSampler, UINT nIndex) = 0;
1331*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT DeAssociateThreadSpace(CmThreadSpace* & pTS) = 0;
1332*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT DeAssociateThreadGroupSpace(CmThreadGroupSpace* & pTGS) = 0;
1333*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT QuerySpillSize(unsigned int &spillSize) = 0;
1334*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetKernelArgPointer(UINT index, size_t size, const void *pValue) = 0;
1335*ba62d9d3SAndroid Build Coastguard Worker 
1336*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmKernel()1337*ba62d9d3SAndroid Build Coastguard Worker    ~CmKernel(){};
1338*ba62d9d3SAndroid Build Coastguard Worker };
1339*ba62d9d3SAndroid Build Coastguard Worker 
1340*ba62d9d3SAndroid Build Coastguard Worker class CmTask
1341*ba62d9d3SAndroid Build Coastguard Worker {
1342*ba62d9d3SAndroid Build Coastguard Worker public:
1343*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AddKernel(CmKernel *pKernel) = 0;
1344*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT Reset(void) = 0;
1345*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AddSync(void) = 0;
1346*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetPowerOption( PCM_POWER_OPTION pCmPowerOption ) = 0;
1347*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AddConditionalEnd(SurfaceIndex* pSurface, UINT offset, CM_CONDITIONAL_END_PARAM *pCondParam) = 0;
1348*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetProperty(const CM_TASK_CONFIG &taskConfig) = 0;
1349*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AddKernelWithConfig( CmKernel *pKernel, const CM_EXECUTION_CONFIG *config ) = 0;
1350*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetProperty(CM_TASK_CONFIG &taskConfig) = 0;
1351*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AddSyncEx(const CM_KERNEL_SYNC_CONFIG *config) = 0;
1352*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmTask()1353*ba62d9d3SAndroid Build Coastguard Worker    ~CmTask(){};
1354*ba62d9d3SAndroid Build Coastguard Worker };
1355*ba62d9d3SAndroid Build Coastguard Worker 
1356*ba62d9d3SAndroid Build Coastguard Worker class CmBuffer
1357*ba62d9d3SAndroid Build Coastguard Worker {
1358*ba62d9d3SAndroid Build Coastguard Worker public:
1359*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SurfaceIndex*& pIndex ) = 0;
1360*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT ReadSurface( unsigned char* pSysMem, CmEvent* pEvent, UINT64 sysMemSize = 0xFFFFFFFFFFFFFFFFULL ) = 0;
1361*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT WriteSurface( const unsigned char* pSysMem, CmEvent* pEvent, UINT64 sysMemSize = 0xFFFFFFFFFFFFFFFFULL ) = 0;
1362*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT InitSurface(const DWORD initValue, CmEvent* pEvent) = 0;
1363*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMemoryObjectControlSetting(MEMORY_OBJECT_CONTROL option) = 0;
1364*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSurfaceStateParam(SurfaceIndex *pSurfIndex, const CM_BUFFER_STATE_PARAM *pSSParam) = 0;
1365*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmBuffer()1366*ba62d9d3SAndroid Build Coastguard Worker    ~CmBuffer(){};
1367*ba62d9d3SAndroid Build Coastguard Worker };
1368*ba62d9d3SAndroid Build Coastguard Worker 
1369*ba62d9d3SAndroid Build Coastguard Worker class CmBufferUP
1370*ba62d9d3SAndroid Build Coastguard Worker {
1371*ba62d9d3SAndroid Build Coastguard Worker public:
1372*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SurfaceIndex*& pIndex ) = 0;
1373*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMemoryObjectControlSetting(MEMORY_OBJECT_CONTROL option) = 0;
1374*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmBufferUP()1375*ba62d9d3SAndroid Build Coastguard Worker    ~CmBufferUP(){};
1376*ba62d9d3SAndroid Build Coastguard Worker };
1377*ba62d9d3SAndroid Build Coastguard Worker 
1378*ba62d9d3SAndroid Build Coastguard Worker class CmBufferSVM
1379*ba62d9d3SAndroid Build Coastguard Worker {
1380*ba62d9d3SAndroid Build Coastguard Worker public:
1381*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SurfaceIndex*& pIndex ) = 0;
1382*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetAddress( void * &pAddr) = 0;
1383*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmBufferSVM()1384*ba62d9d3SAndroid Build Coastguard Worker     ~CmBufferSVM(){};
1385*ba62d9d3SAndroid Build Coastguard Worker };
1386*ba62d9d3SAndroid Build Coastguard Worker 
1387*ba62d9d3SAndroid Build Coastguard Worker class CmBufferStateless
1388*ba62d9d3SAndroid Build Coastguard Worker {
1389*ba62d9d3SAndroid Build Coastguard Worker public:
1390*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetGfxAddress(uint64_t &gfxAddr) = 0;
1391*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetSysAddress(void *&pSysAddr) = 0;
1392*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT ReadSurface(unsigned char *pSysMem,
1393*ba62d9d3SAndroid Build Coastguard Worker                                       CmEvent *pEvent,
1394*ba62d9d3SAndroid Build Coastguard Worker                                       uint64_t sysMemSize = 0xFFFFFFFFFFFFFFFFULL) = 0;
1395*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT WriteSurface(const unsigned char *pSysMem,
1396*ba62d9d3SAndroid Build Coastguard Worker                                        CmEvent *pEvent,
1397*ba62d9d3SAndroid Build Coastguard Worker                                        uint64_t sysMemSize = 0xFFFFFFFFFFFFFFFFULL) = 0;
1398*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmBufferStateless()1399*ba62d9d3SAndroid Build Coastguard Worker     ~CmBufferStateless() {};
1400*ba62d9d3SAndroid Build Coastguard Worker };
1401*ba62d9d3SAndroid Build Coastguard Worker 
1402*ba62d9d3SAndroid Build Coastguard Worker class CmSurface2DUP
1403*ba62d9d3SAndroid Build Coastguard Worker {
1404*ba62d9d3SAndroid Build Coastguard Worker public:
1405*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SurfaceIndex*& pIndex ) = 0;
1406*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMemoryObjectControlSetting(MEMORY_OBJECT_CONTROL option) = 0;
1407*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetProperty(CM_FRAME_TYPE frameType) = 0;
1408*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmSurface2DUP()1409*ba62d9d3SAndroid Build Coastguard Worker     ~CmSurface2DUP(){};
1410*ba62d9d3SAndroid Build Coastguard Worker };
1411*ba62d9d3SAndroid Build Coastguard Worker 
1412*ba62d9d3SAndroid Build Coastguard Worker class CmSurface2DStateless
1413*ba62d9d3SAndroid Build Coastguard Worker {
1414*ba62d9d3SAndroid Build Coastguard Worker public:
1415*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetGfxAddress(uint64_t &gfxAddr) = 0;
1416*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT ReadSurface(unsigned char *pSysMem,
1417*ba62d9d3SAndroid Build Coastguard Worker                                       CmEvent *pEvent,
1418*ba62d9d3SAndroid Build Coastguard Worker                                       uint64_t sysMemSize = 0xFFFFFFFFFFFFFFFFULL) = 0;
1419*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT WriteSurface(const unsigned char *pSysMem,
1420*ba62d9d3SAndroid Build Coastguard Worker                                        CmEvent *pEvent,
1421*ba62d9d3SAndroid Build Coastguard Worker                                        uint64_t sysMemSize = 0xFFFFFFFFFFFFFFFFULL) = 0;
1422*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmSurface2DStateless()1423*ba62d9d3SAndroid Build Coastguard Worker     ~CmSurface2DStateless(){};
1424*ba62d9d3SAndroid Build Coastguard Worker };
1425*ba62d9d3SAndroid Build Coastguard Worker 
1426*ba62d9d3SAndroid Build Coastguard Worker class CmSurface3D
1427*ba62d9d3SAndroid Build Coastguard Worker {
1428*ba62d9d3SAndroid Build Coastguard Worker public:
1429*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SurfaceIndex*& pIndex ) = 0;
1430*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT ReadSurface( unsigned char* pSysMem, CmEvent* pEvent, UINT64 sysMemSize = 0xFFFFFFFFFFFFFFFFULL ) = 0;
1431*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT WriteSurface( const unsigned char* pSysMem, CmEvent* pEvent, UINT64 sysMemSize = 0xFFFFFFFFFFFFFFFFULL ) = 0;
1432*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT InitSurface(const DWORD initValue, CmEvent* pEvent) = 0;
1433*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMemoryObjectControlSetting(MEMORY_OBJECT_CONTROL option) = 0;
1434*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmSurface3D()1435*ba62d9d3SAndroid Build Coastguard Worker    ~CmSurface3D(){};
1436*ba62d9d3SAndroid Build Coastguard Worker };
1437*ba62d9d3SAndroid Build Coastguard Worker 
1438*ba62d9d3SAndroid Build Coastguard Worker class CmSampler
1439*ba62d9d3SAndroid Build Coastguard Worker {
1440*ba62d9d3SAndroid Build Coastguard Worker public:
1441*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT GetIndex( SamplerIndex* & pIndex ) = 0 ;
1442*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmSampler()1443*ba62d9d3SAndroid Build Coastguard Worker     ~CmSampler(){};
1444*ba62d9d3SAndroid Build Coastguard Worker };
1445*ba62d9d3SAndroid Build Coastguard Worker 
1446*ba62d9d3SAndroid Build Coastguard Worker class CmThreadSpace
1447*ba62d9d3SAndroid Build Coastguard Worker {
1448*ba62d9d3SAndroid Build Coastguard Worker public:
1449*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AssociateThread( UINT x, UINT y, CmKernel* pKernel , UINT threadId ) = 0;
1450*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectThreadDependencyPattern ( CM_DEPENDENCY_PATTERN pattern ) = 0;
1451*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT AssociateThreadWithMask( UINT x, UINT y, CmKernel* pKernel , UINT threadId, BYTE nDependencyMask ) = 0;
1452*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetThreadSpaceColorCount( UINT colorCount ) = 0;
1453*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMediaWalkingPattern( CM_WALKING_PATTERN pattern ) = 0;
1454*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT Set26ZIDispatchPattern( CM_26ZI_DISPATCH_PATTERN pattern ) = 0;
1455*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT Set26ZIMacroBlockSize( UINT width, UINT height )  = 0;
1456*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetMediaWalkerGroupSelect(CM_MW_GROUP_SELECT groupSelect) = 0;
1457*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectMediaWalkingParameters( CM_WALKING_PARAMETERS paramaters ) = 0;
1458*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SelectThreadDependencyVectors( CM_DEPENDENCY dependVectors ) = 0;
1459*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetThreadSpaceOrder(UINT threadCount, PCM_THREAD_PARAM pThreadSpaceOrder) = 0;
1460*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmThreadSpace()1461*ba62d9d3SAndroid Build Coastguard Worker     ~CmThreadSpace(){};
1462*ba62d9d3SAndroid Build Coastguard Worker };
1463*ba62d9d3SAndroid Build Coastguard Worker 
1464*ba62d9d3SAndroid Build Coastguard Worker class CmVebox
1465*ba62d9d3SAndroid Build Coastguard Worker {
1466*ba62d9d3SAndroid Build Coastguard Worker public:
1467*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetState(CM_VEBOX_STATE& VeBoxState) = 0;
1468*ba62d9d3SAndroid Build Coastguard Worker 
1469*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetCurFrameInputSurface( CmSurface2D* pSurf ) = 0;
1470*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetCurFrameInputSurfaceControlBits( const WORD ctrlBits ) = 0;
1471*ba62d9d3SAndroid Build Coastguard Worker 
1472*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetPrevFrameInputSurface( CmSurface2D* pSurf ) = 0;
1473*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetPrevFrameInputSurfaceControlBits( const WORD ctrlBits ) = 0;
1474*ba62d9d3SAndroid Build Coastguard Worker 
1475*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSTMMInputSurface( CmSurface2D* pSurf ) = 0;
1476*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSTMMInputSurfaceControlBits( const WORD ctrlBits ) = 0;
1477*ba62d9d3SAndroid Build Coastguard Worker 
1478*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSTMMOutputSurface( CmSurface2D* pSurf ) = 0;
1479*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetSTMMOutputSurfaceControlBits( const WORD ctrlBits ) = 0;
1480*ba62d9d3SAndroid Build Coastguard Worker 
1481*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetDenoisedCurFrameOutputSurface( CmSurface2D* pSurf ) = 0;
1482*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetDenoisedCurOutputSurfaceControlBits( const WORD ctrlBits ) = 0;
1483*ba62d9d3SAndroid Build Coastguard Worker 
1484*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetCurFrameOutputSurface( CmSurface2D* pSurf ) = 0;
1485*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetCurFrameOutputSurfaceControlBits( const WORD ctrlBits ) = 0;
1486*ba62d9d3SAndroid Build Coastguard Worker 
1487*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetPrevFrameOutputSurface( CmSurface2D* pSurf ) = 0;
1488*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetPrevFrameOutputSurfaceControlBits( const WORD ctrlBits ) = 0;
1489*ba62d9d3SAndroid Build Coastguard Worker 
1490*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetStatisticsOutputSurface( CmSurface2D* pSurf ) = 0;
1491*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetStatisticsOutputSurfaceControlBits( const WORD ctrlBits ) = 0;
1492*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetParam(CmBufferUP *pParamBuffer) = 0;
1493*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmVebox()1494*ba62d9d3SAndroid Build Coastguard Worker    ~CmVebox(){};
1495*ba62d9d3SAndroid Build Coastguard Worker };
1496*ba62d9d3SAndroid Build Coastguard Worker 
1497*ba62d9d3SAndroid Build Coastguard Worker class CmQueue
1498*ba62d9d3SAndroid Build Coastguard Worker {
1499*ba62d9d3SAndroid Build Coastguard Worker public:
1500*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT Enqueue( CmTask* pTask, CmEvent* & pEvent, const CmThreadSpace* pTS = nullptr ) = 0;
1501*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT DestroyEvent( CmEvent* & pEvent ) = 0;
1502*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueWithGroup( CmTask* pTask, CmEvent* & pEvent, const CmThreadGroupSpace* pTGS = nullptr )=0;
1503*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyCPUToGPU( CmSurface2D* pSurface, const unsigned char* pSysMem, CmEvent* & pEvent ) = 0;
1504*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyGPUToCPU( CmSurface2D* pSurface, unsigned char* pSysMem, CmEvent* & pEvent ) = 0;
1505*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueInitSurface2D( CmSurface2D* pSurface, const DWORD initValue, CmEvent* &pEvent ) = 0;
1506*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyGPUToGPU( CmSurface2D* pOutputSurface, CmSurface2D* pInputSurface, UINT option, CmEvent* & pEvent ) = 0;
1507*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyCPUToCPU( unsigned char* pDstSysMem, unsigned char* pSrcSysMem, UINT size, UINT option, CmEvent* & pEvent ) = 0;
1508*ba62d9d3SAndroid Build Coastguard Worker 
1509*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyCPUToGPUFullStride( CmSurface2D* pSurface, const unsigned char* pSysMem, const UINT widthStride, const UINT heightStride, const UINT option, CmEvent* & pEvent ) = 0;
1510*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyGPUToCPUFullStride( CmSurface2D* pSurface, unsigned char* pSysMem, const UINT widthStride, const UINT heightStride, const UINT option, CmEvent* & pEvent ) = 0;
1511*ba62d9d3SAndroid Build Coastguard Worker 
1512*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyCPUToGPUFullStrideDup( CmSurface2D* pSurface, const unsigned char* pSysMem, const UINT widthStride, const UINT heightStride, const UINT option, CmEvent* & pEvent ) = 0;
1513*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueCopyGPUToCPUFullStrideDup( CmSurface2D* pSurface, unsigned char* pSysMem, const UINT widthStride, const UINT heightStride, const UINT option, CmEvent* & pEvent ) = 0;
1514*ba62d9d3SAndroid Build Coastguard Worker 
1515*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueWithHints( CmTask* pTask, CmEvent* & pEvent, UINT hints = 0) = 0;
1516*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueVebox( CmVebox* pVebox, CmEvent* & pEvent ) = 0;
1517*ba62d9d3SAndroid Build Coastguard Worker 
1518*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueFast(CmTask *task,
1519*ba62d9d3SAndroid Build Coastguard Worker                               CmEvent *&event,
1520*ba62d9d3SAndroid Build Coastguard Worker                               const CmThreadSpace *threadSpace = nullptr) = 0;
1521*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT DestroyEventFast(CmEvent *&event) = 0;
1522*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT EnqueueWithGroupFast(CmTask *task,
1523*ba62d9d3SAndroid Build Coastguard Worker                                   CmEvent *&event,
1524*ba62d9d3SAndroid Build Coastguard Worker                                   const CmThreadGroupSpace *threadGroupSpace = nullptr) = 0;
1525*ba62d9d3SAndroid Build Coastguard Worker 
1526*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual int32_t EnqueueReadBuffer(CmBuffer* buffer, size_t offset, const unsigned char* sysMem, uint64_t sysMemSize, CmEvent* wait_event, CmEvent*& event, unsigned option) = 0;
1527*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual int32_t EnqueueWriteBuffer(CmBuffer* buffer, size_t offset, const unsigned char* sysMem, uint64_t sysMemSize, CmEvent* wait_event, CmEvent*& event, unsigned option) = 0;
1528*ba62d9d3SAndroid Build Coastguard Worker 
1529*ba62d9d3SAndroid Build Coastguard Worker     CM_RT_API virtual INT SetResidentGroupAndParallelThreadNum(uint32_t residentGroupNum, uint32_t parallelThreadNum) = 0;
1530*ba62d9d3SAndroid Build Coastguard Worker 
1531*ba62d9d3SAndroid Build Coastguard Worker protected:
~CmQueue()1532*ba62d9d3SAndroid Build Coastguard Worker     ~CmQueue(){};
1533*ba62d9d3SAndroid Build Coastguard Worker };
1534*ba62d9d3SAndroid Build Coastguard Worker 
1535*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1536*ba62d9d3SAndroid Build Coastguard Worker // Function pointer types
1537*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1538*ba62d9d3SAndroid Build Coastguard Worker typedef void (CM_CALLBACK *callback_function)(CmEvent*, void *);
1539*ba62d9d3SAndroid Build Coastguard Worker typedef void (*IMG_WALKER_FUNTYPE)(void* img, void* arg);
1540*ba62d9d3SAndroid Build Coastguard Worker 
1541*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1542*ba62d9d3SAndroid Build Coastguard Worker // OS-specific APIs and classes
1543*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1544*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_api_os.h"
1545*ba62d9d3SAndroid Build Coastguard Worker 
1546*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1547*ba62d9d3SAndroid Build Coastguard Worker // Functions declaration
1548*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1549*ba62d9d3SAndroid Build Coastguard Worker EXTERN_C CM_RT_API INT DestroyCmDevice(CmDevice* &device);
1550*ba62d9d3SAndroid Build Coastguard Worker EXTERN_C CM_RT_API INT CMRT_Enqueue(CmQueue* queue, CmTask* task, CmEvent** event, const CmThreadSpace* threadSpace = nullptr);
1551*ba62d9d3SAndroid Build Coastguard Worker EXTERN_C CM_RT_API const char* GetCmErrorString(int errCode);
1552*ba62d9d3SAndroid Build Coastguard Worker 
1553*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1554*ba62d9d3SAndroid Build Coastguard Worker // Platfom specific definitions
1555*ba62d9d3SAndroid Build Coastguard Worker //**********************************************************************
1556*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g8.h"
1557*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g9.h"
1558*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g10.h"
1559*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g11.h"
1560*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g12_tgl.h"
1561*ba62d9d3SAndroid Build Coastguard Worker #include "cm_rt_g12_dg1.h"
1562*ba62d9d3SAndroid Build Coastguard Worker 
1563*ba62d9d3SAndroid Build Coastguard Worker #endif //__CM_RT_H__
1564