xref: /aosp_15_r20/external/gmmlib/Source/GmmLib/GlobalInfo/GmmLibDllMain.cpp (revision 35ffd701415c9e32e53136d61a677a8d0a8fc4a5)
1*35ffd701SAndroid Build Coastguard Worker /*==============================================================================
2*35ffd701SAndroid Build Coastguard Worker Copyright(c) 2017 Intel Corporation
3*35ffd701SAndroid Build Coastguard Worker 
4*35ffd701SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining a
5*35ffd701SAndroid Build Coastguard Worker copy of this software and associated documentation files(the "Software"),
6*35ffd701SAndroid Build Coastguard Worker to deal in the Software without restriction, including without limitation
7*35ffd701SAndroid Build Coastguard Worker the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*35ffd701SAndroid Build Coastguard Worker and / or sell copies of the Software, and to permit persons to whom the
9*35ffd701SAndroid Build Coastguard Worker Software is furnished to do so, subject to the following conditions:
10*35ffd701SAndroid Build Coastguard Worker 
11*35ffd701SAndroid Build Coastguard Worker The above copyright notice and this permission notice shall be included
12*35ffd701SAndroid Build Coastguard Worker in all copies or substantial portions of the Software.
13*35ffd701SAndroid Build Coastguard Worker 
14*35ffd701SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15*35ffd701SAndroid Build Coastguard Worker OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*35ffd701SAndroid Build Coastguard Worker FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*35ffd701SAndroid Build Coastguard Worker THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18*35ffd701SAndroid Build Coastguard Worker OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19*35ffd701SAndroid Build Coastguard Worker ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20*35ffd701SAndroid Build Coastguard Worker OTHER DEALINGS IN THE SOFTWARE.
21*35ffd701SAndroid Build Coastguard Worker ============================================================================*/
22*35ffd701SAndroid Build Coastguard Worker 
23*35ffd701SAndroid Build Coastguard Worker 
24*35ffd701SAndroid Build Coastguard Worker #include <stdlib.h>
25*35ffd701SAndroid Build Coastguard Worker #ifdef _WIN32
26*35ffd701SAndroid Build Coastguard Worker #include <windows.h>
27*35ffd701SAndroid Build Coastguard Worker #endif
28*35ffd701SAndroid Build Coastguard Worker #include <iostream>
29*35ffd701SAndroid Build Coastguard Worker #include <stddef.h>
30*35ffd701SAndroid Build Coastguard Worker 
31*35ffd701SAndroid Build Coastguard Worker #ifdef GMM_LIB_DLL
32*35ffd701SAndroid Build Coastguard Worker 
33*35ffd701SAndroid Build Coastguard Worker #include "Internal/Common/GmmLibInc.h"
34*35ffd701SAndroid Build Coastguard Worker #include "External/Common/GmmClientContext.h"
35*35ffd701SAndroid Build Coastguard Worker #include "External/Common/GmmLibDll.h"
36*35ffd701SAndroid Build Coastguard Worker 
37*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
38*35ffd701SAndroid Build Coastguard Worker // First Call to GMM Lib DLL/so to initialize singleton global context
39*35ffd701SAndroid Build Coastguard Worker // and create client context
40*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
InitializeGmm(GMM_INIT_IN_ARGS * pInArgs,GMM_INIT_OUT_ARGS * pOutArgs)41*35ffd701SAndroid Build Coastguard Worker extern "C" GMM_LIB_API GMM_STATUS GMM_STDCALL InitializeGmm(GMM_INIT_IN_ARGS *pInArgs,
42*35ffd701SAndroid Build Coastguard Worker 		                                              GMM_INIT_OUT_ARGS *pOutArgs)
43*35ffd701SAndroid Build Coastguard Worker {
44*35ffd701SAndroid Build Coastguard Worker     GMM_STATUS Status = GMM_ERROR;
45*35ffd701SAndroid Build Coastguard Worker 
46*35ffd701SAndroid Build Coastguard Worker     if(pInArgs && pOutArgs)
47*35ffd701SAndroid Build Coastguard Worker     {
48*35ffd701SAndroid Build Coastguard Worker #if GMM_LIB_DLL_MA
49*35ffd701SAndroid Build Coastguard Worker         ADAPTER_BDF stAdapterBDF;
50*35ffd701SAndroid Build Coastguard Worker 
51*35ffd701SAndroid Build Coastguard Worker #ifdef _WIN32
52*35ffd701SAndroid Build Coastguard Worker         stAdapterBDF = pInArgs->stAdapterBDF;
53*35ffd701SAndroid Build Coastguard Worker #else
54*35ffd701SAndroid Build Coastguard Worker         stAdapterBDF.Data = pInArgs->FileDescriptor;
55*35ffd701SAndroid Build Coastguard Worker #endif
56*35ffd701SAndroid Build Coastguard Worker 
57*35ffd701SAndroid Build Coastguard Worker         Status = GmmCreateLibContext(pInArgs->Platform, pInArgs->pSkuTable, pInArgs->pWaTable,
58*35ffd701SAndroid Build Coastguard Worker                                      pInArgs->pGtSysInfo, stAdapterBDF, pInArgs->ClientType);
59*35ffd701SAndroid Build Coastguard Worker 
60*35ffd701SAndroid Build Coastguard Worker         if(Status == GMM_SUCCESS)
61*35ffd701SAndroid Build Coastguard Worker         {
62*35ffd701SAndroid Build Coastguard Worker             pOutArgs->pGmmClientContext = GmmCreateClientContextForAdapter(pInArgs->ClientType,
63*35ffd701SAndroid Build Coastguard Worker 			                                                          stAdapterBDF);
64*35ffd701SAndroid Build Coastguard Worker         }
65*35ffd701SAndroid Build Coastguard Worker 
66*35ffd701SAndroid Build Coastguard Worker #endif
67*35ffd701SAndroid Build Coastguard Worker     }
68*35ffd701SAndroid Build Coastguard Worker 
69*35ffd701SAndroid Build Coastguard Worker     return Status;
70*35ffd701SAndroid Build Coastguard Worker }
71*35ffd701SAndroid Build Coastguard Worker 
72*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
73*35ffd701SAndroid Build Coastguard Worker /// Destroys singleton global context and client context
74*35ffd701SAndroid Build Coastguard Worker ///
75*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
GmmAdapterDestroy(GMM_INIT_OUT_ARGS * pInArgs)76*35ffd701SAndroid Build Coastguard Worker extern "C" GMM_LIB_API void GMM_STDCALL GmmAdapterDestroy(GMM_INIT_OUT_ARGS *pInArgs)
77*35ffd701SAndroid Build Coastguard Worker {
78*35ffd701SAndroid Build Coastguard Worker     if(pInArgs && pInArgs->pGmmClientContext)
79*35ffd701SAndroid Build Coastguard Worker     {
80*35ffd701SAndroid Build Coastguard Worker #if GMM_LIB_DLL_MA
81*35ffd701SAndroid Build Coastguard Worker     ADAPTER_BDF stAdapterBDF = pInArgs->pGmmClientContext->GetLibContext()->sBdf;
82*35ffd701SAndroid Build Coastguard Worker 
83*35ffd701SAndroid Build Coastguard Worker         GmmDeleteClientContext(pInArgs->pGmmClientContext);
84*35ffd701SAndroid Build Coastguard Worker         GmmLibContextFree(stAdapterBDF);
85*35ffd701SAndroid Build Coastguard Worker #endif
86*35ffd701SAndroid Build Coastguard Worker     }
87*35ffd701SAndroid Build Coastguard Worker }
88*35ffd701SAndroid Build Coastguard Worker #endif // GMM_LIB_DLL
89