|
Blender V4.3
|
#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 139 of file gl_batch.cc.
References count, dynamic_vaos, blender::gpu::GLContext::get(), GPU_VAO_STATIC_LEN, interfaces, MEM_freeN(), static_vaos, blender::gpu::GLContext::vao_cache_unregister(), and blender::gpu::GLContext::vao_free().
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 dynamic_vaos, GPU_BATCH_VAO_DYN_ALLOC_COUNT, GPU_VAO_STATIC_LEN, MEM_callocN, MEM_recallocN, static_vaos, and blender::gpu::GLContext::vao_free().
Referenced by vao_get().
| GLuint GLVaoCache::lookup | ( | const GLShaderInterface * | interface | ) |
Return 0 on cache miss (invalid VAO).
Definition at line 181 of file gl_batch.cc.
References count, dynamic_vaos, GPU_VAO_STATIC_LEN, interfaces, and static_vaos.
Referenced by vao_get().
| void GLVaoCache::remove | ( | const GLShaderInterface * | interface | ) |
Definition at line 118 of file gl_batch.cc.
References count, dynamic_vaos, GPU_VAO_STATIC_LEN, interfaces, static_vaos, and blender::gpu::GLContext::vao_free().
| GLuint GLVaoCache::vao_get | ( | Batch * | batch | ) |
Definition at line 211 of file gl_batch.cc.
References batch, blender::gpu::GLContext::get(), insert(), lookup(), blender::gpu::Context::shader, and blender::gpu::GLVertArray::update_bindings().
Referenced by blender::gpu::GLBatch::bind().
| uint blender::gpu::GLVaoCache::count |
Definition at line 55 of file gl_batch.hh.
| struct { ... } blender::gpu::GLVaoCache::dynamic_vaos |
| const GLShaderInterface* blender::gpu::GLVaoCache::interfaces[GPU_VAO_STATIC_LEN] |
Definition at line 50 of file gl_batch.hh.
| const GLShaderInterface** blender::gpu::GLVaoCache::interfaces |
Definition at line 56 of file gl_batch.hh.
| struct { ... } blender::gpu::GLVaoCache::static_vaos |
| GLuint blender::gpu::GLVaoCache::vao_ids[GPU_VAO_STATIC_LEN] |
Definition at line 51 of file gl_batch.hh.
| GLuint* blender::gpu::GLVaoCache::vao_ids |
Definition at line 57 of file gl_batch.hh.