Blender V4.5
blender::gpu::GLVaoCache Class Reference

#include <gl_batch.hh>

VAO Cache

Each GLBatch has a small cache of VAO objects that are used to avoid VAO reconfiguration. TODO(fclem): Could be revisited to avoid so much cross references.

 GLVaoCache ()
 ~GLVaoCache ()
GLuint vao_get (Batch *batch)
GLuint lookup (const GLShaderInterface *interface)
void insert (const GLShaderInterface *interface, GLuint vao_id)
void remove (const GLShaderInterface *interface)
void clear ()

Detailed Description

VAO management: remembers all geometry state (vertex attribute bindings & element buffer) for each shader interface. Start with a static number of VAO's and fallback to dynamic count if necessary. Once a batch goes dynamic it does not go back.

Definition at line 34 of file gl_batch.hh.

Constructor & Destructor Documentation

◆ GLVaoCache()

GLVaoCache::GLVaoCache ( )

Definition at line 36 of file gl_batch.cc.

◆ ~GLVaoCache()

GLVaoCache::~GLVaoCache ( )

Definition at line 41 of file gl_batch.cc.

References clear().

Member Function Documentation

◆ clear()

void GLVaoCache::clear ( )

◆ insert()

void GLVaoCache::insert ( const GLShaderInterface * interface,
GLuint vao_id )

Create a new VAO object and store it in the cache.

Definition at line 60 of file gl_batch.cc.

References GPU_VAO_STATIC_LEN, i, MEM_calloc_arrayN(), MEM_callocN(), and MEM_recallocN.

Referenced by vao_get().

◆ lookup()

GLuint GLVaoCache::lookup ( const GLShaderInterface * interface)

Return 0 on cache miss (invalid VAO).

Definition at line 180 of file gl_batch.cc.

References GPU_VAO_STATIC_LEN, and i.

Referenced by vao_get().

◆ remove()

void GLVaoCache::remove ( const GLShaderInterface * interface)

Definition at line 117 of file gl_batch.cc.

References GPU_VAO_STATIC_LEN, and i.

◆ vao_get()

GLuint GLVaoCache::vao_get ( Batch * batch)

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