This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Uniform blocks : Optimal qualifiers

Greetings,

I'm currently playing with OpenGL ES 3.0 and I'm wondering if Mali (>= T6xx) drivers can perform interesting optimisations based on the chosen layout qualifier applied to Interface Blocks  ? (shared, packed, std140, row_major, column_major)

The fact that Std140 avoids pinging the OpenGL implementation, about the data layout, makes me wonder if there's any reason to choose another layout qualifier.

  • If a uniform block is shared between multiple programs, is it useful to choose shared ? Even though the uniform block will just get its data from a Uniform Buffer Object ?
  • Does packed really provides useful memory optimisations for OpenGL programs ?
Parents
  • Just one last question !

    When searching for OpenGL ES 3.1 on the web, I found slides from the ARM Mali team presenting the new ES 3.1 features. Between these features there is :

    • Explicit uniform location (Desktop side, it's an OpenGL 3.3 feature)

    As I understand it, I can define a specific ID for uniforms and, then, just reference the static ID on the API (C/C++) side like this :

     glUniform*(myy_program_uniform_id, ...)

     

    The question is : does it have the same impact as forcing layouts ?

Reply
  • Just one last question !

    When searching for OpenGL ES 3.1 on the web, I found slides from the ARM Mali team presenting the new ES 3.1 features. Between these features there is :

    • Explicit uniform location (Desktop side, it's an OpenGL 3.3 feature)

    As I understand it, I can define a specific ID for uniforms and, then, just reference the static ID on the API (C/C++) side like this :

     glUniform*(myy_program_uniform_id, ...)

     

    The question is : does it have the same impact as forcing layouts ?

Children