32 static const u32 PARAMETER_COUNT_MAX =
GxMath::VALUE_1K;
35#if GX_DEVELOP && USE_SHADER_COMPILE_THREAD
37 class GxShaderCompileThread :
public GxThread
45 GxShaderCompileThread(
void) : _busyFlag(
false) {}
57 GX_FORCE_INLINE
b32 waitStartEvent(
void) {
return _startEvent.waitEvent(-1); }
59 GX_FORCE_INLINE
b32 setStartEvent(
void) { _busyFlag =
true;
return _startEvent.setEvent(); }
61 GX_FORCE_INLINE
b32 isBusy(
void)
const {
return _busyFlag; }
87 b32 initialize(
const GxClassBase* pInitialInformation =
nullptr)
override;
89 void terminate(
void)
override;
98 void update(
void)
override;
102 GX_FORCE_INLINE
void addDefaultIncludePath(GX_STR path) { _defaultIncludePaths.addBottom(path); }
112 GX_HANDLE getHandleByParameterName(GX_CSTR parameterName);
115 GX_CSTR getParameterNameByHandle(
GX_HANDLE handle);
119 GX_FORCE_INLINE
b32 getShaderPackageAutoSaveEnable(
void)
const {
return _shaderPackageAutoSaveEnable; }
122 GX_FORCE_INLINE
void setShaderPackageAutoSaveEnable(
b32 enable) { _shaderPackageAutoSaveEnable = enable; }
128 void saveUpdatedShaderPackages(
void);
131 GX_FORCE_INLINE
b32 isShaderCompiling(
void)
const {
return (getShaderCompileCountRest() > 0); }
134 u32 getShaderCompileCountRest(
void)
const;
137 GX_FORCE_INLINE
const GxArray& getDefaultIncludePaths(
void) {
return _defaultIncludePaths; }
150 b32 _shaderPackageAutoSaveEnable;
152#if ENABLE_PARARELL_SHADER_COMPILE
153#define MAX_SHADER_THREAD_NUM 4
154 struct ShaderCompileContext
156 GxShaderCompileThread _shaderCompileThread;
157 volatile bool _isStopShaderCompileThread;
161 ShaderCompileContext _contexts[MAX_SHADER_THREAD_NUM];
163 GxShaderCompileRequestSender _sendThread;
166#if USE_SHADER_COMPILE_THREAD
167 GxShaderCompileThread _shaderCompileThread;
168 volatile bool _isStopShaderCompileThread;