gpu
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| gpu [2026/10/09 16:40] – gecko | gpu [2026/10/15 15:02] (текущий) – gecko | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== GPU ====== | ====== GPU ====== | ||
| - | Графический процессор PlayStation (GPU) - это специализированный 32-битный чип от Sony, отвечающий за отрисовку графических примитивов (полигонов, | + | Графический процессор PlayStation (GPU) - это специализированный 32-битный чип от Sony, отвечающий за отрисовку графических примитивов (полигонов, |
| У 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 управляется | + | ===== Полупрозрачность и смешивание ===== |
| + | |||
| + | GPU аппаратно поддерживает четыре режима | ||
| + | * Режим 0 - полупрозрачное смешивание: 50/50: 0.5 * A + 0.5 * B | ||
| + | * Режим 1 - аддитивное смешивание: | ||
| + | * Режим 2 - субтрактивное смешивание: | ||
| + | * Режим 3 - полный цвет фона плюс четверть нового цвета: A + 0.25 * B | ||
| + | |||
| + | Альфа-канал (попиксельная полупрозрачность) не поддерживается. В текстуре можно задать лишь бит прозрачности, | ||
| + | |||
| + | ===== Дизеринг ===== | ||
| + | |||
| + | При включенном дизеринге GPU чередует соседние цвета для повышения визуального качества градиентов. Вся математика внутренне осуществляется в 24-битном режиме, | ||
| + | |||
| + | ===== Текстурный кэш ===== | ||
| + | |||
| + | GPU оснащен текстурным кэшем в 2 KiB. Для 4-битного | ||
| + | |||
| + | ===== Кодирование | ||
| + | |||
| + | GPU управляется | ||
| Заголовок команды кодируется по следующей схеме: | Заголовок команды кодируется по следующей схеме: | ||
| Строка 16: | Строка 36: | ||
| * Биты 23..0: 24-битный цвет (0x00RRGGBB), | * Биты 23..0: 24-битный цвет (0x00RRGGBB), | ||
| - | За заголовком могут следовать данные, | + | За заголовком могут следовать данные, |
| - | Команды передаются через [[MMIO|порты ввода-вывода]] или посредством [[DMA]]. При передаче через порт, переданные слова накапливаются в 64-байтном FIFO-буфере (командной очереди). GPU считывает данные из FIFO и начинает выполнение команды автоматически, | + | Для рисования текстурированного полигона в команду 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|порты ввода-вывода]] или посредством | ||
| Порты ввода-вывода: | Порты ввода-вывода: | ||
| Строка 26: | Строка 55: | ||
| * GPUSTAT (1F801814h; BF801814h в KSEG1): чтение из этого порта позволяет проверить, | * GPUSTAT (1F801814h; BF801814h в KSEG1): чтение из этого порта позволяет проверить, | ||
| - | ===== Прозрачность и смешивание ===== | + | ===== Список команд GP0 ===== |
| - | + | ||
| - | GPU аппаратно поддерживает четыре режима | + | |
| - | * Режим 0 - полупрозрачное смешивание: | + | |
| - | * Режим 1 - аддитивное смешивание: | + | |
| - | * Режим 2 - субтрактивное смешивание: | + | |
| - | * Режим 3 - четверть нового цвета плюс полный цвет фона: A + 0.25 * B | + | |
| - | + | ||
| - | Попиксельное смешивание не поддерживается. В текстуре можно задать лишь бит прозрачности, | + | |
| - | + | ||
| - | ===== Текстурный кэш ===== | + | |
| - | + | ||
| - | GPU оснащен текстурным кэшем в 2 KiB. Для 4-битного цветового режима это 64x64 пикселя, | + | |
| - | + | ||
| - | ===== Команды GP0 ===== | + | |
| ==== Доступ к видеопамяти ==== | ==== Доступ к видеопамяти ==== | ||
| Строка 90: | Строка 105: | ||
| * Слово 3 = Палитра и текстурные координаты 1 (ClutYYXX) | * Слово 3 = Палитра и текстурные координаты 1 (ClutYYXX) | ||
| * Слово 4 = Вершина 2 (YYYYXXXX) | * Слово 4 = Вершина 2 (YYYYXXXX) | ||
| - | * Слово 5 = Текстурная страница | + | * Слово 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 = Текстурная страница | + | * Слово 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.1791564034.txt.gz · Последнее изменение: — gecko
