mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
nir: Define AGX intrinsics for local pixel access
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19871>
This commit is contained in:
parent
7befecf500
commit
940b871dba
1 changed files with 42 additions and 0 deletions
|
|
@ -1549,6 +1549,48 @@ store("tlb_sample_color_v3d", [1], [BASE, COMPONENT, SRC_TYPE], [])
|
|||
# the target framebuffer
|
||||
intrinsic("load_fb_layers_v3d", dest_comp=1, flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
|
||||
# Load/store a pixel in local memory. This operation is formatted, with
|
||||
# conversion between the specified format and the implied register format of the
|
||||
# source/destination (for store/loads respectively). This mostly matters for
|
||||
# converting between floating-point registers and normalized memory formats.
|
||||
#
|
||||
# The format is the pipe_format of the local memory (the source), see
|
||||
# agx_internal_formats.h for the supported list.
|
||||
#
|
||||
# Logically, this loads/stores a single sample. The sample to load is
|
||||
# specified by the bitfield sample mask source. However, for stores multiple
|
||||
# bits of the sample mask may be set, which will replicate the value. For
|
||||
# pixel rate shading, use 0xFF as the mask to store to all samples regardless of
|
||||
# the sample count.
|
||||
#
|
||||
# All calculations are relative to an immediate byte offset into local
|
||||
# memory, which acts relative to the start of the sample. These instructions
|
||||
# logically access:
|
||||
#
|
||||
# (((((y * tile_width) + x) * nr_samples) + sample) * sample_stride) + offset
|
||||
#
|
||||
# src[] = { sample mask }
|
||||
# base = offset
|
||||
load("local_pixel_agx", [1], [BASE, FORMAT], [CAN_REORDER, CAN_ELIMINATE])
|
||||
# src[] = { value, sample mask }
|
||||
# base = offset
|
||||
store("local_pixel_agx", [1], [BASE, WRITE_MASK, FORMAT], [CAN_REORDER])
|
||||
|
||||
# Store a block from local memory into a bound image. Used to write out render
|
||||
# targets within the end-of-tile shader, although it is valid in general compute
|
||||
# kernels.
|
||||
#
|
||||
# The format is the pipe_format of the local memory (the source), see
|
||||
# agx_internal_formats.h for the supported list. The image format is
|
||||
# specified in the PBE descriptor.
|
||||
#
|
||||
# The image dimension is used to distinguish multisampled images from
|
||||
# non-multisampled images. It must be 2D or MS.
|
||||
#
|
||||
# src[] = { image index, logical offset within shared memory }
|
||||
intrinsic("block_image_store_agx", [1, 1], bit_sizes=[32, 16],
|
||||
indices=[FORMAT, IMAGE_DIM], flags=[CAN_REORDER])
|
||||
|
||||
# Logical complement of load_front_face, mapping to an AGX system value
|
||||
system_value("back_face_agx", 1, bit_sizes=[1, 32])
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue