Boxis R700 User Manual Page 45

  • Download
  • Add to my manuals
  • Print
  • Page
    / 392
  • Table of contents
  • BOOKMARKS
  • Rated. / 5. Based on customer reviews
Page view 44
ATI R700 Technology
Import and Export Instructions 3-9
Copyright © 2009 Advanced Micro Devices, Inc. All rights reserved.
reduction buffers, and ELEM_SIZE = 0 (doubleword) is intended for stream-out
and ring buffers.
The memory address is based on the value in the ARRAY_BASE field (see
Table 3.3, on page 3-8). If the TYPE field is set to EXPORT_*_IND
(use_index == 1), the value contained in the register specified by the INDEX_GPR
field, multiplied by (ELEM_SIZE + 1), is added to this base. The final equation for
the first address in memory to write to (in doublewords) is:
first_mem = (ARRAY_BASE + use_index * GPR[INDEX_GPR]) * (ELEM_SIZE + 1)
The ARRAY_SIZE field specifies a point at which the burst is clamped; no memory
is written past (ARRAY_BASE + ARRAY_SIZE) * (ELEM_SIZE + 1) doublewords. The
exact units of ARRAY_BASE and ARRAY_SIZE differ depending on the memory type;
for scratch and reduction buffers, both are in units of four doublewords (128 bits);
for stream and ring buffers, both are in units of one doubleword (32 bits).
Indexed GPRs can stray out of bounds. If the index takes a GPR address out of
bounds, then the rules specified for ALU GPR writes apply. See Section 4.6.3,
“Out-of-Bounds Addresses,” page 4-7.
The R770 family supports a general memory export in which shader threads can
write to arbitrary addresses within a specified memory range. This allows array-
based and scatter access to memory. All threads share a common memory
buffer, and there is no synchronization or ordering of writes between threads. A
thread can read data that it has written and be guaranteed that previous writes
from this thread have completed; however, a flush must take place before
reading data from the memory-export area that another thread has written.
Exports can only be written to a linear memory buffer (no tiling).
Each thread is responsible for determining the addresses it accesses.
The MEM_EXPORT instruction outputs data along with a unique dword address per
pixel from a GPR, plus the global export-memory base address. Data is from one
to four DWORDs.
3.4.3 Memory Reads
All memory reads use one of the following instructions:
MEM_SCRATCH — Scratch buffer.
MEM_REDUCTION — Reduction buffer.
MEM_EXPORT — Gather reads.
There is an element mask for reads from memory. Arbitrary swizzle is available.
These instructions can be used by any program type.
There is one scratch buffer available for reads per program type (four scratch
buffers in total). There is only one reduction buffer available; any program type
can use it, but only one program can use it at a time.
Page view 44
1 2 ... 40 41 42 43 44 45 46 47 48 49 50 ... 391 392

Comments to this Manuals

No comments