Инструменты пользователя

Инструменты сайта


gte

Это старая версия документа!


GTE

GTE (Geometry Transformation Engine) - это сопроцессор 2 (COP2), выполняющий векторно-матричные операции. Он не имеет портов, отображенных в память CPU, и полностью управляется специальными опкодами.

Перед использованием GTE должен быть включен. Для этого нужно установить бит 30 в статусном регистре COP0:

mfc0   $8, $12             # t0 = SR
ori    $8, $8, 0x40000000  # Set bit 30 in t0 (CU2)
mtc0   $8, $12             # SR = t0
nop

Инструкции

  • mtc2 $r, $d - Move To Coprocessor 2. Записывает значение из регистра общего назначения в регистр данных GTE. $d = $r
  • mfc2 $r, $d - Move From Coprocessor 2. Читает значение из регистра данных GTE в регистр общего назначения. $r = $d
  • ctc2 $r, $c - записывает значение из регистра общего назначения в контрольный регистр GTE. $c = $r
  • cfc2 $r, $c - читает значение из контрольного регистра GTE в регистр общего назначения. $r = $c
  • lwc2 $d, imm(base) - загружает значение из памяти в регистр данных GTE.
  • swc2 $d, imm(base) - выгружает значение из регистра данных GTE в память.
  • cop2 imm - выполняет команду GTE.

Загрузка и выгрузка регистров GTE имеют задержку в 2 инструкции для любых операций, которые используют эти регистры.

Регистры

GTE имеет две группы регистров - регистры данных и контрольные регистры. Регистры данных используются для передачи в сопроцессор входных векторов (позиций вершин, значений цвета). Контрольные регистры предназначены для передачи во сопроцессор матриц трансформации и параметров функций. Все регистры 32-битные, но вещественные значения чаще всего 16-битные с фиксированной запятой (Q3.12 или Q7.8). Многие регистры принимают два упакованных 16-битных значения в верхнем и нижнем полусловах.

Регистры данных (достп через `mfc2` / `mtc2`):

  • `$0` - VXY0 - Vector0 X and Y, 2 packed signed 16-bit integers
  • `$1` - VZ0 - Vector0 Z, signed 16-bit integer
  • `$2` - VXY1 - Vector1 X and Y, 2 packed signed 16-bit integers
  • `$3` - VZ1 - Vector1 Z, signed 16-bit integer
  • `$4` - VXY2 - Vector2 X and Y, 2 packed signed 16-bit integers
  • `$5` - VZ2 - Vector2 Z, signed 16-bit integer
  • `$6` - RGBC - Color/code value, 4 packed unsigned bytes
  • `$7` - OTZ - Average Z value (for Ordering Table), unsigned 16-bit integer
  • `$8` - IR0 - 16-bit Accumulator (Interpolate), signed 16-bit integer
  • `$9` - IR1 - 16-bit Accumulator (Vector X), signed 16-bit integer
  • `$10` - IR2 - 16-bit Accumulator (Vector Y), signed 16-bit integer
  • `$11` - IR3 - 16-bit Accumulator (Vector Z), signed 16-bit integer
  • `$12` - SXY0 - Screen XY-coordinate FIFO stage1, 2 packed signed 16-bit integers
  • `$13` - SXY1 - Screen XY-coordinate FIFO stage2, 2 packed signed 16-bit integers
  • `$14` - SXY2 - Screen XY-coordinate FIFO stage3, 2 packed signed 16-bit integers
  • `$15` - SXYP - Screen XY-coordinate FIFO stage4, 2 packed signed 16-bit integers
  • `$16` - SZ0 - Screen Z-coordinate FIFO stage1, unsigned 16-bit integer
  • `$17` - SZ1 - Screen Z-coordinate FIFO stage2, unsigned 16-bit integer
  • `$18` - SZ2 - Screen Z-coordinate FIFO stage3, unsigned 16-bit integer
  • `$19` - SZ3 - Screen Z-coordinate FIFO stage4, unsigned 16-bit integer
  • `$20` - RGB0 - Color CRGB-code/color FIFO stage1, 4 packed unsigned bytes
  • `$21` - RGB1 - Color CRGB-code/color FIFO stage2, 4 packed unsigned bytes
  • `$22` - RGB2 - Color CRGB-code/color FIFO stage3, 4 packed unsigned bytes
  • `$23` - undefined/prohibited
  • `$24` - MAC0 - 32bit Maths Accumulators (Value), signed 32-bit integer
  • `$25` - MAC1 - 32bit Maths Accumulators (Vector X), signed 32-bit integer
  • `$26` - MAC2 - 32bit Maths Accumulators (Vector Y), signed 32-bit integer
  • `$27` - MAC3 - 32bit Maths Accumulators (Vector Z), signed 32-bit integer
  • `$28` - IRGB - Convert RGB Color (48bit vs 15bit), unsigned 16-bit integer
  • `$29` - ORGB -
  • `$30` - LZCS - Count Leading-Zeroes/Ones (sign bits), 2 packed signed 32-bit integers
  • `$31` - LZCR - Count Leading-Zeroes/Ones (sign bits), 2 packed signed 32-bit integers

Команды

TODO

gte.1791485670.txt.gz · Последнее изменение: — gecko

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki