Patch glslang to avoid build errors on certain platforms
This commit is contained in:
parent
b9919fd87d
commit
5020a545d1
4 changed files with 62 additions and 39 deletions
1
thirdparty/README.md
vendored
1
thirdparty/README.md
vendored
|
@ -195,6 +195,7 @@ Files extracted from upstream source:
|
|||
to `glslang/build_info.h`
|
||||
- `LICENSE.txt`
|
||||
- Unnecessary files like `CMakeLists.txt`, `*.m4` and `updateGrammar` removed.
|
||||
- Patch in `patches/unused_cleanup.diff` must be applied.
|
||||
|
||||
|
||||
## graphite
|
||||
|
|
|
@ -65,43 +65,6 @@ static void DetachThreadLinux(void *)
|
|||
DetachThread();
|
||||
}
|
||||
|
||||
//
|
||||
// Registers cleanup handler, sets cancel type and state, and executes the thread specific
|
||||
// cleanup handler. This function will be called in the Standalone.cpp for regression
|
||||
// testing. When OpenGL applications are run with the driver code, Linux OS does the
|
||||
// thread cleanup.
|
||||
//
|
||||
void OS_CleanupThreadData(void)
|
||||
{
|
||||
#if defined(__ANDROID__) || defined(__Fuchsia__)
|
||||
DetachThreadLinux(NULL);
|
||||
#else
|
||||
int old_cancel_state, old_cancel_type;
|
||||
void *cleanupArg = NULL;
|
||||
|
||||
//
|
||||
// Set thread cancel state and push cleanup handler.
|
||||
//
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancel_state);
|
||||
pthread_cleanup_push(DetachThreadLinux, (void *) cleanupArg);
|
||||
|
||||
//
|
||||
// Put the thread in deferred cancellation mode.
|
||||
//
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &old_cancel_type);
|
||||
|
||||
//
|
||||
// Pop cleanup handler and execute it prior to unregistering the cleanup handler.
|
||||
//
|
||||
pthread_cleanup_pop(1);
|
||||
|
||||
//
|
||||
// Restore the thread's previous cancellation mode.
|
||||
//
|
||||
pthread_setcanceltype(old_cancel_state, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
// Thread Local Storage Operations
|
||||
//
|
||||
|
|
|
@ -54,8 +54,6 @@ void ReleaseGlobalLock();
|
|||
|
||||
typedef unsigned int (*TThreadEntrypoint)(void*);
|
||||
|
||||
void OS_CleanupThreadData(void);
|
||||
|
||||
void OS_DumpMemoryCounters();
|
||||
|
||||
} // end namespace glslang
|
||||
|
|
61
thirdparty/glslang/patches/unused_cleanup.diff
vendored
Normal file
61
thirdparty/glslang/patches/unused_cleanup.diff
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
diff --git a/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp b/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
|
||||
index 81da99c2c4..1cbd616e98 100644
|
||||
--- a/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
|
||||
+++ b/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
|
||||
@@ -65,43 +65,6 @@ static void DetachThreadLinux(void *)
|
||||
DetachThread();
|
||||
}
|
||||
|
||||
-//
|
||||
-// Registers cleanup handler, sets cancel type and state, and executes the thread specific
|
||||
-// cleanup handler. This function will be called in the Standalone.cpp for regression
|
||||
-// testing. When OpenGL applications are run with the driver code, Linux OS does the
|
||||
-// thread cleanup.
|
||||
-//
|
||||
-void OS_CleanupThreadData(void)
|
||||
-{
|
||||
-#if defined(__ANDROID__) || defined(__Fuchsia__)
|
||||
- DetachThreadLinux(NULL);
|
||||
-#else
|
||||
- int old_cancel_state, old_cancel_type;
|
||||
- void *cleanupArg = NULL;
|
||||
-
|
||||
- //
|
||||
- // Set thread cancel state and push cleanup handler.
|
||||
- //
|
||||
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancel_state);
|
||||
- pthread_cleanup_push(DetachThreadLinux, (void *) cleanupArg);
|
||||
-
|
||||
- //
|
||||
- // Put the thread in deferred cancellation mode.
|
||||
- //
|
||||
- pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &old_cancel_type);
|
||||
-
|
||||
- //
|
||||
- // Pop cleanup handler and execute it prior to unregistering the cleanup handler.
|
||||
- //
|
||||
- pthread_cleanup_pop(1);
|
||||
-
|
||||
- //
|
||||
- // Restore the thread's previous cancellation mode.
|
||||
- //
|
||||
- pthread_setcanceltype(old_cancel_state, NULL);
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
//
|
||||
// Thread Local Storage Operations
|
||||
//
|
||||
diff --git a/thirdparty/glslang/glslang/OSDependent/osinclude.h b/thirdparty/glslang/glslang/OSDependent/osinclude.h
|
||||
index 218abe4f23..fcfeff2cc4 100644
|
||||
--- a/thirdparty/glslang/glslang/OSDependent/osinclude.h
|
||||
+++ b/thirdparty/glslang/glslang/OSDependent/osinclude.h
|
||||
@@ -54,8 +54,6 @@ void ReleaseGlobalLock();
|
||||
|
||||
typedef unsigned int (*TThreadEntrypoint)(void*);
|
||||
|
||||
-void OS_CleanupThreadData(void);
|
||||
-
|
||||
void OS_DumpMemoryCounters();
|
||||
|
||||
} // end namespace glslang
|
Loading…
Reference in a new issue