On 07.12.2016 02:07, Marek Olšák wrote:
On Tue, Dec 6, 2016 at 11:48 AM, Nicolai Hähnle <[email protected]> wrote:
From: Nicolai Hähnle <[email protected]>

This is for geometry shader outputs. Without it, drivers have no way of
knowing which stream each output is intended for, and have to
conservatively write all outputs to all streams.

Separate stream numbers for each component are required due to output
packing.
---
 src/compiler/glsl/ir_print_visitor.cpp     |  4 +--
 src/gallium/auxiliary/tgsi/tgsi_build.c    | 18 +++++++++--
 src/gallium/auxiliary/tgsi/tgsi_dump.c     | 13 ++++++++
 src/gallium/auxiliary/tgsi/tgsi_text.c     | 48 ++++++++++++++++++++++++++++++
 src/gallium/include/pipe/p_shader_tokens.h |  5 +++-
 5 files changed, 83 insertions(+), 5 deletions(-)

diff --git a/src/compiler/glsl/ir_print_visitor.cpp 
b/src/compiler/glsl/ir_print_visitor.cpp
index 2b77c14..d401426 100644
--- a/src/compiler/glsl/ir_print_visitor.cpp
+++ b/src/compiler/glsl/ir_print_visitor.cpp
@@ -173,26 +173,26 @@ void ir_print_visitor::visit(ir_variable *ir)
    if (ir->data.location != -1)
       snprintf(loc, sizeof(loc), "location=%i ", ir->data.location);

    char component[32] = {0};
    if (ir->data.explicit_component)
       snprintf(component, sizeof(component), "component=%i ", 
ir->data.location_frac);

    char stream[32] = {0};
    if (ir->data.stream & (1u << 31)) {
       if (ir->data.stream & ~(1u << 31)) {
-         snprintf(stream, sizeof(stream), "stream(%u,%u,%u,%u)",
+         snprintf(stream, sizeof(stream), "stream(%u,%u,%u,%u) ",
                   ir->data.stream & 3, (ir->data.stream >> 2) & 3,
                   (ir->data.stream >> 4) & 3, (ir->data.stream >> 6) & 3);
       }
    } else if (ir->data.stream) {
-      snprintf(stream, sizeof(stream), "stream%u", ir->data.stream);
+      snprintf(stream, sizeof(stream), "stream%u ", ir->data.stream);
    }

    const char *const cent = (ir->data.centroid) ? "centroid " : "";
    const char *const samp = (ir->data.sample) ? "sample " : "";
    const char *const patc = (ir->data.patch) ? "patch " : "";
    const char *const inv = (ir->data.invariant) ? "invariant " : "";
    const char *const prec = (ir->data.precise) ? "precise " : "";
    const char *const mode[] = { "", "uniform ", "shader_storage ",
                                 "shader_shared ", "shader_in ", "shader_out ",
                                 "in ", "out ", "inout ",

Unrelated GLSL changes.

Right, this should have been in patch #1 but I messed up the rebasing somehow. I'll fix it.


Marek

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to