Hi

Am 30.09.26 um 20:45 schrieb Fabio Piparo:
Hi all,

On Wed, Sep 30, 2026 at 2:48 AM Thomas Zimmermann wrote:
Those buffers should have been allocated on the v3d side.
Ah! Now I think I see what's happening. Some context on where I'm
coming from, since I think I explained it badly.

My program opens the panel's card and lets Mesa handle the buffers.

     fd   = open("/dev/dri/card2", O_RDWR);        /* ssd130x */
     gbm  = gbm_create_device(fd);
     surf = gbm_surface_create(gbm, 128, 32, GBM_FORMAT_XRGB8888,
                               GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING);
     bo = gbm_surface_lock_front_buffer(surf);

On a Pi 4/5 Mesa hands me dumb buffers from ssd130x with v3d drawing
into them. On a Pi 0-3 it goes the other way, the GPU makes the
buffers and ssd130x imports them, and that works fine.

Reading this thread convinced me that what I was doing was wrong for
my use case, and that my program should own the buffers itself. So now
it does the producer-consumer thing:

     gpu = gbm_create_device(open("/dev/dri/renderD128", O_RDWR)); /* v3d */
     bo  = gbm_bo_create(gpu, 128, 32, GBM_FORMAT_XRGB8888,
                         GBM_BO_USE_RENDERING | GBM_BO_USE_LINEAR);
     drmPrimeFDToHandle(fd, gbm_bo_get_fd(bo), &handle);
     /* AddFB2 with that handle, draw into bo through an EGLImage, page flip */

That's clean on a stock kernel and stock Mesa.

Great to hear that it works now

Best regards
Thomas


By the way, I found one other report that looks like the same thing,
from March 2024: https://github.com/notro/gud/issues/22

Thanks,
Fabio/

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)


Reply via email to