mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-17 01:40:36 +01:00
mesa: fix glUniform* when a struct contains a bindless sampler
Small example from #3271:
layout (bindless_sampler) uniform;
struct SamplerSparse {
sampler2D tex;
vec4 size;
[...]
};
uniform SamplerSparse foo;
'foo' will be marked as bindless but we should only take the assign-as-GLuint64 path for 'tex'.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3271
Fixes: 990c8d15ac ("mesa: fix setting uniform variables for bindless samplers/images")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6730>
This commit is contained in:
parent
77af1ca690
commit
090fc593b4
1 changed files with 4 additions and 2 deletions
|
|
@ -1043,10 +1043,12 @@ copy_uniforms_to_storage(gl_constant_value *storage,
|
|||
const unsigned offset, const unsigned components,
|
||||
enum glsl_base_type basicType)
|
||||
{
|
||||
if (!uni->type->is_boolean() && !uni->is_bindless) {
|
||||
bool copy_as_uint64 = uni->is_bindless &&
|
||||
(uni->type->is_sampler() || uni->type->is_image());
|
||||
if (!uni->type->is_boolean() && !copy_as_uint64) {
|
||||
memcpy(storage, values,
|
||||
sizeof(storage[0]) * components * count * size_mul);
|
||||
} else if (uni->is_bindless) {
|
||||
} else if (copy_as_uint64) {
|
||||
const union gl_constant_value *src =
|
||||
(const union gl_constant_value *) values;
|
||||
GLuint64 *dst = (GLuint64 *)&storage->i;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue