Система и способ декодирования, выполняемый для кодирования блоков элементов текстуры

Иллюстрации

Показать все

Изобретение относится к системе и способу декодирования, выполняемому для кодированных блоков элементов текстуры. Техническим результатом является повышение эффективности декодирования кодированных текселных блоков. Система (1) декодирования содержит N различных декодеров (100, 200, 300, 400), каждый из которых имеет уникальную схему, которая отличается от схем других N-1 декодеров. Декодеры (100, 200, 300, 400) формируют, по меньшей мере, одно текселное значение на основе входного кодированного текселного блока (40). Модуль (500) выбора значений выполнен с возможностью избирательно выводить, по меньшей мере, N текселных значений, по меньшей мере, из одного из декодеров (100, 200, 300, 400) на основе позиции, по меньшей мере, N текселов (30-36) относительно границы текселного блока (10), содержащего, по меньшей мере, один, по меньшей мере, из N текселов (30-36). Модуль (600) вычисления пикселов вычисляет пикселное значение декодированного пиксела на основе, по меньшей мере, N выбранных текселных значений из модуля (500) выбора значений. 2 н. и 15 з.п. ф-лы. 17 ил.

Реферат

Область техники, к которой относится изобретение

Настоящее изобретение, в общем, относится к декодированию и, в частности, к системе и способу декодирования, выполняемому для кодированных блоков элементов текстуры.

Уровень техники

При попытке увеличивать производительность для графических процессоров (GPU), одно решение состоит в том, чтобы применять различные технологии для того, чтобы уменьшать потребление пропускной способности запоминающего устройства. Уменьшение пропускной способности также становится все более важным, поскольку темп роста рабочих характеристик по вычислительной мощности существенно превышает темп роста рабочих характеристик по пропускной способности и времени задержки для оперативного запоминающего устройства (RAM).

Сжатие текстуры является одним популярным способом уменьшения требований по пропускной способности. Посредством сохранения текстур в сжатой форме в запоминающем устройстве и передачи блоков сжатых данных по шине пропускная способность текстуры существенно уменьшается.

Сегодня, наиболее распространенными системами сжатия текстуры являются DXTC[1] для систем на базе Windows и Xbox и ETC[2] для мобильных телефонов. Обе этих системы разделяют изображение, обозначенное как текстура, на блоки элементов текстуры (текселов) в 4×4 тексела, и данные красного, зеленого, синего цвета (RGB) текселов затем сжимаются с (8+8+8)×16=384 битов до 64 битов. Таким образом, каждому текселному блоку предоставляется идентичное число битов. Это важно, поскольку растризатор, используемый при распаковке, возможно, должен осуществлять доступ к любой части текстуры и должен иметь возможность легко вычислять адрес ячейки памяти требуемого текселного блока. Другими словами, кодек с фиксированной скоростью, т.е. кодек, в котором каждый текселный блок занимает идентичный объем пространства для хранения, является очень желательным и является нормой для алгоритмов сжатия текстуры сегодня.

Разработка ETC-декодера привела к так называемому ETC2-декодеру [3], имеющему дополнительную функциональность для обработки так называемого T-режима, H-режима и PLANAR-режима. T- и H-режим выполнены с возможностью обрабатывать текселные блоки с неравномерным распределением цвета и цветов, размещаемых в двух группах соответственно. Аппаратные схемы ETC-декодера могут быть многократно использованы в значительной степени, чтобы охватывать дополнительные T- и H-режимы. PLANAR-режим тем не менее существенно отличается от ETC и T- и H-режимов и выполнен с возможностью обрабатывать текселные блоки с плавными цветовыми переходами. Сложные аппаратные схемы для PLANAR-режима должны подразумевать, что сложность ETC2-декодера должна значительно увеличиваться по сравнению с ETC-декодером.

Таким образом, существует потребность в предоставлении эффективной реализации PLANAR-режима, и в частности, такой реализации, которая может предоставляться в качестве аппаратной реализации с использованием экономически эффективной схемы. Такая экономически эффективная схема является, в частности, желательной, если PLANAR-режим должен быть использован вместе с ETC-декодером и T- и H-режимами, чтобы формировать ETC2-декодер.

Аналогичная проблема, в общем, присутствует в данной области техники, т.е. существует общая потребность в технологии, которая может применяться к системе декодирования с целью уменьшения сложности реализации.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Общая цель состоит в том, чтобы предоставлять эффективное декодирование кодированных текселных блоков.

Конкретная цель состоит в том, чтобы предоставлять структуру декодирования, которая может быть эффективно реализована в аппаратных средствах.

Эти и другие цели удовлетворяются посредством вариантов осуществления, как раскрыто в данном документе.

Кратко, вариант осуществления относится к системе декодирования для формирования декодированного пиксела на основе, по меньшей мере, одного кодированного текселного блока. Система декодирования содержит N параллельных декодеров, каждый из которых выполнен с возможностью декодировать кодированный текселный блок, чтобы формировать одно или более текселных значений. Согласно варианту осуществления, схемы N декодеров отличаются друг от друга, так что каждый декодер из N декодеров имеет уникальную схему, которая отличается от схемы других N − 1 декодеров. Это позволяет схемам декодеров иметь разные уровни сложностей, поскольку декодеры имеют различные характеристики с точки зрения текселных позиций в текселном блоке, который они могут обрабатывать.

Система декодирования также содержит модуль выбора значений, соединенный с N декодеров и выполненный с возможностью избирательно выводить N текселных значений. Эти N текселных значений дополнительно выводятся из одного или более из N декодеров. Конкретные текселные значения для вывода, а также то, из какого декодера(ов) выводить, зависит от позиции исправления N текселов, имеющих N текселных значений, относительно текселного блока, содержащего, по меньшей мере, один из N текселов. Другими словами, позиция N текселов относительно границ текселных блоков текстуры предписывает то, какие выводы декодера выбираются посредством модуля выбора значений и дополнительно перенаправляются в модуль вычисления пикселов. Модуль вычисления пикселов выполнен с возможностью вычислять декодированное пикселное значение на основе N текселных значений, избирательно выводимых посредством модуля выбора значений.

Тщательный выбор посредством модуля выбора значений обеспечивает такую конструкцию декодеров, что, по меньшей мере, некоторые из N декодеров могут иметь менее сложную схему, чем другие декодеры. Это является возможным посредством такого ограничения некоторых декодеров, что они имеют возможность декодировать и выводить текселные значения только для определенных текселных позиций в текселном блоке. Как следствие, N декодеров не должны иметь идентичных схем, а наоборот, иметь различные схемы с разными уровнями сложности с точки зрения аппаратных структур в расчете на схему.

Вариант осуществления задает способ формирования пиксела посредством декодирования, по меньшей мере, одного кодированного текселного блока. Способ содержит избирательный вывод N текселных значений, по меньшей мере, из одного из N различных декодеров, каждый из которых имеет схему, которая является уникальной и отличается от схемы других N − 1 декодеров. Каждый декодер дополнительно выводит, по меньшей мере, одно текселное значение на основе входного кодированного текселного блока. Выбор того, какие текселные значения из N декодеров использовать для вычисления пикселного значения пиксела для декодирования, выполняется на основе позиции N текселов, ассоциированных с N текселных значений относительно границы текселного блока. Выбранные N текселных значений затем используются для вычисления пикселного значения.

Варианты осуществления предоставляют эффективную реализацию структуры пикселного декодирования посредством уменьшения сложности, требуемой, по меньшей мере, для некоторых параллельных декодеров. Полная сложность структуры декодирования тем самым уменьшается по сравнению с наличием N идентичных параллельных декодеров, как в предшествующем уровне техники.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Изобретение вместе с дополнительными целями и преимуществами может лучше всего пониматься посредством обращения к последующему описанию, рассматриваемому вместе с прилагаемыми чертежами, на которых:

Фиг. 1A-1D иллюстрируют различные позиции билинейного исправления относительно границ текселных блоков;

Фиг. 2 является схематичным видом компоновки декодирования, содержащей систему декодирования согласно варианту осуществления;

Фиг. 3 является иллюстрацией системы декодирования согласно варианту осуществления;

Фиг. 4 схематично иллюстрирует кодированный текселный блок согласно варианту осуществления;

Фиг. 5 иллюстрирует принцип использования планарной аппроксимации значений свойств текселов в текселном блоке;

Фиг. 6 является примером аппаратной реализации четвертого декодера на фиг. 3;

Фиг. 7 является примером аппаратной реализации третьего декодера на фиг. 3;

Фиг. 8 является примером аппаратной реализации второго декодера на фиг. 3;

Фиг. 9 является примером аппаратной реализации первого декодера на фиг. 3;

Фиг. 10 является примером аппаратной реализации битового расширителя "с семи до восьми битов";

Фиг. 11 является аппаратной реализацией фиксатора;

Фиг. 12 является другой аппаратной реализацией фиксатора;

Фиг. 13 является примером аппаратной реализации модуля выбора значений по фиг. 3; и

Фиг. 14 является блок-схемой последовательности операций, иллюстрирующей способ декодирования согласно варианту осуществления.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

На всех чертежах идентичные ссылки с номерами используются для аналогичных или соответствующих элементов.

Варианты осуществления, в общем, относятся к декодированию или распаковке кодированных или сжатых блоков элементов текстуры (текселов) для формирования декодированных пикселных значений.

Декодирование хорошо подходит для использования с трехмерной графикой, такой как игры, трехмерные карты и сцены, трехмерные сообщения, к примеру, анимированные сообщения, экранные заставки, человекомашинные интерфейсы (MMI) и т.д., но не ограничено этим. Таким образом, варианты осуществления также могут использоваться для декодирования других типов изображений или графики, например, одномерных, двумерных или трехмерных изображений.

Процесс рендеринга трехмерной графики типично содержит три подстадии. Вкратце, первая стадия, прикладная стадия, создает несколько треугольников. Углы этих треугольников трансформируются, проецируются и освещаются на второй стадии, геометрической стадии. На третьей стадии, стадии растеризации, изображения, часто называемые текстурами, могут быть "наложены" на треугольники, повышая реализм подготовленного посредством рендеринга изображения. Третья стадия также выполняет сортировку с помощью Z-буфера.

Тем не менее рендеринг текстур и, в частности, трехмерных изображений и графики является вычислительно затратной задачей в отношении пропускной способности запоминающего устройства и вычислительной мощности, требуемой для графических систем. Например, текстуры являются затратными как в отношении запоминающего устройства (текстуры должны помещаться в быстрое однокристальное запоминающее устройства), так и в отношении пропускной способности запоминающего устройства, доступ к текстуре может осуществляться несколько раз, чтобы отрисовывать один пиксел. Также несколько текстур иногда могут требоваться для того, чтобы отрисовывать пиксел.

Чтобы уменьшать требования по пропускной способности и вычислительной мощности, типично используется способ или система кодирования текстур. Такая система кодирования должна приводить к более эффективному использованию дорогого однокристального запоминающего устройства и меньшей пропускной способности запоминающего устройства в ходе рендеринга, и таким образом, к меньшему энергопотреблению и/или более быстрому рендерингу. Это снижение требований к пропускной способности и мощности обработки особенно важно для тонких клиентов, таких как мобильные устройства и телефоны, с небольшим объемом памяти, маленькой пропускной способностью памяти и ограниченной мощностью (например, питаемых от аккумуляторов).

В данной области техники текстуры разделяются на так называемые текселные блоки, содержащие определенное число текселов. Такой текселный блок типично является прямоугольным или квадратным, к примеру, размера MR×MC текселов, где MR, MC являются положительными целыми числами с таким условием, что и MR и MC не являются одновременно единицами. Предпочтительно, MR=2mR и MC=2mC, где mR, mC являются положительными целыми числами. В типичной реализации, MR=MC, и такими предпочтительными вариантами осуществления блоков могут являться 4×4 тексела.

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

Тексел ассоциирован с текселным значением, а пиксел ассоциирован с пикселным значением. Текселные и пикселные значения могут преимущественно быть значениями цвета. Значение цвета может быть представлено в различных цветных форматах, к примеру, красный, зеленый, синий (RGB) цвет или в качестве сигнала яркости и сигнала цветности. Кроме того, текселное значение может представлять другие свойства тексела, к примеру, нормаль или значение Z. В последующем описании, текселное значение неограниченно указывается в качестве примера значения цвета.

Типичный растризатор не осуществляет доступ к текстуре по одному текселу за раз. Вместо этого используется небольшое окружение текселов, к примеру, 2×2 текселов. Например, во время билинейной фильтрации, считываются четыре таких соседних тексела, чтобы формировать билинейно фильтрованное значение, т.е. пикселное значение. В данной области техники, такая группа соседних текселов, совместно обработанных с тем, чтобы формировать пикселное значение, типично обозначается как исправление. Следовательно, группа 2×2 текселов, используемая в билинейной фильтрации, обозначается как билинейное исправление. Этот принцип может быть дополнительно расширен, например, до трехлинейной фильтрации. Трехлинейная фильтрация использует два билинейных исправления из двух различных множественных отображений.

Проблема с обработкой исправлений текселов состоит в том, что текселы в исправлении могут охватывать несколько текселных блоков. Это схематично иллюстрируется на фиг. 1A-1D. Фиг. 1A иллюстрирует случай, в котором билинейное исправление 20 четырех текселов 30-36 находится в одном текселном блоке 10. Фиг. 1B и 1C иллюстрируют другой случай, когда билинейное исправление 20 охватывает два пикселных блока 10, 12, 14, присутствующих либо рядом (фиг. 1B), либо поверх друг друга (фиг. 1C). Экстремальный случай проиллюстрирован на фиг. 1D с одним текселом 30-36 билинейного исправления 20 в соответствующем текселном блоке 10-16.

Традиционный способ разрешать эту проблему состоит в том, чтобы использовать четыре идентичных декодера, каждый из которых декодирует предварительно определенный тексел в билинейном исправлении. Например, в случае фиг. 1A, кодированный текселный блок, представляющий текселный блок 10, вводится в четырех декодерах. Первый декодер выводит тексел (1, 2) 30, тексел (2, 2) получается из второго декодера, при этом третий и четвертый декодер формируют тексел (1, 3) и (2, 3) 36 билинейного исправления соответственно. Допускается система координат, в которой начало координат находится в левом верхнем текселе текселного блока 10. На фиг. 1D кодированный текселный блок текселного блока 10 вводится в первый декодер, чтобы формировать тексел (3, 3) 10, кодированный текселный блок текселного блока 12 обрабатывается посредством второго декодера, чтобы получать тексел (0, 3) 32. Тексел (3, 0) 34 получается из третьего декодера на основе кодированного текселного блока для текселного блока 14, и четвертый декодер выводит тексел (0, 0) 36 из кодированного текселного блока текселного блока 16.

Таким образом, следовательно, можно формировать билинейное исправление 2×2 каждый тактовый цикл независимо от того, какая конфигурация (фиг. 1A-1D) предоставляется. Высокопроизводительные аппаратные средства растеризации формируют два таких билинейных исправления в расчете на тактовый цикл, чтобы предоставлять трехлинейную фильтрацию. Тем не менее в таком случае восемь идентичных декодеров требуются согласно технологиям предшествующего уровня техники.

Принцип совместной обработки текселов в параллельных декодерах тем не менее резко увеличивает сложность системы декодирования, что является проблемой для тонких клиентов. Например, добавление вышеупомянутого PLANAR-режима в систему ETC-декодирования приводит к увеличению сложности, заданной как число сумматоров, с 6 сумматоров до 21 сумматора [3] в расчете на декодер. Таким образом, PLANAR использует в 3,5 раза больше сумматоров, чем ETC, и сложность системы декодирования, имеющей четыре ETC-декодера и четыре PLANAR-декодера, увеличивается в 3,5 раза.

Варианты осуществления, как раскрыто в данном документе, уменьшают сложность системы декодирования посредством отказа от использования идентичных параллельных декодеров. Наоборот, различная схема декодера может использоваться для декодеров, если декодеры выполнены с возможностью обрабатывать различное число текселов и различные текселные позиции в исправлении.

В общем варианте осуществления, система декодирования содержит N различных декодеров. Такая система 1 декодирования проиллюстрирована на фиг. 3, где N указано для примера как четыре. В общем варианте осуществления, N является целым числом, равным или превышающим два, предпочтительно равным четырем. Каждый декодер 100, 200, 300, 400 имеет схему, которая отличается от схемы других N − 1 декодеров. Таким образом, система 1 декодирования не содержит идентичные декодеры, как в предшествующем уровне техники, а наоборот, различные декодеры 100, 200, 300, 400 с различными уникальными схемами. Отличие в схемах N декодеров 100, 200, 300, 400 подразумевает, что комбинация схемных элементов одного из декодеров отличается от комбинации схемных элементов в других декодерах. Декодеры 100, 200, 300, 400, следовательно, имеют различные затраты на реализацию и сложность.

Каждый декодер 100, 200, 300, 400 дополнительно сконфигурирован с возможностью декодирования кодированных текселных блоков для формирования, по меньшей мере, одного текселного значения. Система 1 декодирования также содержит модуль 500 выбора значений, соединенный с N декодерами 100, 200, 300, 400 и сконфигурированный с возможностью избирательно выводить, по меньшей мере, N текселных значений, предпочтительно N текселных значений. Эти, по меньшей мере, N текселных значений выводят из, по меньшей мере, одного из N декодеров 100, 200, 300, 400. В дополнение модуль 500 выбора значений выбирает, какие, по меньшей мере, N текселные значения и из какого/каких декодера/декодеров текселные значения должны выводиться на основании положений, по меньшей мере, N текселей, ассоциированных с, по меньшей мере, N текселными значениями, относящимися к границе текселного блока, содержащего, по меньшей мере, один из N текселей. Таким образом, N текселные позиции, текселное значение которых должно быть создано системой 1 декодирования относительно текселного блока, определяют, из какого декодера или из каких декодеров из N декодеров 100, 200, 300, 400 текселные значения должны извлекаться. Модуль 600 вычисления пикселей системы 1 декодирования соединен с модулем 500 выбора значений и сконфигурирован с возможностью вычислять декодированное текселное значение декодированного пикселя на основании, по меньшей мере, N текселных значений, избирательно выведенных модулем 500 выбора значений.

Общий вариант осуществления достигает уменьшения сложности декодеров 100, 200, 300, 400 посредством такого ограничения некоторых декодеров, что они имеют возможность обрабатывать текселы только в определенных текселных позициях в текселном блоке. Как следствие, схема этих декодеров 100, 200, 300, 400 может быть значительно уменьшена по сравнению со случаем предшествующего уровня техники без таких ограничений на декодеры.

В предпочтительном варианте осуществления, первый декодер 100 из N декодеров 100, 200, 300, 400 выполнен с возможностью декодировать входной кодированный текселный блок, чтобы формировать N текселных значений. Модуль 500 выбора значений в таком случае выполнен с возможностью избирательно выводить эти N текселных значений из первого декодера 100 и дополнительно в модуль 500 вычисления пикселов, если N текселов размещаются внутри границ текселного блока. Фиг. 1A иллюстрирует этот случай при N = 4 . Таким образом, если все четыре тексела 30-36 билинейного исправления 20 размещаются в одном текселном блоке 10, все четыре текселных значения формируются посредством первого декодера 100. Это означает то, что любой вывод из других декодеров 200, 300, 400 не выбирается посредством модуля 500 выбора значений, не используется посредством модуля 600 вычисления пикселов, чтобы вычислять декодированное пикселное значение.

Если половина из N текселов 30, 34 (30, 32) размещается внутри границ текселного блока 10, а оставшаяся половина из N текселов 32, 36 (34, 36) размещается внутри границ соседнего пикселного блока 12 (14), см. фиг. 1B (фиг. 1C), модуль 500 выбора значений предпочтительно выполнен с возможностью избирательно выводить половину из N текселных значений из первого декодера 100 и оставшуюся половину из N текселных значений из второго декодера 200.

В предпочтительном варианте осуществления при N = 4 , первый декодер 100 имеет первую схему, выполненную с возможностью декодировать входной кодированный текселный блок, чтобы формировать четыре текселных значения. Второй декодер 200 имеет вторую схему и выводит два текселных значения на основе входного кодированного текселного блока. Третий 300 и четвертый 400 декодеры содержат третью схему и четвертую схему соответственно. Третий 300 и четвертый 400 декодеры выводят одно текселное значение при условии входного кодированного текселного блока.

В случае, проиллюстрированном на фиг. 1D, все, предпочтительно четыре, декодера 100, 200, 300, 400 выводят текселные значения, которые выбираются посредством модуля 500 выбора значений. Таким образом, модуль 500 выбора значений в таком случае выполнен с возможностью избирательно выводить первое текселное значение из первого декодера 100, второе текселное значение из второго декодера 200, третье текселное значение из третьего декодера 300 и, в завершение, четвертое текселное значение из четвертого декодера 400. В этом случае каждый из четырех текселов 30-36 размещается в соответствующем текселном блоке 10-16.

Фиг. 2 схематично иллюстрирует структуру реализации с системой 1 декодирования согласно варианту осуществления. Структура содержит запоминающее устройство 5, типично RAM, имеющее местоположения в памяти, содержащие кодированные текселные блоки 40. Графический процессор (GPU) 4 соединяется с запоминающим устройством 5 через шину запоминающего устройства. GPU 4 включает в себя идентификатор 2 текселного блока для идентификации текселного блока, кодированный блок 40 которого должен извлекаться из запоминающего устройства 5. Идентификатор 2 текселного блока по существу вычисляет адрес кодированного текселного блока 40 в запоминающем устройстве 5 и отправляет запрос на доступ к памяти по шине в запоминающее устройство 5. Кодированный текселный блок 40, присутствующий в местоположении в памяти, назначенном или выделенном для текселного блока, считывается из запоминающего устройства 5 и передается по шине в систему 1 декодирования или в кэш 3 GPU 4.

Система 1 декодирования содержит или соединяется, по меньшей мере, с одним кэшем 3, имеющим местоположения или области в кэше для сохранения кодированных текселных блоков или декодированных текселных значений. В альтернативном варианте осуществления, GPU 4 может содержать систему кэшей 3, к примеру кэш текстур и кэш цветового буфера. GPU 4 типично соединяется с экраном 6 отображения, на котором отображается декодированное изображение.

GPU 4 и его включенные модули 1, 2, 3 могут предоставляться в одном или более кристаллов, таких как видеокарта, видеокарта или материнская плата. Структура реализации по фиг. 2 может быть реализована в любом процессоре текстур или изображений или устройстве, в том числе, например, в компьютере, игровой приставке, портативном устройстве, таком как мобильный телефон или устройство обработки мультимедиа.

Далее, варианты осуществления системы декодирования описываются подробнее в связи с различными примерами реализации. Эти примеры дополнительно выполнены с возможностью подходить для того, чтобы обрабатывать текселные блоки, кодированные согласно PLANAR, описанному в [3, 4]. Кратко, PLANAR выполнен с возможностью обрабатывать текселные блоки с плавно варьирующимися сигналами цветности. PLANAR аппроксимирует цветовые компоненты (красный, зеленый, синий) в текселном блоке с помощью планарной аппроксимации. Чтобы указывать плоскость, достаточно указывать цвета в трех местоположениях в текселном блоке. Фиг. 5 иллюстрирует этот принцип с тремя компонентами R0, RH и RV красного цвета в определенных позициях относительно текселного блока 10. При таком размещении трех компонентов красного цвета, компонент красного цвета может быть вычислен в любом месте в текселном блоке 10 с использованием следующего уравнения:

R ( x , y ) = r o u n d ( R 0 + 1 4 ( R H − R 0 ) x + 1 4 ( R V − R 0 ) y )

Компоненты синего и зеленого цвета вычисляются идентично компоненту красного цвета. Кодированный текселный блок 40, как проиллюстрировано на фиг. 4, следовательно, содержит три цветовых кодовых слова 41-49 в расчете на цветовой компонент, т.е. X0, XH и XV, где X - это R для компонента красного цвета, G для компонента зеленого цвета и B для компонента синего цвета. В предпочтительной реализации, шесть битов предпочтительно расходуются на каждое из кодовых слов 41-43 красного цвета и кодовых слов 47-49 синего цвета и семь битов для каждого из кодовых слов 44-46 зеленого цвета, поскольку человеческий глаз является более чувствительным к компоненту зеленого цвета по сравнению с компонентами красного и синего цвета. Полный размер кодированного текселного блока составляет 57 битов, что точно соответствует 57-битовому режиму ETC2 [3]. Если PLANAR используется автономно, а не как специальный режим ETC, кодированный текселный блок 40 преимущественно расходует семь битов для всех кроме одного из цветовых кодовых слов 41-47, к примеру, G0, который вместо этого составляет восемь битов. Полный размер в таком случае составляет 64 бита.

В PLANAR-реализации, первый декодер 100 по фиг. 3 может декодировать любое билинейное исправление 2×2, которое имеет все четыре тексела в текселном блоке, см. фиг. 1A. Второй декодер 200 является менее совершенным и формирует текселные значения для текселов в первой строке или в первом столбце текселного блока, см. тексел 32, 36 на фиг. 1B и текселы 34, 36 на фиг. 1C. Второй декодер 200, следовательно, предпочтительно выводит два текселных значения сразу, исправление 2×1 или исправление 1×2. Третий декодер 300 декодирует кодированный текселный блок, чтобы формировать одно текселное значение, предпочтительно верхнее правое текселное значение в координате (3, 0), см. тексел 34 на фиг. 1D. Четвертый декодер 400 также предпочтительно выводит одно текселное значение тексела начала координат (0, 0), см. тексел 36 на фиг. 1D.

Это означает то, что если все текселы 30-36 билинейного исправления 20 находятся внутри границы текселного блока 10, как показано на фиг. 1A, вывод из первого декодера 100 выбирается посредством модуля 500 выбора значений. Если два тексела 30, 34 (30, 32) находятся в одном текселном блоке 10 и два 32, 36 (34, 36) находятся в соседнем текселном блоке 12 (14), как показано на фиг. 1B и 1C, текселные значения левых 30, 34 или верхних 30, 32 двух текселов получаются из первого декодера 100, а текселные значения из двух правых 32, 36 или нижних 34, 36 текселов поступают из второго декодера 200. В завершение, если все четыре тексела 30-36 находятся в различных текселных блоках 10-16, как показано на фиг. 1D, модуль 500 выбора значений выбирает текселное значение для левого верхнего тексела 30 из первого декодера 100, текселное значение для верхнего правого тексела 32 из второго декодера 200, текселное значение для нижнего правого тексела 34 из третьего декодера 300 и текселное значение для нижнего левого тексела 36 из четвертого декодера 400. Таким образом, все четыре тексела 30-36 билинейного исправления 20 могут быть получены в одном тактовом цикле с таким преимуществом, что второй-четвертый декодеры 200, 300, 400 могут быть реализованы с использованием очень небольшого числа аппаратных средств.

Из уравнения X ( x , y ) = r o u n d ( X 0 + 1 4 ( X H − X 0 ) x + 1 4 ( X V − X 0 ) y ) следует, что тексел в начале координат (0, 0) является особенно простым, чтобы вычислять X ( 0,0 ) = r o u n d ( X 0 + 1 4 ( X H − X 0 ) 0 + 1 4 ( X V − X 0 ) 0 ) = X 0 . Как пояснено выше, четвертый декодер предпочтительно выполнен с возможностью декодировать только текселы в начале координат. Это означает то, что схема четвертого декодера может быть сделана чрезвычайно простой. Фиг. 6 иллюстрирует схему четвертого декодера 400 для одного из цветовых компонентов. Как видно из чертежа, единственной структурой является необязательный, но предпочтительный расширитель 480, который выполнен с возможностью расширять входное первое цветовое кодовое слово X0 до заданной длины в битах, предпочтительно восемь битов. Как дополнительно раскрыто в данном документе в связи с фиг. 10, такой расширитель 480 может быть реализован вообще без аппаратных структур, а вместо этого только с ветвями от места, в котором сохраняются соответствующие цветовые компоненты, до вывода четвертого декодера 400.

Следовательно, четвертый декодер 400 может быть реализован вообще без логических вентилей.

Третий декодер 300 должен, согласно пояснению выше, предпочтительно обрабатывать текселы в позиции (3, 0): X ( 3,0 ) = r o u n d ( X 0 + 1 4 ( X H − X 0 ) × 3 + 1 4 ( X V − X 0 ) × 0 ) . Последний член не является значимым и может удаляться. Чтобы удалять оператор round(), результат может быть вычислен в единицах (1/4), прибавления двух и сдвига вправо два раза, указываемого посредством >>2: X ( 3,0 ) = ( ( X 0 < < 2 ) + ( X H − X 0 ) × 3 + 2 ) > > 2

Умножение на три может быть заменено на прибавление числа к сдвинутой версии себя: 3 t = 2 t