Почему изображения дублируются на круглом дисплее HyperPixel 2.0 с использованием необработанного кадрового буфераPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему изображения дублируются на круглом дисплее HyperPixel 2.0 с использованием необработанного кадрового буфера

Сообщение Anonymous »

Я разрабатываю приложение Python с использованием круглого дисплея HyperPixel 2.0 (480x480) на Raspberry Pi Zero 2W под управлением Debian Linux 11. При записи непосредственно в фреймбуфер у меня возникает проблема, связанная с появлением кружков, нарисованных на дисплее. дублируется.
Настройка оборудования
  • Raspberry Pi Zero 2W
  • Круглый дисплей HyperPixel 2.0 (480x480)
  • Debian Linux 11
  • Python 3.9.2
    < li>Pygame 2.6.1
Конфигурация
Мой файл /boot/config.txt содержит HyperPixel 2.0 Настройки раунда:

Код: Выделить всё

dtoverlay=hyperpixel2r:disable-touch
enable_dpi_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=0x7f216
dpi_timings=480 0 10 16 55 480 0 15 60 15 0 0 0 60 0 19200000 6
dtparam=i2c_arm=on
Детали реализации
Я пишу непосредственно в фреймбуфер (/dev/fb0), используя Python. Приложение создает поверхность pygame для рисования, а затем записывает буфер непосредственно в устройство кадрового буфера. Вот ключевая реализация:

Код: Выделить всё

pygame.display.init()
screen = pygame.Surface((480, 480))
screen.fill((0, 0, 0))
pygame.draw.circle(screen, (255, 0, 0), (240, 247), 100)

buffer = screen.convert(16, 0).get_buffer()
with open('/dev/fb0', 'wb') as fb:
fb.write(buffer)
fb.flush()
os.fsync(fb.fileno())
Проблема
При записи буфера на дисплей каждый круг отображается на экране дублированным. Дубликат выглядит смещенным относительно оригинала. Это происходит последовательно с любой формой или содержимым, записанным в фреймбуфер.
Предпринятые действия по устранению неполадок
  • Проверен правильный размер фреймбуфера и разрядность
  • Реализована явная очистка кадрового буфера перед записью
  • Добавлена ​​очистка буфера и вызовы fsync
  • Подтверждены размеры поверхности соответствовать дисплею (480x480)
  • Проверялись различные глубины цвета и форматы пикселей.
Вопросы
< ol>
[*]Каков правильный формат и расположение буфера для записи в кадровый буфер HyperPixel 2.0 Round?
[*]Существуют ли особые требования к выравниванию памяти для интерфейса DPI этого дисплея?< /li>
Требует ли круглый форм-фактор дисплея особого внимания при записи в фреймбуфер?
[*]Существуют ли задокументированные примеры правильного доступа к необработанному фреймбуферу для этого дисплея?

Информация об отладке
Текущий анализ кадрового буфера показывает:

Код: Выделить всё

Framebuffer size: 460800 bytes (480x480x16bpp)
Surface format: 16-bit RGB
No hardware acceleration available
Writing full buffer size on each update
Я был бы очень признателен за любые рекомендации по правильному подходу к записи в кадровый буфер этого дисплея. При необходимости я могу предоставить дополнительную информацию для отладки или протестировать конкретные решения.

Подробнее здесь: https://stackoverflow.com/questions/793 ... framebuffe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»