1 #ifndef _G_OBJSWENG_NVOC_H_ 2 #define _G_OBJSWENG_NVOC_H_ 3 #include "nvoc/runtime.h" 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* 10 * SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 11 * SPDX-License-Identifier: MIT 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a 14 * copy of this software and associated documentation files (the "Software"), 15 * to deal in the Software without restriction, including without limitation 16 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 * and/or sell copies of the Software, and to permit persons to whom the 18 * Software is furnished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included in 21 * all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 26 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 28 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 29 * DEALINGS IN THE SOFTWARE. 30 */ 31 32 /***************************** Modular includes *****************************\ 33 * * 34 * OBJSWENG implements the 'Software Engine' from the GPU host * 35 * perspective. That is the software component that emulates a GPU host * 36 * engine by implementing SW methods in the driver. * 37 * * 38 ****************************************************************************/ 39 40 #include "g_objsweng_nvoc.h" 41 42 #ifndef _OBJSWENG_H_ 43 #define _OBJSWENG_H_ 44 45 #include "core/core.h" 46 #include "gpu/eng_state.h" 47 48 typedef struct OBJSWENG *POBJSWENG; 49 50 #ifdef NVOC_OBJSWENG_H_PRIVATE_ACCESS_ALLOWED 51 #define PRIVATE_FIELD(x) x 52 #else 53 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x) 54 #endif 55 struct OBJSWENG { 56 const struct NVOC_RTTI *__nvoc_rtti; 57 struct OBJENGSTATE __nvoc_base_OBJENGSTATE; 58 struct Object *__nvoc_pbase_Object; 59 struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE; 60 struct OBJSWENG *__nvoc_pbase_OBJSWENG; 61 NV_STATUS (*__swengConstructEngine__)(struct OBJGPU *, struct OBJSWENG *, ENGDESCRIPTOR); 62 NV_STATUS (*__swengStateLoad__)(POBJGPU, struct OBJSWENG *, NvU32); 63 NV_STATUS (*__swengStateUnload__)(POBJGPU, struct OBJSWENG *, NvU32); 64 NV_STATUS (*__swengStateInitLocked__)(POBJGPU, struct OBJSWENG *); 65 NV_STATUS (*__swengStatePreLoad__)(POBJGPU, struct OBJSWENG *, NvU32); 66 NV_STATUS (*__swengStatePostUnload__)(POBJGPU, struct OBJSWENG *, NvU32); 67 void (*__swengStateDestroy__)(POBJGPU, struct OBJSWENG *); 68 NV_STATUS (*__swengStatePreUnload__)(POBJGPU, struct OBJSWENG *, NvU32); 69 NV_STATUS (*__swengStateInitUnlocked__)(POBJGPU, struct OBJSWENG *); 70 void (*__swengInitMissing__)(POBJGPU, struct OBJSWENG *); 71 NV_STATUS (*__swengStatePreInitLocked__)(POBJGPU, struct OBJSWENG *); 72 NV_STATUS (*__swengStatePreInitUnlocked__)(POBJGPU, struct OBJSWENG *); 73 NV_STATUS (*__swengStatePostLoad__)(POBJGPU, struct OBJSWENG *, NvU32); 74 NvBool (*__swengIsPresent__)(POBJGPU, struct OBJSWENG *); 75 }; 76 77 #ifndef __NVOC_CLASS_OBJSWENG_TYPEDEF__ 78 #define __NVOC_CLASS_OBJSWENG_TYPEDEF__ 79 typedef struct OBJSWENG OBJSWENG; 80 #endif /* __NVOC_CLASS_OBJSWENG_TYPEDEF__ */ 81 82 #ifndef __nvoc_class_id_OBJSWENG 83 #define __nvoc_class_id_OBJSWENG 0x95a6f5 84 #endif /* __nvoc_class_id_OBJSWENG */ 85 86 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJSWENG; 87 88 #define __staticCast_OBJSWENG(pThis) \ 89 ((pThis)->__nvoc_pbase_OBJSWENG) 90 91 #ifdef __nvoc_objsweng_h_disabled 92 #define __dynamicCast_OBJSWENG(pThis) ((OBJSWENG*)NULL) 93 #else //__nvoc_objsweng_h_disabled 94 #define __dynamicCast_OBJSWENG(pThis) \ 95 ((OBJSWENG*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJSWENG))) 96 #endif //__nvoc_objsweng_h_disabled 97 98 #define PDB_PROP_SWENG_IS_MISSING_BASE_CAST __nvoc_base_OBJENGSTATE. 99 #define PDB_PROP_SWENG_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING 100 101 NV_STATUS __nvoc_objCreateDynamic_OBJSWENG(OBJSWENG**, Dynamic*, NvU32, va_list); 102 103 NV_STATUS __nvoc_objCreate_OBJSWENG(OBJSWENG**, Dynamic*, NvU32); 104 #define __objCreate_OBJSWENG(ppNewObj, pParent, createFlags) \ 105 __nvoc_objCreate_OBJSWENG((ppNewObj), staticCast((pParent), Dynamic), (createFlags)) 106 107 #define swengConstructEngine(pGpu, pSweng, arg0) swengConstructEngine_DISPATCH(pGpu, pSweng, arg0) 108 #define swengStateLoad(pGpu, pEngstate, arg0) swengStateLoad_DISPATCH(pGpu, pEngstate, arg0) 109 #define swengStateUnload(pGpu, pEngstate, arg0) swengStateUnload_DISPATCH(pGpu, pEngstate, arg0) 110 #define swengStateInitLocked(pGpu, pEngstate) swengStateInitLocked_DISPATCH(pGpu, pEngstate) 111 #define swengStatePreLoad(pGpu, pEngstate, arg0) swengStatePreLoad_DISPATCH(pGpu, pEngstate, arg0) 112 #define swengStatePostUnload(pGpu, pEngstate, arg0) swengStatePostUnload_DISPATCH(pGpu, pEngstate, arg0) 113 #define swengStateDestroy(pGpu, pEngstate) swengStateDestroy_DISPATCH(pGpu, pEngstate) 114 #define swengStatePreUnload(pGpu, pEngstate, arg0) swengStatePreUnload_DISPATCH(pGpu, pEngstate, arg0) 115 #define swengStateInitUnlocked(pGpu, pEngstate) swengStateInitUnlocked_DISPATCH(pGpu, pEngstate) 116 #define swengInitMissing(pGpu, pEngstate) swengInitMissing_DISPATCH(pGpu, pEngstate) 117 #define swengStatePreInitLocked(pGpu, pEngstate) swengStatePreInitLocked_DISPATCH(pGpu, pEngstate) 118 #define swengStatePreInitUnlocked(pGpu, pEngstate) swengStatePreInitUnlocked_DISPATCH(pGpu, pEngstate) 119 #define swengStatePostLoad(pGpu, pEngstate, arg0) swengStatePostLoad_DISPATCH(pGpu, pEngstate, arg0) 120 #define swengIsPresent(pGpu, pEngstate) swengIsPresent_DISPATCH(pGpu, pEngstate) 121 NV_STATUS swengConstructEngine_IMPL(struct OBJGPU *pGpu, struct OBJSWENG *pSweng, ENGDESCRIPTOR arg0); 122 123 static inline NV_STATUS swengConstructEngine_DISPATCH(struct OBJGPU *pGpu, struct OBJSWENG *pSweng, ENGDESCRIPTOR arg0) { 124 return pSweng->__swengConstructEngine__(pGpu, pSweng, arg0); 125 } 126 127 static inline NV_STATUS swengStateLoad_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 128 return pEngstate->__swengStateLoad__(pGpu, pEngstate, arg0); 129 } 130 131 static inline NV_STATUS swengStateUnload_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 132 return pEngstate->__swengStateUnload__(pGpu, pEngstate, arg0); 133 } 134 135 static inline NV_STATUS swengStateInitLocked_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 136 return pEngstate->__swengStateInitLocked__(pGpu, pEngstate); 137 } 138 139 static inline NV_STATUS swengStatePreLoad_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 140 return pEngstate->__swengStatePreLoad__(pGpu, pEngstate, arg0); 141 } 142 143 static inline NV_STATUS swengStatePostUnload_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 144 return pEngstate->__swengStatePostUnload__(pGpu, pEngstate, arg0); 145 } 146 147 static inline void swengStateDestroy_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 148 pEngstate->__swengStateDestroy__(pGpu, pEngstate); 149 } 150 151 static inline NV_STATUS swengStatePreUnload_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 152 return pEngstate->__swengStatePreUnload__(pGpu, pEngstate, arg0); 153 } 154 155 static inline NV_STATUS swengStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 156 return pEngstate->__swengStateInitUnlocked__(pGpu, pEngstate); 157 } 158 159 static inline void swengInitMissing_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 160 pEngstate->__swengInitMissing__(pGpu, pEngstate); 161 } 162 163 static inline NV_STATUS swengStatePreInitLocked_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 164 return pEngstate->__swengStatePreInitLocked__(pGpu, pEngstate); 165 } 166 167 static inline NV_STATUS swengStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 168 return pEngstate->__swengStatePreInitUnlocked__(pGpu, pEngstate); 169 } 170 171 static inline NV_STATUS swengStatePostLoad_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate, NvU32 arg0) { 172 return pEngstate->__swengStatePostLoad__(pGpu, pEngstate, arg0); 173 } 174 175 static inline NvBool swengIsPresent_DISPATCH(POBJGPU pGpu, struct OBJSWENG *pEngstate) { 176 return pEngstate->__swengIsPresent__(pGpu, pEngstate); 177 } 178 179 #undef PRIVATE_FIELD 180 181 182 #endif // _OBJSWENG_H_ 183 184 #ifdef __cplusplus 185 } // extern "C" 186 #endif 187 #endif // _G_OBJSWENG_NVOC_H_ 188