Hi Lucas,
Here you can find the test I used (actually pretty the same as your) : https://github.com/julbouln/test_omap5_drm/blob/master/test_viv2d.c#L472 And my fix that make it works : https://github.com/julbouln/etnaviv_x15/blob/master/etnaviv_cmd_parser.c#L18... (sorry it is kernel 4.9)
As a side question, did you ever managed to get multi source working by any chance ? I tried without success.
Regards
2018-06-04 12:32 GMT+02:00 Julien Boulnois jboulnois@gmail.com:
Hi Lucas,
Not yet, I was looking the possibility of using it when I found this limitation.
Regards
2018-06-04 11:19 GMT+02:00 Lucas Stach l.stach@pengutronix.de:
Hi Julien,
Am Freitag, den 01.06.2018, 09:00 +0200 schrieb Julien Boulnois:
Hi Lucas,
I think I found an issue in etnaviv kernel driver regarding VIV_FE_DRAW_2D_HEADER_DATA_COUNT
In your old test https://github.com/etnaviv/etna_viv/blob/master/attic/test2d/bitblt2d _from_stream.c you append streamed data at the end of draw command buffer, but driver gives an error : etnaviv_cmd_validate_one: op 21 not permitted at offset 50
After looking closer, I think that FE_OPCODE_DRAW_2D check in etnaviv_cmd_parser.c#etnaviv_cmd_validate_one should take account of these extra data :
case FE_OPCODE_DRAW_2D: n = EXTRACT(cmd, VIV_FE_DRAW_2D_HEADER_COUNT) * 2 + EXTRACT(cmd, VIV_FE_DRAW_2D_HEADER_DATA_COUNT); if (n == 0) n = 256; len = 2 + n; break;
Yes, the kernel command parser is a bit too conservative here. Are you using the streamed data feature in your driver?
Regards, Lucas
-- Julien Boulnois