Enabled sampler arrays in shader 41/291641/1
authorDavid Steele <david.steele@samsung.com>
Wed, 19 Apr 2023 16:22:49 +0000 (17:22 +0100)
committerDavid Steele <david.steele@samsung.com>
Wed, 19 Apr 2023 16:22:49 +0000 (17:22 +0100)
commitc7f366c7fe2311480971b411a7e1c9569c60448c
tree96def7a776b088ae5ace6fe24ed49edbad3391b4
parentf2d40be7fa2e7c6a9994eee89d707617d52760fb
Enabled sampler arrays in shader

Previously, texture units were only bound to the first
element of any sampler array.

Modified the shader reflection parser to find sampler arrays
of the format
  uniform sampler2D mySamplers[16]

and store the number of elements in the sampler code.

Modified the binding code to ensure that textures are bound
to each element of a sampler array.

Made several assumptions in this code:
A) that GL returns sequential locations for each uniform array element
(It doesn't guarantee a strict sequence, but in practice, this is the
case).

B) that the dali-core implementation binds texture units in the order 0..N-1
with a binding index of 0..N-1. (A safe assumption, given we know how
dali-core works!)

Note, we don't really use locations for non-sampler uniform array elements,
either, we just offset from the first location.

Change-Id: I68c61f3e22303271d5d916c3588f4a3bd5898757
Signed-off-by: David Steele <david.steele@samsung.com>
dali/internal/graphics/gles-impl/gles-context.cpp
dali/internal/graphics/gles-impl/gles-graphics-reflection.cpp