[Mesa-dev] [PATCH 2/5] glsl: Optionally lower TES gl_PatchVerticesIn to a uniform.
Kenneth Graunke
kenneth at whitecape.org
Thu Jun 9 03:50:34 UTC 2016
On Wednesday, June 8, 2016 7:45:16 PM PDT Alejandro PiƱeiro wrote:
> On 02/06/16 23:09, Kenneth Graunke wrote:
> > i965 has no special hardware for this, so we need to pass this value in
> > as a uniform (unless the TES is linked against a TCS, in which case the
> > linker can just replace this with a constant).
> >
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > Cc: mesa-stable at lists.freedesktop.org
> > ---
> > src/compiler/glsl/linker.cpp | 20 +++++++++++++++++---
> > src/mesa/main/mtypes.h | 1 +
> > src/mesa/program/prog_statevars.c | 7 +++++++
> > src/mesa/program/prog_statevars.h | 1 +
> > 4 files changed, 26 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
> > index 9e65590..7c7dbfe 100644
> > --- a/src/compiler/glsl/linker.cpp
> > +++ b/src/compiler/glsl/linker.cpp
> > @@ -72,6 +72,7 @@
> > #include "ir.h"
> > #include "program.h"
> > #include "program/hash_table.h"
> > +#include "program/prog_instruction.h"
> > #include "linker.h"
> > #include "link_varyings.h"
> > #include "ir_optimization.h"
> > @@ -2485,7 +2486,7 @@ resize_tes_inputs(struct gl_context *ctx,
> > ir->accept(&input_resize_visitor);
> > }
> >
> > - if (tcs) {
> > + if (tcs || ctx->Const.LowerTESPatchVerticesIn) {
> > /* Convert the gl_PatchVerticesIn system value into a constant, since
> > * the value is known at this point.
>
> Now this comment became obsolete as can be converted to a constant or a
> uniform. Perhaps it would be better to just remove the comment.
>
> > */
> > @@ -2494,9 +2495,22 @@ resize_tes_inputs(struct gl_context *ctx,
> > if (var && var->data.mode == ir_var_system_value &&
> > var->data.location == SYSTEM_VALUE_VERTICES_IN) {
> > void *mem_ctx = ralloc_parent(var);
> > - var->data.mode = ir_var_auto;
> > var->data.location = 0;
> > - var->constant_value = new(mem_ctx) ir_constant(num_vertices);
> > + var->data.explicit_location = false;
>
> Nitpick: With this change you are also changing slightly the option that
> was present before (use a constant) in addition to add the option to
> lower to an uniform. Not sure if it is worth to be mentioned though,
> feel free to ignore.
I am? Before this patch, there was no option. If the program being
linked contained a TCS, we would turn it into a constant. If not, we
would leave it as a system value.
With this patch, my intention was to do the same behavior when no
options were set. If ctx->Const.LowerTESPatchVerticesIn is set, we
turn it into a constant if there's a linked TCS (as before), and turn
it into a uniform otherwise (instead of a system value).
Did I miss something?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160608/395b602c/attachment.sig>
More information about the mesa-dev
mailing list