Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::vkShader Class Referencefinal

#include <vkShaderProgram.h>

+ Inheritance diagram for Divide::vkShader:

Public Member Functions

 vkShader (GFXDevice &context, const std::string_view name, U32 generation)
 
 ~vkShader () override
 
bool load (const ShaderProgram::LoadData &data)
 
 PROPERTY_R_IW (VkShaderStageFlagBits, stageMask, VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM)
 
 PROPERTY_R_IW (VkShaderModule, handle, VK_NULL_HANDLE)
 
- Public Member Functions inherited from Divide::ShaderModule
 ShaderModule (GFXDevice &context, const std::string_view name, U32 generation)
 
virtual ~ShaderModule () override
 
void registerParent (ShaderProgram *parent)
 
void deregisterParent (ShaderProgram *parent)
 
 PROPERTY_R (Str< 256 >, name)
 
 PROPERTY_R (bool, valid, false)
 
 PROPERTY_R (bool, inUse, true)
 
 PROPERTY_R (U32, generation, 0u)
 
 PROPERTY_R (U64, lastUsedFrame, U64_MAX - MAX_FRAME_LIFETIME - 1u)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 

Static Public Member Functions

static vkShaderEntry LoadShader (GFXDevice &context, vkShaderProgram *parent, U32 targetGeneration, ShaderProgram::LoadData &data)
 Add or refresh a shader from the cache.
 
- Static Public Member Functions inherited from Divide::ShaderModule
static ShaderModuleGetShader (const std::string_view name)
 Returns a reference to an already loaded shader, null otherwise.
 
static void Idle (bool fast)
 
static void InitStaticData ()
 
static void DestroyStaticData ()
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Private Member Functions

void reset ()
 

Private Attributes

VkPipelineShaderStageCreateInfo _createInfo {}
 
ShaderProgram::LoadData _loadData
 

Additional Inherited Members

- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 
- Protected Types inherited from Divide::ShaderModule
using ShaderMap = hashMap< U64, ShaderModule_uptr >
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 
- Static Protected Member Functions inherited from Divide::ShaderModule
static ShaderModuleGetShaderLocked (const std::string_view name)
 
- Protected Attributes inherited from Divide::ShaderModule
Mutex _parentLock
 
eastl::fixed_vector< ShaderProgram *, 4, true > _parents
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 
- Static Protected Attributes inherited from Divide::ShaderModule
static constexpr U32 MAX_FRAME_LIFETIME = Config::TARGET_FRAME_RATE * 10
 
static std::atomic_bool s_modulesRemoved
 Shader cache.
 
static ShaderMap s_shaderNameMap
 
static SharedMutex s_shaderNameLock
 

Detailed Description

Definition at line 51 of file vkShaderProgram.h.

Constructor & Destructor Documentation

◆ vkShader()

Divide::vkShader::vkShader ( GFXDevice context,
const std::string_view  name,
U32  generation 
)
explicit

Definition at line 13 of file vkShaderProgram.cpp.

◆ ~vkShader()

Divide::vkShader::~vkShader ( )
override

Definition at line 18 of file vkShaderProgram.cpp.

Member Function Documentation

◆ load()

bool Divide::vkShader::load ( const ShaderProgram::LoadData data)

Definition at line 70 of file vkShaderProgram.cpp.

◆ LoadShader()

vkShaderEntry Divide::vkShader::LoadShader ( GFXDevice context,
vkShaderProgram parent,
U32  targetGeneration,
ShaderProgram::LoadData data 
)
static

Add or refresh a shader from the cache.

Load a shader by name, source code and stage.

Definition at line 34 of file vkShaderProgram.cpp.

◆ PROPERTY_R_IW() [1/2]

Divide::vkShader::PROPERTY_R_IW ( VkShaderModule  ,
handle  ,
VK_NULL_HANDLE   
)

◆ PROPERTY_R_IW() [2/2]

Divide::vkShader::PROPERTY_R_IW ( VkShaderStageFlagBits  ,
stageMask  ,
VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM   
)

◆ reset()

void Divide::vkShader::reset ( )
private

Definition at line 23 of file vkShaderProgram.cpp.

Member Data Documentation

◆ _createInfo

VkPipelineShaderStageCreateInfo Divide::vkShader::_createInfo {}
private

Definition at line 71 of file vkShaderProgram.h.

◆ _loadData

ShaderProgram::LoadData Divide::vkShader::_loadData
private

Definition at line 72 of file vkShaderProgram.h.


The documentation for this class was generated from the following files: