|
KiCad PCB EDA Suite
|
#include <vertex_container.h>
Public Member Functions | |
| virtual | ~VERTEX_CONTAINER () |
| virtual bool | IsCached () const =0 |
| Return true if the container caches vertex data in RAM or video memory. | |
| virtual void | Abandon () |
| Give up ownership of any GL objects without deleting them. | |
| virtual void | Map () |
| Prepare the container for vertices updates. | |
| virtual void | Unmap () |
| Finish the vertices updates stage. | |
| virtual void | SetItem (VERTEX_ITEM *aItem)=0 |
| Set the item for the further actions. | |
| virtual void | FinishItem () |
| Clean up after adding an item. | |
| virtual VERTEX * | Allocate (unsigned int aSize)=0 |
| Return allocated space for the requested number of vertices associated with the current item (set with SetItem()). | |
| virtual void | Delete (VERTEX_ITEM *aItem)=0 |
| Erase the data related to an item. | |
| virtual void | Clear ()=0 |
| Remove all data stored in the container and restores its original state. | |
| VERTEX * | GetAllVertices () const |
| Return pointer to the vertices stored in the container. | |
| virtual VERTEX * | GetVertices (unsigned int aOffset) const |
| Return vertices stored at the specific offset. | |
| virtual unsigned int | GetSize () const |
| Return amount of vertices currently stored in the container. | |
| bool | IsDirty () const |
| Return information about the container cache state. | |
| void | SetDirty () |
| Set the dirty flag, so vertices in the container are going to be reuploaded to the GPU on the next frame. | |
| void | ClearDirty () |
| Clear the dirty flag to prevent reuploading vertices to the GPU memory. | |
Static Public Member Functions | |
| static VERTEX_CONTAINER * | MakeContainer (bool aCached) |
| Return a pointer to a new container of an appropriate type. | |
Protected Member Functions | |
| VERTEX_CONTAINER (unsigned int aSize=DEFAULT_SIZE) | |
| unsigned int | usedSpace () const |
| Return size of the used memory space. | |
Protected Attributes | |
| unsigned int | m_freeSpace |
| Free space left in the container, expressed in vertices. | |
| unsigned int | m_currentSize |
| Current container size, expressed in vertices. | |
| unsigned int | m_initialSize |
| Store the initial size, so it can be resized to this on Clear() | |
| VERTEX * | m_vertices |
| Actual storage memory. | |
| bool | m_failed |
| bool | m_dirty |
Static Protected Attributes | |
| static constexpr unsigned int | DEFAULT_SIZE = 1048576 |
| Default initial size of a container (expressed in vertices) | |
Definition at line 38 of file vertex_container.h.
|
virtual |
Definition at line 67 of file vertex_container.cpp.
|
protected |
Definition at line 56 of file vertex_container.cpp.
References m_currentSize, m_dirty, m_failed, m_freeSpace, m_initialSize, and m_vertices.
Referenced by KIGFX::CACHED_CONTAINER::CACHED_CONTAINER(), MakeContainer(), and KIGFX::NONCACHED_CONTAINER::NONCACHED_CONTAINER().
|
inlinevirtual |
Give up ownership of any GL objects without deleting them.
Used when the owning context can no longer be made current, so a delete would be executed against whichever context is, possibly one from another share group. The names are released when the owning context is destroyed.
Reimplemented in KIGFX::CACHED_CONTAINER_GPU.
Definition at line 61 of file vertex_container.h.
|
pure virtual |
Return allocated space for the requested number of vertices associated with the current item (set with SetItem()).
The allocated space is added at the end of the chunk used by the current item and may serve to store new vertices.
| aSize | is the number of vertices to be allocated. |
Implemented in KIGFX::CACHED_CONTAINER, and KIGFX::NONCACHED_CONTAINER.
|
pure virtual |
Remove all data stored in the container and restores its original state.
Implemented in KIGFX::CACHED_CONTAINER, and KIGFX::NONCACHED_CONTAINER.
|
inline |
Clear the dirty flag to prevent reuploading vertices to the GPU memory.
Definition at line 157 of file vertex_container.h.
References m_dirty.
Referenced by KIGFX::GPU_CACHED_MANAGER::EndDrawing().
|
pure virtual |
Erase the data related to an item.
| aItem | is the item to be erased. |
Implemented in KIGFX::CACHED_CONTAINER, and KIGFX::NONCACHED_CONTAINER.
|
inlinevirtual |
Clean up after adding an item.
Reimplemented in KIGFX::CACHED_CONTAINER.
Definition at line 83 of file vertex_container.h.
|
inline |
Return pointer to the vertices stored in the container.
Definition at line 112 of file vertex_container.h.
References m_vertices.
|
inlinevirtual |
Return amount of vertices currently stored in the container.
Reimplemented in KIGFX::NONCACHED_CONTAINER.
Definition at line 130 of file vertex_container.h.
References m_currentSize.
|
inlinevirtual |
Return vertices stored at the specific offset.
| aOffset | is the offset. |
Definition at line 122 of file vertex_container.h.
References m_vertices.
|
pure virtual |
Return true if the container caches vertex data in RAM or video memory.
Otherwise it is a single batch draw which is later discarded.
Implemented in KIGFX::CACHED_CONTAINER, and KIGFX::NONCACHED_CONTAINER.
Referenced by KIGFX::GPU_MANAGER::MakeManager().
|
inline |
Return information about the container cache state.
Definition at line 140 of file vertex_container.h.
References m_dirty.
|
static |
Return a pointer to a new container of an appropriate type.
Definition at line 38 of file vertex_container.cpp.
References VERTEX_CONTAINER().
Referenced by KIGFX::VERTEX_MANAGER::VERTEX_MANAGER().
|
inlinevirtual |
Prepare the container for vertices updates.
Reimplemented in KIGFX::CACHED_CONTAINER, KIGFX::CACHED_CONTAINER_GPU, and KIGFX::CACHED_CONTAINER_RAM.
Definition at line 66 of file vertex_container.h.
|
inline |
Set the dirty flag, so vertices in the container are going to be reuploaded to the GPU on the next frame.
Definition at line 149 of file vertex_container.h.
References m_dirty.
|
pure virtual |
Set the item for the further actions.
| aItem | is the item or NULL in case of finishing the item. |
Implemented in KIGFX::CACHED_CONTAINER, and KIGFX::NONCACHED_CONTAINER.
|
inlinevirtual |
Finish the vertices updates stage.
Reimplemented in KIGFX::CACHED_CONTAINER, KIGFX::CACHED_CONTAINER_GPU, and KIGFX::CACHED_CONTAINER_RAM.
Definition at line 71 of file vertex_container.h.
|
inlineprotected |
Return size of the used memory space.
Definition at line 170 of file vertex_container.h.
References m_currentSize, and m_freeSpace.
Referenced by KIGFX::CACHED_CONTAINER::defragment(), KIGFX::CACHED_CONTAINER_GPU::defragmentResize(), KIGFX::CACHED_CONTAINER_RAM::defragmentResize(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeMemcpy(), and KIGFX::CACHED_CONTAINER_GPU::defragmentResizeStaged().
|
staticconstexprprotected |
Default initial size of a container (expressed in vertices)
Definition at line 192 of file vertex_container.h.
|
protected |
Current container size, expressed in vertices.
Definition at line 179 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::addFreeChunk(), KIGFX::NONCACHED_CONTAINER::Allocate(), KIGFX::CACHED_CONTAINER_GPU::CACHED_CONTAINER_GPU(), KIGFX::CACHED_CONTAINER::Clear(), KIGFX::NONCACHED_CONTAINER::Clear(), KIGFX::CACHED_CONTAINER_GPU::defragmentResize(), KIGFX::CACHED_CONTAINER_RAM::defragmentResize(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeMemcpy(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeStaged(), KIGFX::CACHED_CONTAINER::Delete(), GetSize(), KIGFX::CACHED_CONTAINER::reallocate(), KIGFX::CACHED_CONTAINER::test(), usedSpace(), and VERTEX_CONTAINER().
|
protected |
Definition at line 189 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::Allocate(), ClearDirty(), KIGFX::CACHED_CONTAINER_RAM::defragmentResize(), IsDirty(), SetDirty(), KIGFX::CACHED_CONTAINER_RAM::Unmap(), and VERTEX_CONTAINER().
|
protected |
Definition at line 188 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::Allocate(), KIGFX::CACHED_CONTAINER::Clear(), and VERTEX_CONTAINER().
|
protected |
Free space left in the container, expressed in vertices.
Definition at line 176 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::addFreeChunk(), KIGFX::NONCACHED_CONTAINER::Allocate(), KIGFX::CACHED_CONTAINER::Clear(), KIGFX::NONCACHED_CONTAINER::Clear(), KIGFX::CACHED_CONTAINER_GPU::defragmentResize(), KIGFX::CACHED_CONTAINER_RAM::defragmentResize(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeMemcpy(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeStaged(), KIGFX::CACHED_CONTAINER::Delete(), KIGFX::CACHED_CONTAINER::reallocate(), KIGFX::CACHED_CONTAINER::test(), usedSpace(), and VERTEX_CONTAINER().
|
protected |
Store the initial size, so it can be resized to this on Clear()
Definition at line 182 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::Delete(), and VERTEX_CONTAINER().
|
protected |
Actual storage memory.
Definition at line 185 of file vertex_container.h.
Referenced by KIGFX::CACHED_CONTAINER::Allocate(), KIGFX::NONCACHED_CONTAINER::Allocate(), KIGFX::CACHED_CONTAINER_RAM::CACHED_CONTAINER_RAM(), KIGFX::CACHED_CONTAINER::defragment(), KIGFX::CACHED_CONTAINER_RAM::defragmentResize(), KIGFX::CACHED_CONTAINER_GPU::defragmentResizeStaged(), GetAllVertices(), GetVertices(), KIGFX::CACHED_CONTAINER_GPU::Map(), KIGFX::NONCACHED_CONTAINER::NONCACHED_CONTAINER(), KIGFX::CACHED_CONTAINER::reallocate(), KIGFX::CACHED_CONTAINER_GPU::Unmap(), KIGFX::CACHED_CONTAINER_RAM::Unmap(), VERTEX_CONTAINER(), KIGFX::CACHED_CONTAINER_RAM::~CACHED_CONTAINER_RAM(), and KIGFX::NONCACHED_CONTAINER::~NONCACHED_CONTAINER().