Add runtime to CtsDeqpTestCases
[platform/upstream/VK-GL-CTS.git] / external / glslang / osinclude.cpp
1 /*-------------------------------------------------------------------------
2  * dEQP glslang integration
3  * ------------------------
4  *
5  * Copyright 2015 The Android Open Source Project
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  *//*!
20  * \file
21  * \brief glslang OS interface.
22  *//*--------------------------------------------------------------------*/
23
24 #include "osinclude.h"
25
26 #include "deThread.h"
27 #include "deThreadLocal.h"
28
29 namespace glslang
30 {
31
32 DE_STATIC_ASSERT(sizeof(deThreadLocal)  == sizeof(OS_TLSIndex));
33 DE_STATIC_ASSERT(sizeof(deThread)               == sizeof(void*));
34
35 // Thread-local
36
37 OS_TLSIndex OS_AllocTLSIndex (void)
38 {
39         return (OS_TLSIndex)deThreadLocal_create();
40 }
41
42 bool OS_SetTLSValue (OS_TLSIndex nIndex, void* lpvValue)
43 {
44         deThreadLocal_set((deThreadLocal)nIndex, lpvValue);
45         return true;
46 }
47
48 bool OS_FreeTLSIndex (OS_TLSIndex nIndex)
49 {
50         deThreadLocal_destroy((deThreadLocal)nIndex);
51         return true;
52 }
53
54 void* OS_GetTLSValue (OS_TLSIndex nIndex)
55 {
56         return deThreadLocal_get((deThreadLocal)nIndex);
57 }
58
59 // Global lock - not used
60
61 void InitGlobalLock (void)
62 {
63 }
64
65 void GetGlobalLock (void)
66 {
67 }
68
69 void ReleaseGlobalLock (void)
70 {
71 }
72
73 // Threading
74
75 DE_STATIC_ASSERT(sizeof(void*) >= sizeof(deThread));
76
77 static void EnterGenericThread (void* entry)
78 {
79         ((TThreadEntrypoint)entry)(DE_NULL);
80 }
81
82 void* OS_CreateThread (TThreadEntrypoint entry)
83 {
84         return (void*)(deUintptr)deThread_create(EnterGenericThread, (void*)entry, DE_NULL);
85 }
86
87 void OS_WaitForAllThreads (void* threads, int numThreads)
88 {
89         for (int ndx = 0; ndx < numThreads; ndx++)
90         {
91                 const deThread thread = (deThread)(deUintptr)((void**)threads)[ndx];
92                 deThread_join(thread);
93                 deThread_destroy(thread);
94         }
95 }
96
97 void OS_Sleep (int milliseconds)
98 {
99         deSleep(milliseconds);
100 }
101
102 void OS_DumpMemoryCounters (void)
103 {
104         // Not used
105 }
106
107 } // glslang