Gawain: Simplify / optimize the shader interface.
authorClément Foucault <foucault.clem@gmail.com>
Thu, 5 Oct 2017 16:26:50 +0000 (18:26 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Thu, 5 Oct 2017 23:50:51 +0000 (01:50 +0200)
commitd7d32ad45217736c677edd22906d980d03aeb175
tree4f1a6c0b2102226ea50d9510dfa2996fb562794e
parent9ab3db11c797e1ec64446aa9ee2e91f3020ec772
Gawain: Simplify / optimize the shader interface.

This changes quite a few things:
- Drops the allocation of inputs as a chunk.
- Merge the linked list system into the Gwn_ShaderInput.
- Put name buffer into another memory block, easily resizable.
- Use offset instead of char* to direct to input name.
- Add only requested uniforms dynamicaly to the Shader Interface.

This drops some minor optimisation and use a bit more memory for small shaders (which are fixed count).
But this saves a lot of memory when using UBOs because the names and the Gwn_ShaderInput were alloc'ed for every UBO variable.
This also reduce the Shader Interface initial generation.
The lookup time is left unchanged.
intern/gawain/gawain/gwn_shader_interface.h
intern/gawain/src/gwn_shader_interface.c