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`
|
to `glslang/build_info.h`
|
||||||
- `LICENSE.txt`
|
- `LICENSE.txt`
|
||||||
- Unnecessary files like `CMakeLists.txt`, `*.m4` and `updateGrammar` removed.
|
- Unnecessary files like `CMakeLists.txt`, `*.m4` and `updateGrammar` removed.
|
||||||
|
- Patch in `patches/unused_cleanup.diff` must be applied.
|
||||||
|
|
||||||
|
|
||||||
## graphite
|
## graphite
|
||||||
|
|
|
@ -65,43 +65,6 @@ static void DetachThreadLinux(void *)
|
||||||
DetachThread();
|
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
|
// Thread Local Storage Operations
|
||||||
//
|
//
|
||||||
|
|
|
@ -54,8 +54,6 @@ void ReleaseGlobalLock();
|
||||||
|
|
||||||
typedef unsigned int (*TThreadEntrypoint)(void*);
|
typedef unsigned int (*TThreadEntrypoint)(void*);
|
||||||
|
|
||||||
void OS_CleanupThreadData(void);
|
|
||||||
|
|
||||||
void OS_DumpMemoryCounters();
|
void OS_DumpMemoryCounters();
|
||||||
|
|
||||||
} // end namespace glslang
|
} // 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