| 12345678910111213141516171819202122232425262728293031323334 |
- Make sure to also update TextSprite and ImageSprite and anything else in UpdateMesh, then don't forget to find the issue that causes elements to get marked as dirty every single frame
- GpuParamBlock should be tied directly with GpuParamBlockBuffer
- - Modify material so it always sets just the first GpuParams with a specific name. This will avoid updating same buffer multiple times.
- When GpuParams are destroyed (when another shader is set in Material for example), make sure to set all GpuParam internal data to null
- Add material parameter handles for texture, sampler state, and structs
- FrameAlloc
- Keeps two internal stacks
- - One core, one sim
- coreThreadBegin()
- - swaps the active stacks
- coreThreadEnd() - Must be called after Core thread has finished
- - frees the previously active stack
- During frame we call alloc()
-
- There are many allocations in CPUProfiler (especially report generation), and they aren't counted anywhere since they use
- a special allocator.
- --------------------
- HardwareBuffer::lock (more exactly ImmediateContext::Map) is very slow, with 35 calls taking up almost 3ms.
- - First, mesh creates both vertex and index buffer whenever writeSubresource is called!!! It should instead just update them.
- - Never shrink mesh buffers. Add shrinkInternalBuffers property to MeshData that will force the buffers to shrink.
- - Second, mesh buffers are created with default buffer flags (static). Try changing it to dynamic
- - Allow user to specify mesh buffer type during mesh construction
- When optimizing UpdateLayout make sure to mark elements that are fully culled as Culled
- - But in order to determine that I first need to update the sprite to find out the elements bounds which defeats the point
- - TODO - FIgure this out
- -------------
|