mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 15:45:19 +00:00
Convert some glslang files to C (#14248)
* Convert some glslang files to C (OSIndependent files) * Fix some strings that were preventing Unix from being compilable * Remove leftover for Apple in griffin_glslang.cpp - fixes compilation
This commit is contained in:
parent
3d69321c70
commit
454e6f9b07
@ -1868,8 +1868,9 @@ ifeq ($(HAVE_BUILTINGLSLANG), 1)
|
|||||||
$(DEPS_DIR)/glslang/glslang/SPIRV/SpvBuilder.cpp \
|
$(DEPS_DIR)/glslang/glslang/SPIRV/SpvBuilder.cpp \
|
||||||
$(wildcard $(DEPS_DIR)/glslang/glslang/OGLCompilersDLL/*.cpp) \
|
$(wildcard $(DEPS_DIR)/glslang/glslang/OGLCompilersDLL/*.cpp) \
|
||||||
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/*.cpp) \
|
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/*.cpp) \
|
||||||
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/preprocessor/*.cpp) \
|
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/preprocessor/*.cpp)
|
||||||
$(DEPS_DIR)/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM)/ossource.cpp
|
GLSLANG_SOURCES_C += \
|
||||||
|
$(DEPS_DIR)/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM)/ossource.c
|
||||||
|
|
||||||
ifneq ($(findstring Win32,$(OS)),)
|
ifneq ($(findstring Win32,$(OS)),)
|
||||||
DEFINES += -DENABLE_HLSL
|
DEFINES += -DENABLE_HLSL
|
||||||
@ -1891,6 +1892,7 @@ endif
|
|||||||
|
|
||||||
ifeq ($(HAVE_GLSLANG_COMMON), 1)
|
ifeq ($(HAVE_GLSLANG_COMMON), 1)
|
||||||
DEFINES += -DHAVE_GLSLANG
|
DEFINES += -DHAVE_GLSLANG
|
||||||
|
OBJ += $(GLSLANG_SOURCES_C:.c=.o)
|
||||||
OBJ += $(GLSLANG_SOURCES:.cpp=.o)
|
OBJ += $(GLSLANG_SOURCES:.cpp=.o)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
set(SOURCES InitializeDll.cpp InitializeDll.h)
|
|
||||||
|
|
||||||
add_library(OGLCompiler STATIC ${SOURCES})
|
|
||||||
set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
|
|
||||||
set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
source_group("Source" FILES ${SOURCES})
|
|
||||||
endif(WIN32)
|
|
||||||
|
|
||||||
if(ENABLE_GLSLANG_INSTALL)
|
|
||||||
install(TARGETS OGLCompiler
|
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif(ENABLE_GLSLANG_INSTALL)
|
|
@ -39,113 +39,97 @@
|
|||||||
#include "../glslang/Public/ShaderLang.h"
|
#include "../glslang/Public/ShaderLang.h"
|
||||||
#include "../glslang/Include/PoolAlloc.h"
|
#include "../glslang/Include/PoolAlloc.h"
|
||||||
|
|
||||||
namespace glslang {
|
static OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
||||||
|
|
||||||
OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
/* Per-process initialization.
|
||||||
|
* Needs to be called at least once before parsing, etc. is done.
|
||||||
// Per-process initialization.
|
* Will also do thread initialization for the calling thread; other
|
||||||
// Needs to be called at least once before parsing, etc. is done.
|
* threads will need to do that explicitly.
|
||||||
// Will also do thread initialization for the calling thread; other
|
*/
|
||||||
// threads will need to do that explicitly.
|
extern "C" bool InitProcess(void)
|
||||||
bool InitProcess()
|
|
||||||
{
|
{
|
||||||
glslang::GetGlobalLock();
|
GetGlobalLock();
|
||||||
|
|
||||||
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
|
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX)
|
||||||
//
|
{
|
||||||
// Function is re-entrant.
|
/* Function is re-entrant. */
|
||||||
//
|
ReleaseGlobalLock();
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadInitializeIndex = OS_AllocTLSIndex();
|
if ((ThreadInitializeIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
|
||||||
|
{
|
||||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
ReleaseGlobalLock();
|
||||||
assert(0 && "InitProcess(): Failed to allocate TLS area for init flag");
|
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! InitializePoolIndex()) {
|
if (! InitializePoolIndex())
|
||||||
assert(0 && "InitProcess(): Failed to initialize global pool");
|
{
|
||||||
|
ReleaseGlobalLock();
|
||||||
glslang::ReleaseGlobalLock();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! InitThread()) {
|
if (!InitThread())
|
||||||
assert(0 && "InitProcess(): Failed to initialize thread");
|
{
|
||||||
|
ReleaseGlobalLock();
|
||||||
glslang::ReleaseGlobalLock();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
ReleaseGlobalLock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Per-thread scoped initialization.
|
/* Per-thread scoped initialization.
|
||||||
// Must be called at least once by each new thread sharing the
|
* Must be called at least once by each new thread sharing the
|
||||||
// symbol tables, etc., needed to parse.
|
* symbol tables, etc., needed to parse.
|
||||||
bool InitThread()
|
*/
|
||||||
|
extern "C" bool InitThread(void)
|
||||||
{
|
{
|
||||||
//
|
/* This function is re-entrant */
|
||||||
// This function is re-entrant
|
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
||||||
//
|
|
||||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
|
||||||
assert(0 && "InitThread(): Process hasn't been initalised.");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
|
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
|
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1))
|
||||||
assert(0 && "InitThread(): Unable to set init flag.");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
glslang::SetThreadPoolAllocator(nullptr);
|
glslang::SetThreadPoolAllocator(nullptr);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not necessary to call this: InitThread() is reentrant, and the need
|
/* Not necessary to call this: InitThread() is reentrant, and the need
|
||||||
// to do per thread tear down has been removed.
|
* to do per thread tear down has been removed.
|
||||||
//
|
*
|
||||||
// This is kept, with memory management removed, to satisfy any exiting
|
* This is kept, with memory management removed, to satisfy any exiting
|
||||||
// calls to it that rely on it.
|
* calls to it that rely on it.
|
||||||
bool DetachThread()
|
*/
|
||||||
|
extern "C" bool DetachThread(void)
|
||||||
{
|
{
|
||||||
bool success = true;
|
|
||||||
|
|
||||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
//
|
/* Function is re-entrant and this thread may not have been initialized. */
|
||||||
// Function is re-entrant and this thread may not have been initialized.
|
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
|
||||||
//
|
{
|
||||||
if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
|
if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0))
|
||||||
if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
|
return false;
|
||||||
assert(0 && "DetachThread(): Unable to clear init flag.");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not necessary to call this: InitProcess() is reentrant.
|
/* Not necessary to call this: InitProcess() is reentrant.
|
||||||
//
|
*
|
||||||
// This is kept, with memory management removed, to satisfy any exiting
|
* This is kept, with memory management removed, to satisfy any exiting
|
||||||
// calls to it that rely on it.
|
* calls to it that rely on it.
|
||||||
//
|
*
|
||||||
// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
|
* Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
|
||||||
// process-scoped memory tear down.
|
* process-scoped memory tear down.
|
||||||
bool DetachProcess()
|
*/
|
||||||
|
extern "C" bool DetachProcess(void)
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
@ -160,5 +144,3 @@ bool DetachProcess()
|
|||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace glslang
|
|
||||||
|
@ -1,49 +1,53 @@
|
|||||||
//
|
/*
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
* Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// All rights reserved.
|
* All rights reserved.
|
||||||
//
|
*
|
||||||
// Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
// are met:
|
* are met:
|
||||||
//
|
*
|
||||||
// Redistributions of source code must retain the above copyright
|
* Redistributions of source code must retain the above copyright
|
||||||
// notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
//
|
*
|
||||||
// Redistributions in binary form must reproduce the above
|
* Redistributions in binary form must reproduce the above
|
||||||
// copyright notice, this list of conditions and the following
|
* copyright notice, this list of conditions and the following
|
||||||
// disclaimer in the documentation and/or other materials provided
|
* disclaimer in the documentation and/or other materials provided
|
||||||
// with the distribution.
|
* with the distribution.
|
||||||
//
|
*
|
||||||
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
* Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
||||||
// contributors may be used to endorse or promote products derived
|
* contributors may be used to endorse or promote products derived
|
||||||
// from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
//
|
*
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
*/
|
||||||
|
|
||||||
#ifndef __INITIALIZEDLL_H
|
#ifndef __INITIALIZEDLL_H
|
||||||
#define __INITIALIZEDLL_H
|
#define __INITIALIZEDLL_H
|
||||||
|
|
||||||
#include "../glslang/OSDependent/osinclude.h"
|
#include "../glslang/OSDependent/osinclude.h"
|
||||||
|
|
||||||
namespace glslang {
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
bool InitProcess();
|
bool InitProcess(void);
|
||||||
bool InitThread();
|
bool InitThread(void);
|
||||||
bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
|
bool DetachThread(void); /* not called from standalone, perhaps other tools rely on parts of it */
|
||||||
bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
|
bool DetachProcess(void); /* not called from standalone, perhaps other tools rely on parts of it */
|
||||||
|
|
||||||
} // end namespace glslang
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
#endif // __INITIALIZEDLL_H
|
#endif
|
||||||
|
|
||||||
|
#endif /* __INITIALIZEDLL_H */
|
||||||
|
@ -35,11 +35,15 @@
|
|||||||
#ifndef __INITIALIZE_GLOBALS_INCLUDED_
|
#ifndef __INITIALIZE_GLOBALS_INCLUDED_
|
||||||
#define __INITIALIZE_GLOBALS_INCLUDED_
|
#define __INITIALIZE_GLOBALS_INCLUDED_
|
||||||
|
|
||||||
namespace glslang {
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
bool InitializePoolIndex();
|
bool InitializePoolIndex(void);
|
||||||
bool DeinitializePoolIndex();
|
bool DeinitializePoolIndex(void);
|
||||||
|
|
||||||
} // end namespace glslang
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // __INITIALIZE_GLOBALS_INCLUDED_
|
#endif // __INITIALIZE_GLOBALS_INCLUDED_
|
||||||
|
@ -56,7 +56,7 @@ void SetThreadPoolAllocator(TPoolAllocator* poolAllocator)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Process-wide set up of the TLS pool storage.
|
// Process-wide set up of the TLS pool storage.
|
||||||
bool InitializePoolIndex()
|
extern "C" bool InitializePoolIndex(void)
|
||||||
{
|
{
|
||||||
// Allocate a TLS index.
|
// Allocate a TLS index.
|
||||||
if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
|
if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
|
||||||
@ -65,7 +65,7 @@ bool InitializePoolIndex()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeinitializePoolIndex()
|
extern "C" bool DeinitializePoolIndex(void)
|
||||||
{
|
{
|
||||||
if (PoolIndex == OS_INVALID_TLS_INDEX)
|
if (PoolIndex == OS_INVALID_TLS_INDEX)
|
||||||
return false;
|
return false;
|
||||||
|
@ -374,7 +374,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
|
|||||||
TInfoSink infoSink;
|
TInfoSink infoSink;
|
||||||
|
|
||||||
// Make sure only one thread tries to do this at a time
|
// Make sure only one thread tries to do this at a time
|
||||||
glslang::GetGlobalLock();
|
GetGlobalLock();
|
||||||
|
|
||||||
// See if it's already been done for this version/profile combination
|
// See if it's already been done for this version/profile combination
|
||||||
int versionIndex = MapVersionToIndex(version);
|
int versionIndex = MapVersionToIndex(version);
|
||||||
@ -382,8 +382,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
|
|||||||
int profileIndex = MapProfileToIndex(profile);
|
int profileIndex = MapProfileToIndex(profile);
|
||||||
int sourceIndex = MapSourceToIndex(source);
|
int sourceIndex = MapSourceToIndex(source);
|
||||||
if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) {
|
if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) {
|
||||||
glslang::ReleaseGlobalLock();
|
ReleaseGlobalLock();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,7 +432,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
|
|||||||
delete builtInPoolAllocator;
|
delete builtInPoolAllocator;
|
||||||
SetThreadPoolAllocator(&previousAllocator);
|
SetThreadPoolAllocator(&previousAllocator);
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
ReleaseGlobalLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return true if the shader was correctly specified for version/profile/stage.
|
// Return true if the shader was correctly specified for version/profile/stage.
|
||||||
@ -1188,16 +1187,16 @@ static bool CompileDeferred(
|
|||||||
//
|
//
|
||||||
// ShInitialize() should be called exactly once per process, not per thread.
|
// ShInitialize() should be called exactly once per process, not per thread.
|
||||||
//
|
//
|
||||||
int ShInitialize()
|
int ShInitialize(void)
|
||||||
{
|
{
|
||||||
glslang::InitGlobalLock();
|
InitGlobalLock();
|
||||||
|
|
||||||
if (! InitProcess())
|
if (! InitProcess())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
glslang::GetGlobalLock();
|
GetGlobalLock();
|
||||||
++NumberOfClients;
|
++NumberOfClients;
|
||||||
glslang::ReleaseGlobalLock();
|
ReleaseGlobalLock();
|
||||||
|
|
||||||
if (PerProcessGPA == nullptr)
|
if (PerProcessGPA == nullptr)
|
||||||
PerProcessGPA = new TPoolAllocator();
|
PerProcessGPA = new TPoolAllocator();
|
||||||
@ -1213,13 +1212,13 @@ int ShInitialize()
|
|||||||
//
|
//
|
||||||
// Cleanup symbol tables
|
// Cleanup symbol tables
|
||||||
//
|
//
|
||||||
int __fastcall ShFinalize()
|
int __fastcall ShFinalize(void)
|
||||||
{
|
{
|
||||||
glslang::GetGlobalLock();
|
GetGlobalLock();
|
||||||
--NumberOfClients;
|
--NumberOfClients;
|
||||||
assert(NumberOfClients >= 0);
|
assert(NumberOfClients >= 0);
|
||||||
bool finalize = NumberOfClients == 0;
|
bool finalize = NumberOfClients == 0;
|
||||||
glslang::ReleaseGlobalLock();
|
ReleaseGlobalLock();
|
||||||
if (! finalize)
|
if (! finalize)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
add_library(OSDependent STATIC ossource.cpp ../osinclude.h)
|
|
||||||
set_property(TARGET OSDependent PROPERTY FOLDER glslang)
|
|
||||||
set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
||||||
|
|
||||||
if(ENABLE_GLSLANG_INSTALL)
|
|
||||||
install(TARGETS OSDependent
|
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif(ENABLE_GLSLANG_INSTALL)
|
|
108
deps/glslang/glslang/glslang/OSDependent/Unix/ossource.c
vendored
Normal file
108
deps/glslang/glslang/glslang/OSDependent/Unix/ossource.c
vendored
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
*
|
||||||
|
* Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This file contains the Linux-specific functions */
|
||||||
|
#include "../osinclude.h"
|
||||||
|
#include "../../../OGLCompilersDLL/InitializeDll.h"
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <semaphore.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
static pthread_mutex_t glslang_global_lock;
|
||||||
|
|
||||||
|
/* Thread cleanup */
|
||||||
|
|
||||||
|
/* Thread Local Storage Operations */
|
||||||
|
#define TLS_INDEX_TO_PTHREAD_KEY(nIndex) ((pthread_key_t)((uintptr_t)(nIndex) - 1))
|
||||||
|
|
||||||
|
OS_TLSIndex OS_AllocTLSIndex(void)
|
||||||
|
{
|
||||||
|
pthread_key_t pPoolIndex;
|
||||||
|
|
||||||
|
/* Create global pool key. */
|
||||||
|
if ((pthread_key_create(&pPoolIndex, NULL)) != 0)
|
||||||
|
return OS_INVALID_TLS_INDEX;
|
||||||
|
return (OS_TLSIndex)((uintptr_t)pPoolIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
|
||||||
|
{
|
||||||
|
if (nIndex == OS_INVALID_TLS_INDEX)
|
||||||
|
return false;
|
||||||
|
if (pthread_setspecific(TLS_INDEX_TO_PTHREAD_KEY(nIndex), lpvValue) != 0)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *OS_GetTLSValue(OS_TLSIndex nIndex)
|
||||||
|
{
|
||||||
|
/* This function should return 0 if nIndex is invalid. */
|
||||||
|
assert(nIndex != OS_INVALID_TLS_INDEX);
|
||||||
|
return pthread_getspecific(TLS_INDEX_TO_PTHREAD_KEY(nIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
|
||||||
|
{
|
||||||
|
if (nIndex == OS_INVALID_TLS_INDEX)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Delete the global pool key. */
|
||||||
|
if (pthread_key_delete(TLS_INDEX_TO_PTHREAD_KEY(nIndex)) != 0)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitGlobalLock(void)
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t mutexattr;
|
||||||
|
pthread_mutexattr_init(&mutexattr);
|
||||||
|
pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
pthread_mutex_init(&glslang_global_lock, &mutexattr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetGlobalLock(void)
|
||||||
|
{
|
||||||
|
pthread_mutex_lock(&glslang_global_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReleaseGlobalLock(void)
|
||||||
|
{
|
||||||
|
pthread_mutex_unlock(&glslang_global_lock);
|
||||||
|
}
|
@ -1,139 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions
|
|
||||||
// are met:
|
|
||||||
//
|
|
||||||
// Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
//
|
|
||||||
// Redistributions in binary form must reproduce the above
|
|
||||||
// copyright notice, this list of conditions and the following
|
|
||||||
// disclaimer in the documentation and/or other materials provided
|
|
||||||
// with the distribution.
|
|
||||||
//
|
|
||||||
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived
|
|
||||||
// from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
|
|
||||||
//
|
|
||||||
// This file contains the Linux-specific functions
|
|
||||||
//
|
|
||||||
#include "../osinclude.h"
|
|
||||||
#include "../../../OGLCompilersDLL/InitializeDll.h"
|
|
||||||
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <semaphore.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/resource.h>
|
|
||||||
|
|
||||||
namespace glslang {
|
|
||||||
|
|
||||||
//
|
|
||||||
// Thread cleanup
|
|
||||||
//
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wrapper for Linux call to DetachThread. This is required as pthread_cleanup_push() expects
|
|
||||||
// the cleanup routine to return void.
|
|
||||||
//
|
|
||||||
static void DetachThreadLinux(void *)
|
|
||||||
{
|
|
||||||
DetachThread();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Thread Local Storage Operations
|
|
||||||
//
|
|
||||||
inline OS_TLSIndex PthreadKeyToTLSIndex(pthread_key_t key)
|
|
||||||
{
|
|
||||||
return (OS_TLSIndex)((uintptr_t)key + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline pthread_key_t TLSIndexToPthreadKey(OS_TLSIndex nIndex)
|
|
||||||
{
|
|
||||||
return (pthread_key_t)((uintptr_t)nIndex - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
OS_TLSIndex OS_AllocTLSIndex()
|
|
||||||
{
|
|
||||||
pthread_key_t pPoolIndex;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Create global pool key.
|
|
||||||
//
|
|
||||||
if ((pthread_key_create(&pPoolIndex, NULL)) != 0)
|
|
||||||
return OS_INVALID_TLS_INDEX;
|
|
||||||
return PthreadKeyToTLSIndex(pPoolIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
|
|
||||||
{
|
|
||||||
if (nIndex == OS_INVALID_TLS_INDEX)
|
|
||||||
return false;
|
|
||||||
if (pthread_setspecific(TLSIndexToPthreadKey(nIndex), lpvValue) != 0)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void* OS_GetTLSValue(OS_TLSIndex nIndex)
|
|
||||||
{
|
|
||||||
// This function should return 0 if nIndex is invalid.
|
|
||||||
assert(nIndex != OS_INVALID_TLS_INDEX);
|
|
||||||
return pthread_getspecific(TLSIndexToPthreadKey(nIndex));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
|
|
||||||
{
|
|
||||||
if (nIndex == OS_INVALID_TLS_INDEX)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Delete the global pool key.
|
|
||||||
if (pthread_key_delete(TLSIndexToPthreadKey(nIndex)) != 0)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
pthread_mutex_t gMutex;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InitGlobalLock()
|
|
||||||
{
|
|
||||||
pthread_mutexattr_t mutexattr;
|
|
||||||
pthread_mutexattr_init(&mutexattr);
|
|
||||||
pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE);
|
|
||||||
pthread_mutex_init(&gMutex, &mutexattr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GetGlobalLock()
|
|
||||||
{
|
|
||||||
pthread_mutex_lock(&gMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReleaseGlobalLock()
|
|
||||||
{
|
|
||||||
pthread_mutex_unlock(&gMutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // end namespace glslang
|
|
@ -1,20 +0,0 @@
|
|||||||
set(SOURCES ossource.cpp ../osinclude.h)
|
|
||||||
|
|
||||||
add_library(OSDependent STATIC ${SOURCES})
|
|
||||||
set_property(TARGET OSDependent PROPERTY FOLDER glslang)
|
|
||||||
set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
||||||
|
|
||||||
# MinGW GCC complains about function pointer casts to void*.
|
|
||||||
# Turn that off with -fpermissive.
|
|
||||||
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
|
||||||
target_compile_options(OSDependent PRIVATE -fpermissive)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
source_group("Source" FILES ${SOURCES})
|
|
||||||
endif(WIN32)
|
|
||||||
|
|
||||||
if(ENABLE_GLSLANG_INSTALL)
|
|
||||||
install(TARGETS OSDependent
|
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif(ENABLE_GLSLANG_INSTALL)
|
|
@ -38,82 +38,60 @@
|
|||||||
#define STRICT
|
#define STRICT
|
||||||
#define VC_EXTRALEAN 1
|
#define VC_EXTRALEAN 1
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <cassert>
|
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <psapi.h>
|
#include <psapi.h>
|
||||||
#include <cstdio>
|
#include <stdio.h>
|
||||||
#include <cstdint>
|
#include <stdint.h>
|
||||||
|
|
||||||
//
|
static HANDLE glslang_global_lock;
|
||||||
// This file contains the Window-OS-specific functions
|
|
||||||
//
|
|
||||||
|
|
||||||
#if !(defined(_WIN32) || defined(_WIN64))
|
/* This file contains the Window-OS-specific functions */
|
||||||
#error Trying to build a windows specific file in a non windows build.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace glslang {
|
#define TO_NATIVE_TLS_INDEX(nIndex) ((DWORD)((uintptr_t)(nIndex) - 1))
|
||||||
|
|
||||||
inline OS_TLSIndex ToGenericTLSIndex (DWORD handle)
|
/* Thread Local Storage Operations */
|
||||||
{
|
OS_TLSIndex OS_AllocTLSIndex(void)
|
||||||
return (OS_TLSIndex)((uintptr_t)handle + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex)
|
|
||||||
{
|
|
||||||
return (DWORD)((uintptr_t)nIndex - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Thread Local Storage Operations
|
|
||||||
//
|
|
||||||
OS_TLSIndex OS_AllocTLSIndex()
|
|
||||||
{
|
{
|
||||||
DWORD dwIndex = TlsAlloc();
|
DWORD dwIndex = TlsAlloc();
|
||||||
if (dwIndex == TLS_OUT_OF_INDEXES)
|
if (dwIndex == TLS_OUT_OF_INDEXES)
|
||||||
return OS_INVALID_TLS_INDEX;
|
return OS_INVALID_TLS_INDEX;
|
||||||
return ToGenericTLSIndex(dwIndex);
|
return (OS_TLSIndex)((uintptr_t)dwIndex + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
|
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
|
||||||
{
|
{
|
||||||
if (nIndex == OS_INVALID_TLS_INDEX)
|
if (nIndex == OS_INVALID_TLS_INDEX)
|
||||||
return false;
|
return false;
|
||||||
if (!TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
|
if (!TlsSetValue(TO_NATIVE_TLS_INDEX(nIndex), lpvValue))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* OS_GetTLSValue(OS_TLSIndex nIndex)
|
void *OS_GetTLSValue(OS_TLSIndex nIndex)
|
||||||
{
|
{
|
||||||
assert(nIndex != OS_INVALID_TLS_INDEX);
|
return TlsGetValue(TO_NATIVE_TLS_INDEX(nIndex));
|
||||||
return TlsGetValue(ToNativeTLSIndex(nIndex));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
|
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
|
||||||
{
|
{
|
||||||
if (nIndex == OS_INVALID_TLS_INDEX)
|
if (nIndex == OS_INVALID_TLS_INDEX)
|
||||||
return false;
|
return false;
|
||||||
if (!TlsFree(ToNativeTLSIndex(nIndex)))
|
if (!TlsFree(TO_NATIVE_TLS_INDEX(nIndex)))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE GlobalLock;
|
void InitGlobalLock(void)
|
||||||
|
|
||||||
void InitGlobalLock()
|
|
||||||
{
|
{
|
||||||
GlobalLock = CreateMutex(0, false, 0);
|
glslang_global_lock = CreateMutex(0, false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetGlobalLock()
|
void GetGlobalLock(void)
|
||||||
{
|
{
|
||||||
WaitForSingleObject(GlobalLock, INFINITE);
|
WaitForSingleObject(glslang_global_lock, INFINITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReleaseGlobalLock()
|
void ReleaseGlobalLock(void)
|
||||||
{
|
{
|
||||||
ReleaseMutex(GlobalLock);
|
ReleaseMutex(glslang_global_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace glslang
|
|
@ -1,57 +1,61 @@
|
|||||||
//
|
/*
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
* Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// All rights reserved.
|
* All rights reserved.
|
||||||
//
|
*
|
||||||
// Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
// are met:
|
* are met:
|
||||||
//
|
*
|
||||||
// Redistributions of source code must retain the above copyright
|
* Redistributions of source code must retain the above copyright
|
||||||
// notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
//
|
*
|
||||||
// Redistributions in binary form must reproduce the above
|
* Redistributions in binary form must reproduce the above
|
||||||
// copyright notice, this list of conditions and the following
|
* copyright notice, this list of conditions and the following
|
||||||
// disclaimer in the documentation and/or other materials provided
|
* disclaimer in the documentation and/or other materials provided
|
||||||
// with the distribution.
|
* with the distribution.
|
||||||
//
|
*
|
||||||
// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
* Neither the name of 3Dlabs Inc. Ltd. nor the names of its
|
||||||
// contributors may be used to endorse or promote products derived
|
* contributors may be used to endorse or promote products derived
|
||||||
// from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
//
|
*
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
*/
|
||||||
|
|
||||||
#ifndef __OSINCLUDE_H
|
#ifndef __OSINCLUDE_H
|
||||||
#define __OSINCLUDE_H
|
#define __OSINCLUDE_H
|
||||||
|
|
||||||
namespace glslang {
|
#include <boolean.h>
|
||||||
|
|
||||||
//
|
#ifdef __cplusplus
|
||||||
// Thread Local Storage Operations
|
extern "C" {
|
||||||
//
|
#endif
|
||||||
typedef void* OS_TLSIndex;
|
|
||||||
|
/* Thread Local Storage Operations */
|
||||||
|
typedef void *OS_TLSIndex;
|
||||||
#define OS_INVALID_TLS_INDEX ((void*)0)
|
#define OS_INVALID_TLS_INDEX ((void*)0)
|
||||||
|
|
||||||
OS_TLSIndex OS_AllocTLSIndex();
|
OS_TLSIndex OS_AllocTLSIndex(void);
|
||||||
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue);
|
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue);
|
||||||
bool OS_FreeTLSIndex(OS_TLSIndex nIndex);
|
bool OS_FreeTLSIndex(OS_TLSIndex nIndex);
|
||||||
void* OS_GetTLSValue(OS_TLSIndex nIndex);
|
void* OS_GetTLSValue(OS_TLSIndex nIndex);
|
||||||
|
|
||||||
void InitGlobalLock();
|
void InitGlobalLock(void);
|
||||||
void GetGlobalLock();
|
void GetGlobalLock(void);
|
||||||
void ReleaseGlobalLock();
|
void ReleaseGlobalLock(void);
|
||||||
|
|
||||||
} // end namespace glslang
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // __OSINCLUDE_H
|
#endif /* __OSINCLUDE_H */
|
||||||
|
@ -1711,3 +1711,18 @@ ANDROID PLAY FEATURE DELIVERY
|
|||||||
#if defined(ANDROID)
|
#if defined(ANDROID)
|
||||||
#include "../play_feature_delivery/play_feature_delivery.c"
|
#include "../play_feature_delivery/play_feature_delivery.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*============================================================
|
||||||
|
GLSLANG
|
||||||
|
============================================================ */
|
||||||
|
#ifdef WANT_GLSLANG
|
||||||
|
|
||||||
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
|
#include "../deps/glslang/glslang/glslang/OSDependent/Unix/ossource.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include "../deps/glslang/glslang/glslang/OSDependent/Windows/ossource.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -105,16 +105,6 @@ VIDEO DRIVER
|
|||||||
/*============================================================
|
/*============================================================
|
||||||
FONTS
|
FONTS
|
||||||
============================================================ */
|
============================================================ */
|
||||||
#ifdef WANT_GLSLANG
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include "../deps/glslang/glslang/glslang/OSDependent/Windows/ossource.cpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
#include "../deps/glslang/glslang/glslang/OSDependent/Unix/ossource.cpp"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_DISCORD)
|
#if defined(HAVE_DISCORD)
|
||||||
#include "../deps/discord-rpc/src/discord_rpc.cpp"
|
#include "../deps/discord-rpc/src/discord_rpc.cpp"
|
||||||
#include "../deps/discord-rpc/src/rpc_connection.cpp"
|
#include "../deps/discord-rpc/src/rpc_connection.cpp"
|
||||||
|
@ -42,10 +42,6 @@
|
|||||||
#include "../deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp"
|
#include "../deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp"
|
||||||
#include "../deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp"
|
#include "../deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp"
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include "../deps/glslang/glslang/glslang/OSDependent/Unix/ossource.cpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ENABLE_HLSL)
|
#if defined(ENABLE_HLSL)
|
||||||
#include "../deps/glslang/glslang/hlsl/hlslAttributes.cpp"
|
#include "../deps/glslang/glslang/hlsl/hlslAttributes.cpp"
|
||||||
#include "../deps/glslang/glslang/hlsl/hlslGrammar.cpp"
|
#include "../deps/glslang/glslang/hlsl/hlslGrammar.cpp"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user