gallium: add new SAMP2HND and IMG2HND opcodes
authorRhys Perry <pendingchaos02@gmail.com>
Wed, 6 Jun 2018 19:55:03 +0000 (20:55 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 1 Aug 2018 04:10:00 +0000 (00:10 -0400)
This commit does not add support for the opcodes in gallivm or tgsi_to_nir.c

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/tgsi/tgsi_info.c
src/gallium/auxiliary/tgsi/tgsi_info_opcodes.h
src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
src/gallium/docs/source/tgsi.rst
src/gallium/include/pipe/p_shader_tokens.h

index 4aa658785cfedd80aa48827d41378b22d9beb160..bbe1a21e432477e1caf4c273b1125d2ac5a836e6 100644 (file)
@@ -153,6 +153,8 @@ tgsi_opcode_infer_type(enum tgsi_opcode opcode)
    case TGSI_OPCODE_POPC:
    case TGSI_OPCODE_LSB:
    case TGSI_OPCODE_UMSB:
+   case TGSI_OPCODE_IMG2HND:
+   case TGSI_OPCODE_SAMP2HND:
       return TGSI_TYPE_UNSIGNED;
    case TGSI_OPCODE_ARL:
    case TGSI_OPCODE_ARR:
index 1b2803cf3fe669c669089b0605d1b959cba4cdb7..c3787c2fbb25e62f569fca0e06b71567c7020dc3 100644 (file)
@@ -162,8 +162,8 @@ OPCODE(1, 1, COMP, IABS)
 OPCODE(1, 1, COMP, ISSG)
 OPCODE(1, 2, OTHR, LOAD)
 OPCODE(1, 2, OTHR, STORE, .is_store = 1)
-OPCODE_GAP(163) /* removed */
-OPCODE_GAP(164) /* removed */
+OPCODE(1, 1, OTHR, IMG2HND)
+OPCODE(1, 1, OTHR, SAMP2HND, .is_tex = 1)
 OPCODE_GAP(165) /* removed */
 OPCODE(0, 0, OTHR, BARRIER)
 
index 9a13fa6684a4e09d8c5e4c48774268f14c11cc19..54a1ee15b68aa5b73c7d18c4dc6bc99bca4ac244 100644 (file)
@@ -160,6 +160,9 @@ OP13(UCMP)
 OP11(IABS)
 OP11(ISSG)
 
+OP11(IMG2HND)
+OP11(SAMP2HND)
+
 OP12(IMUL_HI)
 OP12(UMUL_HI)
 
index 9e956586c4c608873c72c5a36c831ea7cce46a2d..7d4ebb626745d3cc0e449c959526d8c219005341 100644 (file)
@@ -2592,6 +2592,31 @@ For these opcodes, the resource can be a BUFFER, IMAGE, or MEMORY.
   barrier in between.
 
 
+.. _bindlessopcodes:
+
+Bindless Opcodes
+^^^^^^^^^^^^^^^^
+
+These opcodes are for working with bindless sampler or image handles and
+require PIPE_CAP_BINDLESS_TEXTURE.
+
+.. opcode:: IMG2HND - Get a bindless handle for a image
+
+  Syntax: ``IMG2HND dst, image``
+
+  Example: ``IMG2HND TEMP[0], IMAGE[0]``
+
+  Sets 'dst' to a bindless handle for 'image'.
+
+.. opcode:: SAMP2HND - Get a bindless handle for a sampler
+
+  Syntax: ``SAMP2HND dst, sampler``
+
+  Example: ``SAMP2HND TEMP[0], SAMP[0]``
+
+  Sets 'dst' to a bindless handle for 'sampler'.
+
+
 .. _threadsyncopcodes:
 
 Inter-thread synchronization opcodes
index f4e45c256086e0dd23ee762dc1994f3d0a07469e..08ed08156e7be9e002193b4e33d53ecff1b1c541 100644 (file)
@@ -506,6 +506,8 @@ enum tgsi_opcode {
 
    TGSI_OPCODE_LOAD               = 161,
    TGSI_OPCODE_STORE              = 162,
+   TGSI_OPCODE_IMG2HND            = 163,
+   TGSI_OPCODE_SAMP2HND           = 164,
    /* gap */
    TGSI_OPCODE_BARRIER            = 166,