|
Blender V4.5
|
#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 () |
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.
| GLVaoCache::GLVaoCache | ( | ) |
Definition at line 36 of file gl_batch.cc.
| GLVaoCache::~GLVaoCache | ( | ) |
Definition at line 41 of file gl_batch.cc.
References clear().
| void GLVaoCache::clear | ( | ) |
Definition at line 138 of file gl_batch.cc.
References blender::gpu::GLContext::get(), GPU_VAO_STATIC_LEN, i, and MEM_freeN().
Referenced by blender::gpu::GLBatch::bind(), and ~GLVaoCache().
| 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().
| 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().
| void GLVaoCache::remove | ( | const GLShaderInterface * | interface | ) |
Definition at line 117 of file gl_batch.cc.
References GPU_VAO_STATIC_LEN, and i.
| GLuint GLVaoCache::vao_get | ( | Batch * | batch | ) |
Definition at line 210 of file gl_batch.cc.
References blender::gpu::GLContext::get(), insert(), lookup(), blender::gpu::Context::shader, and blender::gpu::GLVertArray::update_bindings().
Referenced by blender::gpu::GLBatch::bind().