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

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


gpu

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
gpu [2026/10/09 16:40] – geckogpu [2026/10/15 15:02] (текущий) – gecko
Строка 1: Строка 1:
 ====== GPU ====== ====== GPU ======
  
-Графический процессор PlayStation (GPU) - это специализированный 32-битный чип от Sony, отвечающий за отрисовку графических примитивов (полигонов, прямоугольников и отрезков). Имеет 1 MiB видеопамяти ([[VRAM]]) под фреймбуфер и текстуры, 2 KiB текстурного кэша.+Графический процессор PlayStation (GPU) - это специализированный 32-битный чип от Sony, отвечающий за отрисовку графических примитивов (полигонов, прямоугольников и отрезков), а также за управление видеопамятью. Имеет 1 MiB видеопамяти ([[VRAM]]) под фреймбуфер и текстуры, 2 KiB текстурного кэша.
  
 У GPU нет фиксированного набора разрешений. Возможные разрешения определяются стандартами PAL/NTSC и пятью доступными делителями частоты видеосигнала. Типичные разрешения имеют ширину 256, 320, 368, 384, 512 или 640 пикселей и высоту 224, 240, 256, 480 или 512 строк. У GPU нет фиксированного набора разрешений. Возможные разрешения определяются стандартами PAL/NTSC и пятью доступными делителями частоты видеосигнала. Типичные разрешения имеют ширину 256, 320, 368, 384, 512 или 640 пикселей и высоту 224, 240, 256, 480 или 512 строк.
  
-GPU управляется посредством команд, которые представляют собой 32-битные слова. Многословная команда (пакет) начинается с заголовка, состоящего из 8-битного идентификатора команды (в старших битах) и 24-битного параметра (в младших битах).+===== Полупрозрачность и смешивание ===== 
 + 
 +GPU аппаратно поддерживает четыре режима смешивания цветов (где A - цвет пикселя, который уже находится в буфере кадра, B - цвет нового рисуемого пикселя): 
 +  * Режим 0 - полупрозрачное смешивание: 50/50: 0.5 * A + 0.5 * B 
 +  * Режим 1 - аддитивное смешивание: A + B 
 +  * Режим 2 - субтрактивное смешивание: A - B 
 +  * Режим 3 - полный цвет фона плюс четверть нового цвета: A + 0.25 * B 
 + 
 +Альфа-канал (попиксельная полупрозрачность) не поддерживается. В текстуре можно задать лишь бит прозрачности, который либо включает смешивание, либо выключает. 
 + 
 +===== Дизеринг ===== 
 + 
 +При включенном дизеринге GPU чередует соседние цвета для повышения визуального качества градиентов. Вся математика внутренне осуществляется в 24-битном режиме, и только результат записывается в 16-битном. Если дизеринг отключен, GPU просто отбрасывает нижние 3 бита цвета. 
 + 
 +===== Текстурный кэш ===== 
 + 
 +GPU оснащен текстурным кэшем в 2 KiB. Для 4-битного цветового режима это 64x64 пикселя, для 8-битного - 32x64, для 16-битного - 32x32. 
 + 
 +===== Кодирование команд ===== 
 + 
 +GPU управляется посредством команд, которые представляют собой 32-битные слова. Команда, состоящая из нескольких слов, называется пакетом (packet). Первое слово любой команды - заголовок, состоящий из 8-битного идентификатора команды (в старших битах) и 24-битного параметра (в младших битах).
  
 Заголовок команды кодируется по следующей схеме: Заголовок команды кодируется по следующей схеме:
Строка 16: Строка 36:
   * Биты 23..0: 24-битный цвет (0x00RRGGBB), который используется для заливки или модуляции, в зависимости от режима текстурирования и освещенности.   * Биты 23..0: 24-битный цвет (0x00RRGGBB), который используется для заливки или модуляции, в зависимости от режима текстурирования и освещенности.
  
-За заголовком могут следовать данные, состоящие из последующих 32-битных слов-аргументов (например, координаты или цвета).+За заголовком могут следовать данные, состоящие из упакованных в 32-битные слова параметров (например, координаты или цвета).
  
-Команды передаются через [[MMIO|порты ввода-вывода]] или посредством [[DMA]]. При передаче через порт, переданные слова накапливаются в 64-байтном FIFO-буфере (командной очереди). GPU считывает данные из FIFO и начинает выполнение команды автоматически, как только получает минимально необходимое для нее количество слов. Если передача прервана до получения всех слов, GPU останется в состоянии ожидания данных. Отправка в GP1 команды 0x01000000 позволяет принудительно сбросить очередь, чтобы начать новый цикл передачи.+Для рисования текстурированного полигона в команду GPU отправляется значение tpage, 16-битное поле, которое кодирует положение страницы и параметры ее использования: 
 + 
 +  * Биты 0-3: pageX, горизонтальный индекс текстурной страницы (0-15 включительно) 
 +  * Бит 4: pageY, вертикальный индекс текстурной страницы (0 или 1) 
 +  * Биты 5-6: ABR, режим полупрозрачности (0, 1, 2 или 3) 
 +  * Биты 7-8: TP, цветовой режим текстуры (0, 1, или 2) 
 + 
 +===== Отправка команд ===== 
 + 
 +Команды передаются через [[MMIO|порты ввода-вывода]] или посредством 2-го канала [[DMA]]. При передаче через порт, переданные слова накапливаются в 64-байтном FIFO-буфере (командной очереди). GPU считывает данные из FIFO и начинает выполнение команды автоматически, как только получает минимально необходимое для нее количество слов. Если передача прервана до получения всех слов, GPU останется в состоянии ожидания данных. Отправка в GP1 команды 0x01000000 позволяет принудительно сбросить очередь, чтобы начать новый цикл передачи.
  
 Порты ввода-вывода: Порты ввода-вывода:
Строка 26: Строка 55:
   * GPUSTAT (1F801814h; BF801814h в KSEG1): чтение из этого порта позволяет проверить, готовы ли данные для чтения из GPUREAD (бит 27)   * GPUSTAT (1F801814h; BF801814h в KSEG1): чтение из этого порта позволяет проверить, готовы ли данные для чтения из GPUREAD (бит 27)
  
-===== Прозрачность и смешивание ===== +===== Список команд GP0 =====
- +
-GPU аппаратно поддерживает четыре режима смешивания цветов (где A - цвет пикселя, который уже находится в буфере кадра, B - цвет нового рисуемого пикселя): +
-  * Режим 0 - полупрозрачное смешивание: 50/50: 0.5 * A + 0.5 * B +
-  * Режим 1 - аддитивное смешивание: A + B +
-  * Режим 2 - субтрактивное смешивание: A - B +
-  * Режим 3 - четверть нового цвета плюс полный цвет фона: A + 0.25 * B +
- +
-Попиксельное смешивание не поддерживается. В текстуре можно задать лишь бит прозрачности, который ее либо включает, либо выключает. +
- +
-===== Текстурный кэш ===== +
- +
-GPU оснащен текстурным кэшем в 2 KiB. Для 4-битного цветового режима это 64x64 пикселя, для 8-битного - 32x64, для 16-битного - 32x32. +
- +
-===== Команды GP0 =====+
  
 ==== Доступ к видеопамяти ==== ==== Доступ к видеопамяти ====
Строка 90: Строка 105:
   * Слово 3 = Палитра и текстурные координаты 1 (ClutYYXX)   * Слово 3 = Палитра и текстурные координаты 1 (ClutYYXX)
   * Слово 4 = Вершина 2 (YYYYXXXX)   * Слово 4 = Вершина 2 (YYYYXXXX)
-  * Слово 5 = Текстурная страница и текстурные координаты 2 (PageYYXX)+  * Слово 5 = tpage и текстурные координаты 2 (tpageYYXX)
   * Слово 6 = Вершина 3 (YYYYXXXX)   * Слово 6 = Вершина 3 (YYYYXXXX)
   * Слово 7 = Текстурные координаты 3 (0000YYXX)   * Слово 7 = Текстурные координаты 3 (0000YYXX)
Строка 124: Строка 139:
   * Слово 4 = Цвет 2 (00BBGGRR)   * Слово 4 = Цвет 2 (00BBGGRR)
   * Слово 5 = Вершина 2 (YYYYXXXX)   * Слово 5 = Вершина 2 (YYYYXXXX)
-  * Слово 6 = Текстурная страница и текстурные координаты 2 (PageYYXX)+  * Слово 6 = tpage и текстурные координаты 2 (tpageYYXX)
   * Слово 7 = Цвет 3 (00BBGGRR)   * Слово 7 = Цвет 3 (00BBGGRR)
   * Слово 8 = Вершина 3 (YYYYXXXX)   * Слово 8 = Вершина 3 (YYYYXXXX)
Строка 175: Строка 190:
   * GP0(E6h) -   * GP0(E6h) -
  
-===== Команды GP1 =====+===== Список команд GP1 =====
  
   * GP1(00h) - сброс GPU. Экран выключается. DMA выключается. Левый верхний угол экранной зоны сбрасывается в X = 0, Y = 0. Горизонтальный интервал сбрасывается в X1 = 0x200, X2 = 0x200 + 256 * 10. Вертикальный интервал сбрасывается в Y1 = 0x010, Y2 = 0x010 + 240. Видеорежим сбрасывается в 320x200 NTSC (0). Все атрибуты отрисовки GP0 обнуляются   * GP1(00h) - сброс GPU. Экран выключается. DMA выключается. Левый верхний угол экранной зоны сбрасывается в X = 0, Y = 0. Горизонтальный интервал сбрасывается в X1 = 0x200, X2 = 0x200 + 256 * 10. Вертикальный интервал сбрасывается в Y1 = 0x010, Y2 = 0x010 + 240. Видеорежим сбрасывается в 320x200 NTSC (0). Все атрибуты отрисовки GP0 обнуляются
gpu.1791564050.txt.gz · Последнее изменение: — gecko

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