|
| vkShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor) |
|
| ~vkShaderProgram () override |
|
const vkShaders & | shaderStages () const noexcept |
|
VkShaderStageFlags | stageMask () const noexcept |
|
ShaderResult | validatePreBind (const bool rebind) override |
|
| PROPERTY_RW (VkDescriptorSetLayout, descriptorSetLayout, VK_NULL_HANDLE) |
|
| PROPERTY_RW (DynamicBindings, dynamicBindings) |
|
| ShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor) |
|
| ~ShaderProgram () override |
|
bool | load (PlatformContext &context) override |
| Loading and unloading interface.
|
|
bool | postLoad () override |
|
bool | unload () override |
|
bool | recompile () |
|
bool | recompile (bool &skipped) |
| Rebuild the specified shader stages from source code.
|
|
virtual ShaderResult | validatePreBind (bool rebind=true) |
|
bool | uploadUniformData (const UniformData &data, DescriptorSet &set, GFX::MemoryBarrierCommand &memCmdInOut) |
|
const ShaderProgramDescriptor & | descriptor () const noexcept |
|
| PROPERTY_RW (bool, highPriority, true) |
|
| PROPERTY_RW (bool, useShaderCache, true) |
|
| PROPERTY_R_IW (BindingsPerSetArray, perDrawDescriptorSetLayout) |
|
| PROPERTY_R_IW (RenderTargets, fragmentOutputs) |
|
| PROPERTY_R_IW (SetUsageData, setUsage) |
|
| CachedResource (const ResourceDescriptorBase &descriptor, std::string_view typeName) |
|
virtual bool | load (PlatformContext &context) |
| Loading and unloading interface.
|
|
virtual bool | postLoad () |
|
virtual bool | unload () |
|
void | setState (ResourceState currentState) final |
|
| Resource (std::string_view resourceName, std::string_view typeName) |
|
ResourceState | getState () const noexcept |
|
| PROPERTY_R (Str< 32 >, typeName) |
|
| PROPERTY_R (Str< 256 >, resourceName) |
|
| GUIDWrapper () noexcept |
|
| GUIDWrapper (const GUIDWrapper &old) noexcept |
|
| GUIDWrapper (GUIDWrapper &&old) noexcept |
|
virtual | ~GUIDWrapper ()=default |
|
FORCE_INLINE I64 | getGUID () const noexcept |
|
GUIDWrapper & | operator= (const GUIDWrapper &old)=delete |
|
GUIDWrapper & | operator= (GUIDWrapper &&other)=delete |
|
virtual | ~GraphicsResource () |
|
GFXDevice & | context () const noexcept |
|
U64 | nameHash () const noexcept |
|
| NonCopyable (const NonCopyable &)=delete |
|
NonCopyable & | operator= (const NonCopyable &)=delete |
|
| NonCopyable (NonCopyable &&)=default |
|
NonCopyable & | operator= (NonCopyable &&)=default |
|
| NonMovable (NonMovable &&)=delete |
|
NonMovable & | operator= (NonMovable &&)=delete |
|
| NonMovable (const NonMovable &)=default |
|
NonMovable & | operator= (const NonMovable &)=default |
|
|
bool | unload () override |
| Make sure this program is ready for deletion.
|
|
bool | loadInternal (hashMap< U64, PerFileShaderData > &fileData, bool overwrite) override |
| Returns true if at least one shader linked successfully.
|
|
virtual bool | loadInternal (hashMap< U64, PerFileShaderData > &fileData, bool overwrite) |
|
bool | loadSourceCode (const ModuleDefines &defines, bool reloadExisting, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut) |
|
void | loadAndParseGLSL (const ModuleDefines &defines, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut, eastl::set< U64 > &atomIDsInOut) |
|
void | initDrawDescriptorSetLayout (const PerFileShaderData &loadData) |
|
void | initUniformUploader (const PerFileShaderData &loadData) |
|
| PROPERTY_RW (ResourcePath, assetLocation) |
|
| PROPERTY_RW (Str< 256 >, assetName) |
|
| PROPERTY_R (size_t, descriptorHash) |
|
virtual void | setState (ResourceState currentState) |
|
| GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash) |
|
| NonCopyable ()=default |
|
| ~NonCopyable ()=default |
|
| NonMovable ()=default |
|
| ~NonMovable ()=default |
|
|
static void | Idle (PlatformContext &platformContext, bool fast) |
|
static void | InitStaticData () |
|
static void | DestroyStaticData () |
|
static ErrorCode | OnStartup (PlatformContext &context) |
|
static bool | OnShutdown () |
|
static void | OnBeginFrame (GFXDevice &gfx) |
|
static void | OnEndFrame (GFXDevice &gfx) |
|
static bool | RecompileShaderProgram (const std::string_view name) |
| Queue a shaderProgram recompile request.
|
|
static bool | UnregisterShaderProgram (ShaderProgram *shaderProgram) |
| Remove a shaderProgram from the program cache.
|
|
static void | RegisterShaderProgram (ShaderProgram *shaderProgram) |
| Add a shaderProgram to the program cache.
|
|
static void | RebuildAllShaders () |
|
static vector< ResourcePath > | GetAllAtomLocations () |
|
static I32 | ShaderProgramCount () noexcept |
|
static void | OnAtomChange (std::string_view atomName, FileUpdateEvent evt) |
|
static U8 | GetGLBindingForDescriptorSlot (DescriptorSetUsage usage, U8 slot) noexcept |
|
static std::pair< DescriptorSetUsage, U8 > | GetDescriptorSlotForGLBinding (U8 binding, DescriptorSetBindingType type) noexcept |
|
static BindingSetData & | GetBindingSetData () noexcept |
|
static void | RegisterSetLayoutBinding (DescriptorSetUsage usage, U8 slot, DescriptorSetBindingType type, ShaderStageVisibility visibility) |
|
static ErrorCode | SubmitSetLayouts (GFXDevice &gfx) |
|
static U32 | GetBindingCount (DescriptorSetUsage usage, DescriptorSetBindingType type) |
|
static I64 | generateGUID () noexcept |
|
static constexpr const char * | UNIFORM_BLOCK_NAME = "dvd_uniforms" |
|
static U8 | k_commandBufferID = U8_MAX - MAX_BINDINGS_PER_DESCRIPTOR_SET |
|
static Mutex | g_cacheLock |
|
static bool | SaveToCache (LoadData::ShaderCacheType cache, const LoadData &dataIn, const eastl::set< U64 > &atomIDsIn) |
|
static bool | LoadFromCache (LoadData::ShaderCacheType cache, LoadData &dataInOut, eastl::set< U64 > &atomIDsOut) |
|
static void | OnThreadCreated (const GFXDevice &gfx, const std::thread::id &threadID, bool isMainRenderThread) |
|
const ShaderProgramDescriptor | _descriptor |
|
vector< UniformBlockUploader > | _uniformBlockBuffers |
|
eastl::set< U64 > | _usedAtomIDs |
|
Mutex | _callbackLock {} |
|
std::atomic< ResourceState > | _resourceState |
|
const I64 | _guid |
|
GFXDevice & | _context |
|
static ShaderQueue | s_recompileQueue |
|
static ShaderQueue | s_recompileFailedQueue |
|
static ShaderProgramMap | s_shaderPrograms |
| Shader program cache.
|
|
static eastl::fixed_vector< ShaderProgram *, U16_MAX, false > | s_usedShaderPrograms |
|
static LastRequestedShader | s_lastRequestedShaderProgram = {} |
|
static SharedMutex | s_programLock |
|
static std::atomic_int | s_shaderCount |
|
static I64 | s_shaderFileWatcherID = -1 |
|
static Mutex | s_atomLock |
| Shaders loaded from files are kept as atoms.
|
|
static AtomMap | s_atoms |
|
static AtomInclusionMap | s_atomIncludes |
|
static ResourcePath | shaderAtomLocationPrefix [to_base(ShaderType::COUNT)+1] |
|
static Str< 8 > | shaderAtomExtensionName [to_base(ShaderType::COUNT)+1] |
|
static U64 | shaderAtomExtensionHash [to_base(ShaderType::COUNT)+1] |
|
static BindingSetData | s_bindingsPerSet |
|
Definition at line 75 of file vkShaderProgram.h.