X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdocs%2Fsource%2Ftgsi.rst;h=79d100769185c378fbefd6bf90f5fa820fcfe558;hb=8c9b9aac7d09e65195dca6681d59c10e4ef713d9;hp=9e956586c4c608873c72c5a36c831ea7cce46a2d;hpb=4b0b82770aad9581ee2df2dd01d63c51b28e7656;p=mesa.git diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 9e956586c4c..79d10076918 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -681,6 +681,27 @@ This instruction replicates its result. Unconditional discard. Allowed in fragment shaders only. +.. opcode:: DEMOTE - Demote Invocation to a Helper + + This demotes the current invocation to a helper, but continues + execution (while KILL may or may not terminate the + invocation). After this runs, all the usual helper invocation rules + apply about discarding buffer and render target writes. This is + useful for having accurate derivatives in the other invocations + which have not been demoted. + + Allowed in fragment shaders only. + + +.. opcode:: READ_HELPER - Reads Invocation Helper Status + + This is identical to ``TGSI_SEMANTIC_HELPER_INVOCATION``, except + this will read the current value, which might change as a result of + a ``DEMOTE`` instruction. + + Allowed in fragment shaders only. + + .. opcode:: TXB - Texture Lookup With Bias for cube map array textures and shadow cube maps, the bias value @@ -714,7 +735,8 @@ This instruction replicates its result. Presumably shadow 2d arrays and shadow 3d targets could use this encoding too, but this is not legal. - shadow cube map arrays are neither possible nor required. + if the target is a shadow cube map array, the reference value is in + src1.y. .. math:: @@ -805,7 +827,8 @@ This instruction replicates its result. Presumably shadow 3d / 2d array / cube targets could use this encoding too, but this is not legal. - shadow cube map arrays are neither possible nor required. + if the target is a shadow cube map array, the reference value is in + src1.y. .. math:: @@ -941,14 +964,22 @@ XXX doesn't look like most of the opcodes really belong here. require another CAP is hw can do it natively. For now we lower that before TGSI. + PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE changes the encoding so that component + is stored in the sampler source swizzle x. + .. math:: coord = src0 + (without TGSI_TG4_COMPONENT_IN_SWIZZLE) component = src1 dst = texture\_gather4 (unit, coord, component) + (with TGSI_TG4_COMPONENT_IN_SWIZZLE) + dst = texture\_gather4 (unit, coord) + component is encoded in sampler swizzle. + (with SM5 - cube array shadow) .. math:: @@ -2475,7 +2506,7 @@ after lookup. If per-sample shading is not in effect or the source resource or render target is not multisampled, the result is (0.5, 0.5, undef, undef). - NOTE: no driver has implemented this opcode yet (and no state tracker + NOTE: no driver has implemented this opcode yet (and no gallium frontend emits it). This information is subject to change. .. opcode:: SAMPLE_INFO @@ -2494,7 +2525,7 @@ after lookup. If per-sample shading is not in effect or the source resource or render target is not multisampled, the result is (1, 0, 0, 0). - NOTE: no driver has implemented this opcode yet (and no state tracker + NOTE: no driver has implemented this opcode yet (and no gallium frontend emits it). This information is subject to change. .. opcode:: LOD - level of detail @@ -2592,6 +2623,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 @@ -2659,6 +2715,21 @@ These atomic operations may only be used with 32-bit integer image formats. resource[offset] = dst_x + src_x +.. opcode:: ATOMFADD - Atomic floating point addition + + Syntax: ``ATOMFADD dst, resource, offset, src`` + + Example: ``ATOMFADD TEMP[0], BUFFER[0], TEMP[1], TEMP[2]`` + + The following operation is performed atomically: + +.. math:: + + dst_x = resource[offset] + + resource[offset] = dst_x + src_x + + .. opcode:: ATOMXCHG - Atomic exchange Syntax: ``ATOMXCHG dst, resource, offset, src`` @@ -2794,6 +2865,36 @@ These atomic operations may only be used with 32-bit integer image formats. resource[offset] = (dst_x > src_x ? dst_x : src_x) +.. opcode:: ATOMINC_WRAP - Atomic increment + wrap around + + Syntax: ``ATOMINC_WRAP dst, resource, offset, src`` + + Example: ``ATOMINC_WRAP TEMP[0], BUFFER[0], TEMP[1], TEMP[2]`` + + The following operation is performed atomically: + +.. math:: + + dst_x = resource[offset] + 1 + + resource[offset] = dst_x <= src_x ? dst_x : 0 + + +.. opcode:: ATOMDEC_WRAP - Atomic decrement + wrap around + + Syntax: ``ATOMDEC_WRAP dst, resource, offset, src`` + + Example: ``ATOMDEC_WRAP TEMP[0], BUFFER[0], TEMP[1], TEMP[2]`` + + The following operation is performed atomically: + +.. math:: + + dst_x = resource[offset] + + resource[offset] = (dst_x > 0 && dst_x < src_x) ? dst_x - 1 : 0 + + .. _interlaneopcodes: Inter-lane opcodes @@ -3165,24 +3266,6 @@ tessellation evaluation shaders, respectively. Only the value written in the last vertex processing stage is used. -TGSI_SEMANTIC_CULLDIST -"""""""""""""""""""""" - -Used as distance to plane for performing application-defined culling -of individual primitives against a plane. When components of vertex -elements are given this label, these values are assumed to be a -float32 signed distance to a plane. Primitives will be completely -discarded if the plane distance for all of the vertices in the -primitive are < 0. If a vertex has a cull distance of NaN, that -vertex counts as "out" (as if its < 0); -The limits on both clip and cull distances are bound -by the PIPE_MAX_CLIP_OR_CULL_DISTANCE_COUNT define which defines -the maximum number of components that can be used to hold the -distances and by the PIPE_MAX_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT -which specifies the maximum number of registers which can be -annotated with those semantics. - - TGSI_SEMANTIC_CLIPDIST """""""""""""""""""""" @@ -3443,6 +3526,25 @@ A bit mask of ``bit index < TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e. ``(1 << subgroup_invocation) - 1`` in arbitrary precision arithmetic. +TGSI_SEMANTIC_VIEWPORT_MASK +""""""""""""""""""""""""""" + +A bit mask of viewports to broadcast the current primitive to. See +GL_NV_viewport_array2 for more details. + + +TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL +"""""""""""""""""""""""""""""""""""""" + +A system value equal to the default_outer_level array set via set_tess_level. + + +TGSI_SEMANTIC_TESS_DEFAULT_INNER_LEVEL +"""""""""""""""""""""""""""""""""""""" + +A system value equal to the default_inner_level array set via set_tess_level. + + Declaration Interpolate ^^^^^^^^^^^^^^^^^^^^^^^ @@ -3702,6 +3804,13 @@ When enabled, the input for TGSI_SEMANTIC_SAMPLEMASK will exclude samples that have failed the depth/stencil tests. This is only valid when FS_EARLY_DEPTH_STENCIL is also specified. +LAYER_VIEWPORT_RELATIVE +""""""""""""""""""""""" + +When enabled, the TGSI_SEMATNIC_LAYER output value is relative to the +current viewport. This is especially useful in conjunction with +TGSI_SEMANTIC_VIEWPORT_MASK. + Texture Sampling and Texture Formats ------------------------------------