Estou tentando usar o buffer duplo em um processador AM335x. Temos um exemplo em execução em uma imagem de demonstração que não foi criada por nós. Eu estou trabalhando em montar nossa própria imagem usando fontes principais.
Este sistema está usando o driver tilcdc. Estamos usando a emulação fbdev fornecida por esse driver. Conforme estamos configurando os parâmetros, essa chamada é responsável por erros:
unsigned int Yold = variable_info.yres_virtual;
variable_info.yres_virtual = variable_info.yres * 2;
if (ioctl(fdfb, FBIOPUT_VSCREENINFO, &variable_info))
Ecoamos 0xf em / sys / module / drm / parameters / debug para ativar as impressões de depuração elevadas para o driver drm. Conseguimos ver a seguinte mensagem de erro:
fb userspace solicitado width / height / bpp é maior que o atual 1024x768-32 (virtual 1024x1536) > 1024x768-32
Eu vi referências indicando que o drm tem como padrão apenas alocar memória suficiente para a resolução anexada. Estou lutando para descobrir onde isso está ocorrendo e como posso aumentar a quantidade de memória alocada.
Quanto à imagem de amostra, isso foi fornecido para nós para fins de teste. Descobrimos que o motivo pelo qual o aplicativo funciona nesta imagem é que a memória alocada por padrão é o tamanho correto para fazer o buffer triplo a uma altura de y de 768.
Obrigado pela sua ajuda.
* editar adições
Eu tenho olhado para a fonte para o driver e ainda tenho que concluir pode ser feito para alterar o tamanho do buffer na carga do driver. Eu gostaria de evitar codificar o valor a todo custo.
Eu sei que, embaixo da emulação de framebuffer fornecida diretamente pelo tilcdc, existem chamadas para criar uma alocação de memória contígua usando as informações para o crtcs, mas parece que está apenas usando algo chamado fb- > height and width. / p>
Tags framebuffer drm embedded