[Mesa-dev] [PATCH 33/34] nv50/ir/nir: handle user clip planes for each emitted vertex
Ilia Mirkin
imirkin at alum.mit.edu
Tue Mar 12 00:09:22 UTC 2019
On Mon, Mar 11, 2019 at 8:05 PM Karol Herbst <kherbst at redhat.com> wrote:
>
> v9: convert to C++ style comments
> Signed-off-by: Karol Herbst <kherbst at redhat.com>
> ---
> src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
> index 627848a457f..fdc6eaf759a 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
> @@ -1561,7 +1561,7 @@ Converter::visit(nir_function *function)
> bb->cfg.attach(&exit->cfg, Graph::Edge::TREE);
> setPosition(exit, true);
>
> - if (info->io.genUserClip > 0)
> + if (prog->getType() == Program::TYPE_VERTEX && info->io.genUserClip > 0)
What about TES? Did you mean && !TYPE_GEOMETRY perhaps?
> handleUserClipPlanes();
>
> // TODO: for non main function this needs to be a OP_RETURN
> @@ -1889,6 +1889,7 @@ Converter::visit(nir_intrinsic_instr *insn)
> }
> break;
> }
> + case Program::TYPE_GEOMETRY:
> case Program::TYPE_VERTEX: {
> if (info->io.genUserClip > 0 && idx == clipVertexOutput) {
> mkMov(clipVtx[i], src);
> @@ -2187,6 +2188,9 @@ Converter::visit(nir_intrinsic_instr *insn)
> break;
> }
> case nir_intrinsic_emit_vertex:
> + if (info->io.genUserClip > 0)
> + handleUserClipPlanes();
> + // fallthrough
> case nir_intrinsic_end_primitive: {
> uint32_t idx = nir_intrinsic_stream_id(insn);
> mkOp1(getOperation(op), TYPE_U32, NULL, mkImm(idx))->fixed = 1;
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list