Mesa (master): nv50/ir/nir: handle image atomic inc and dec

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 18 15:39:52 UTC 2020


Module: Mesa
Branch: master
Commit: c0bbca5c23026675a1bc79dd690de9b253299d3f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0bbca5c23026675a1bc79dd690de9b253299d3f

Author: Karol Herbst <kherbst at redhat.com>
Date:   Mon Jun 15 18:30:39 2020 +0200

nv50/ir/nir: handle image atomic inc and dec

Signed-off-by: Karol Herbst <kherbst at redhat.com>
Reviewed-by: Ben Skeggs <bskeggs at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5480>

---

 .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp       | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

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 85168915cab..548acc642c1 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
@@ -514,6 +514,10 @@ Converter::getOperation(nir_intrinsic_op op)
    case nir_intrinsic_image_atomic_or:
    case nir_intrinsic_bindless_image_atomic_xor:
    case nir_intrinsic_image_atomic_xor:
+   case nir_intrinsic_bindless_image_atomic_inc_wrap:
+   case nir_intrinsic_image_atomic_inc_wrap:
+   case nir_intrinsic_bindless_image_atomic_dec_wrap:
+   case nir_intrinsic_image_atomic_dec_wrap:
       return OP_SUREDP;
    case nir_intrinsic_bindless_image_load:
    case nir_intrinsic_image_load:
@@ -623,6 +627,12 @@ Converter::getSubOp(nir_intrinsic_op op)
    case nir_intrinsic_shared_atomic_xor:
    case nir_intrinsic_ssbo_atomic_xor:
       return  NV50_IR_SUBOP_ATOM_XOR;
+   case nir_intrinsic_bindless_image_atomic_inc_wrap:
+   case nir_intrinsic_image_atomic_inc_wrap:
+      return NV50_IR_SUBOP_ATOM_INC;
+   case nir_intrinsic_bindless_image_atomic_dec_wrap:
+   case nir_intrinsic_image_atomic_dec_wrap:
+      return NV50_IR_SUBOP_ATOM_DEC;
 
    case nir_intrinsic_group_memory_barrier:
    case nir_intrinsic_memory_barrier:
@@ -2090,6 +2100,8 @@ Converter::visit(nir_intrinsic_instr *insn)
    case nir_intrinsic_bindless_image_atomic_umin:
    case nir_intrinsic_bindless_image_atomic_or:
    case nir_intrinsic_bindless_image_atomic_xor:
+   case nir_intrinsic_bindless_image_atomic_inc_wrap:
+   case nir_intrinsic_bindless_image_atomic_dec_wrap:
    case nir_intrinsic_bindless_image_load:
    case nir_intrinsic_bindless_image_samples:
    case nir_intrinsic_bindless_image_size:
@@ -2104,6 +2116,8 @@ Converter::visit(nir_intrinsic_instr *insn)
    case nir_intrinsic_image_atomic_umin:
    case nir_intrinsic_image_atomic_or:
    case nir_intrinsic_image_atomic_xor:
+   case nir_intrinsic_image_atomic_inc_wrap:
+   case nir_intrinsic_image_atomic_dec_wrap:
    case nir_intrinsic_image_load:
    case nir_intrinsic_image_samples:
    case nir_intrinsic_image_size:
@@ -2139,6 +2153,8 @@ Converter::visit(nir_intrinsic_instr *insn)
       case nir_intrinsic_bindless_image_atomic_umin:
       case nir_intrinsic_bindless_image_atomic_or:
       case nir_intrinsic_bindless_image_atomic_xor:
+      case nir_intrinsic_bindless_image_atomic_inc_wrap:
+      case nir_intrinsic_bindless_image_atomic_dec_wrap:
          ty = getDType(insn);
          bindless = true;
          info->io.globalAccess |= 0x2;
@@ -2154,6 +2170,8 @@ Converter::visit(nir_intrinsic_instr *insn)
       case nir_intrinsic_image_atomic_umin:
       case nir_intrinsic_image_atomic_or:
       case nir_intrinsic_image_atomic_xor:
+      case nir_intrinsic_image_atomic_inc_wrap:
+      case nir_intrinsic_image_atomic_dec_wrap:
          ty = getDType(insn);
          bindless = false;
          info->io.globalAccess |= 0x2;



More information about the mesa-commit mailing list