[Mesa-dev] [PATCH v2 14/23] glsl: include streamId when reading/printing emit-vertex and end-primitive IR.
Ian Romanick
idr at freedesktop.org
Wed Jun 18 13:42:47 PDT 2014
Patches 14, 15, and 16 are
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
On 06/18/2014 02:51 AM, Iago Toral Quiroga wrote:
> ---
> src/glsl/ir_print_visitor.cpp | 13 +++++++++----
> src/glsl/ir_reader.cpp | 22 ++++++++++++++++++----
> 2 files changed, 27 insertions(+), 8 deletions(-)
>
> diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
> index c4a6f9c..dcb53b3 100644
> --- a/src/glsl/ir_print_visitor.cpp
> +++ b/src/glsl/ir_print_visitor.cpp
> @@ -560,13 +560,18 @@ ir_print_visitor::visit(ir_loop_jump *ir)
> }
>
> void
> -ir_print_visitor::visit(ir_emit_vertex *)
> +ir_print_visitor::visit(ir_emit_vertex *ir)
> {
> - fprintf(f, "(emit-vertex)");
> + fprintf(f, "(emit-vertex ");
> + ir->stream->accept(this);
> + fprintf(f, ")\n");
> }
>
> void
> -ir_print_visitor::visit(ir_end_primitive *)
> +ir_print_visitor::visit(ir_end_primitive *ir)
> {
> - fprintf(f, "(end-primitive)");
> + fprintf(f, "(end-primitive ");
> + ir->stream->accept(this);
> + fprintf(f, ")\n");
> +
> }
> diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp
> index 28923f3..ba166eb 100644
> --- a/src/glsl/ir_reader.cpp
> +++ b/src/glsl/ir_reader.cpp
> @@ -1109,10 +1109,17 @@ ir_reader::read_texture(s_expression *expr)
> ir_emit_vertex *
> ir_reader::read_emit_vertex(s_expression *expr)
> {
> - s_pattern pat[] = { "emit-vertex" };
> + s_expression *s_stream = NULL;
> +
> + s_pattern pat[] = { "emit-vertex", s_stream };
>
> if (MATCH(expr, pat)) {
> - return new(mem_ctx) ir_emit_vertex();
> + ir_rvalue *stream = read_dereference(s_stream);
> + if (stream == NULL) {
> + ir_read_error(NULL, "when reading stream info in emit-vertex");
> + return NULL;
> + }
> + return new(mem_ctx) ir_emit_vertex(stream);
> }
> ir_read_error(NULL, "when reading emit-vertex");
> return NULL;
> @@ -1121,10 +1128,17 @@ ir_reader::read_emit_vertex(s_expression *expr)
> ir_end_primitive *
> ir_reader::read_end_primitive(s_expression *expr)
> {
> - s_pattern pat[] = { "end-primitive" };
> + s_expression *s_stream = NULL;
> +
> + s_pattern pat[] = { "end-primitive", s_stream };
>
> if (MATCH(expr, pat)) {
> - return new(mem_ctx) ir_end_primitive();
> + ir_rvalue *stream = read_dereference(s_stream);
> + if (stream == NULL) {
> + ir_read_error(NULL, "when reading stream info in end-primitive");
> + return NULL;
> + }
> + return new(mem_ctx) ir_end_primitive(stream);
> }
> ir_read_error(NULL, "when reading end-primitive");
> return NULL;
>
More information about the mesa-dev
mailing list