Преобразование между потоком 4-х байтовых единиц и 3-х байтовых единиц - PullRequest
1 голос
/ 19 апреля 2020

У меня был этот вопрос Windows C ++ быстрая текстура RGBA32 DX в буфер RGB24 .

Вот вопрос о более обобщенной проблеме одного возможного решения этого вопроса.

Поток 1 состоит из 4-х байтовых единиц:

B0.0 B0.1 B0.2 B0.3 B1.0 B1.1 B1.2 B1.3 ...

Поток 2 состоит из 3 байтов:

B0.0 B0.1 B0.2 B1.0 B1.1 B1.2 ...

Что такое высокоэффективный способ преобразования и обратно между ними?

(1) Некоторые вопросы сборки указывают на то, что во многих простых случаях, таких как этот, компилятор может выполнять свою работу лучше, как написать код C, чтобы компилятор выполнял лучшую оптимизацию?

(1.1) Расширение: обработка нескольких единиц в l oop

(1.2) Работа непосредственно с байтами или работа с большими данными с помощью операций logi c, что может быть лучше?

(2) Сборка X86: есть ли векторная команда, которая может выполнять упаковку такого типа и распаковывать ее на нескольких устройствах?

...