VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
makVrv::DtIndirectClearBufferProgram Class Reference

This class clears buffers using compute shader Theoretically, there are performance gains to be achieved by doing this in compute shader as explained here: https://jira.mak.com/browse/VRV-2672 Furthermore, this is inherently scalable in terms of parallelism (future cards will have more cores/larger work group size)/ Furthermore, glClearNamedBufferData seem to cause crashes because of driver heuristics when memory usage is high. Lastly, Vulkan based applications do it this way anyway.

Inheritance diagram for makVrv::DtIndirectClearBufferProgram:
Inheritance graph
[legend]

Public Member Functions

 DtIndirectClearBufferProgram (DtDe &de)
 
virtual ~DtIndirectClearBufferProgram ()
 
 DtIndirectClearBufferProgram ()=delete
 
 DtIndirectClearBufferProgram (const DtIndirectClearBufferProgram &)=delete
 
DtIndirectClearBufferProgramoperator= (const DtIndirectClearBufferProgram &)=delete
 
virtual void clearBuffer (DtGlBuffer *buffer, unsigned int clearValue)
 
virtual void deleteShaders ()
 
virtual void incrementNumUsers ()
 
virtual void decrementNumUsers ()
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 
virtual ~DtVirtualBaseClass ()
 

Static Public Member Functions

static
DtIndirectClearBufferProgram
instance (DtDe &de)
 

Protected Member Functions

virtual void initializeShadersIfNecessary (void)
 

Protected Attributes

DtGlProgrammyClearProgram
 
DtVector3< intmyWorkGroupLocalSize
 
tbb::atomic< intmyNumUsers
 
int myBufferSizeLoc
 
int myClearValueLoc
 
DtDemyDe
 

Static Protected Attributes

static const std::string theShaderFilePath
 

Constructor & Destructor Documentation

makVrv::DtIndirectClearBufferProgram::DtIndirectClearBufferProgram ( DtDe de)

constructor

virtual makVrv::DtIndirectClearBufferProgram::~DtIndirectClearBufferProgram ( )
virtual

destructor

makVrv::DtIndirectClearBufferProgram::DtIndirectClearBufferProgram ( )
delete

not allowed

makVrv::DtIndirectClearBufferProgram::DtIndirectClearBufferProgram ( const DtIndirectClearBufferProgram )
delete

not allowed

Member Function Documentation

static DtIndirectClearBufferProgram* makVrv::DtIndirectClearBufferProgram::instance ( DtDe de)
static

singleton access to lod manager program

DtIndirectClearBufferProgram& makVrv::DtIndirectClearBufferProgram::operator= ( const DtIndirectClearBufferProgram )
delete

not allowed

virtual void makVrv::DtIndirectClearBufferProgram::clearBuffer ( DtGlBuffer buffer,
unsigned int  clearValue 
)
virtual

clear a buffer to a given value

virtual void makVrv::DtIndirectClearBufferProgram::deleteShaders ( )
virtual

cleanup the gpu shaders

virtual void makVrv::DtIndirectClearBufferProgram::incrementNumUsers ( )
virtual

ref counting tracking

virtual void makVrv::DtIndirectClearBufferProgram::decrementNumUsers ( )
virtual

ref counting tracking

virtual void makVrv::DtIndirectClearBufferProgram::initializeShadersIfNecessary ( void  )
protectedvirtual

create the compute shader if not yet created or after reload shaders is called

Member Data Documentation

DtGlProgram* makVrv::DtIndirectClearBufferProgram::myClearProgram
protected

handle to the actual gl program

DtVector3<int> makVrv::DtIndirectClearBufferProgram::myWorkGroupLocalSize
protected

local work group sisze

tbb::atomic<int> makVrv::DtIndirectClearBufferProgram::myNumUsers
protected

the ref count (users)

int makVrv::DtIndirectClearBufferProgram::myBufferSizeLoc
protected

locations of some uniforms

int makVrv::DtIndirectClearBufferProgram::myClearValueLoc
protected
DtDe& makVrv::DtIndirectClearBufferProgram::myDe
protected

reference to de

const std::string makVrv::DtIndirectClearBufferProgram::theShaderFilePath
staticprotected

the shader file path


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

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)