[Mesa-dev] [Bug 89726] [Bisected] dEQP-GLES3: uniform linking logic in the presence of structs
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Mon Mar 23 04:05:24 PDT 2015
https://bugs.freedesktop.org/show_bug.cgi?id=89726
--- Comment #5 from Tapani Pälli <lemody at gmail.com> ---
(In reply to Ilia Mirkin from comment #4)
> Yeah.... IMO that's the wrong fix though. I think my earlier code was just
> bonkers (which I knew at the time, but was hoping I could get away with).
I think 1ec715ce was fine as then you don't need to make special cases here and
there in the already quite complicated code.
> This is what I'm testing right now:
>
> diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
> index 38b37a6..be87b0a 100644
> --- a/src/glsl/glsl_types.cpp
> +++ b/src/glsl/glsl_types.cpp
> @@ -1077,15 +1077,6 @@ glsl_type::std140_base_alignment(bool row_major) const
> return base_alignment;
> }
>
> - /* A sampler may never occur in a UBO (without bindless of some sort),
> - * however it is convenient to use this alignment function even with
> - * regular uniforms. This allows use of this function on uniform structs
> - * that contain samplers.
> - */
> - if (this->is_sampler()) {
> - return 0;
> - }
> -
> assert(!"not reached");
> return -1;
> }
> diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
> index 799c74b..59adc29 100644
> --- a/src/glsl/link_uniforms.cpp
> +++ b/src/glsl/link_uniforms.cpp
> @@ -547,6 +547,8 @@ private:
> virtual void enter_record(const glsl_type *type, const char *name,
> bool row_major) {
> assert(type->is_record());
> + if (this->ubo_block_index == -1)
> + return;
> this->ubo_byte_offset = glsl_align(
> this->ubo_byte_offset, type->std140_base_alignment(row_major));
> }
> @@ -554,6 +556,8 @@ private:
> virtual void leave_record(const glsl_type *type, const char *name,
> bool row_major) {
> assert(type->is_record());
> + if (this->ubo_block_index == -1)
> + return;
> this->ubo_byte_offset = glsl_align(
> this->ubo_byte_offset, type->std140_base_alignment(row_major));
> }
Yep, that should do it (if nothing else depends on 1ec715ce).
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150323/b95ab824/attachment.html>
More information about the mesa-dev
mailing list