On Friday, 2017-02-10 09:27:51 +0100, Volker Vogelhuber wrote: > Hi, > I'm currently try to stream video data to an OpenGL texture. > While using the EGL_DRM_BUFFER_USE_SCANOUT_MESA flag > when creating the memory for the texture makes it at least > a bit easier (only X-tiling instead of Y-tiling on my intel GPU), it > is still tricky to compensate the tiling in the shader. I wonder why > there is no export of the __DRI_IMAGE_USE_LINEAR flag for > calling dri2_create_drm_image_mesa. Attached is a patch that > would do that and works so far without any problem (tested with > an AMD G-Series and Intel Bay- and Cherry-Trail). > > Regards, > Volker
This would require a change in the spec [1]. I suggest you have a look at it and see if you can suggest a change there as well, to explain your reasoning. Your suggestion seems reasonable enough, but I personally don't know enough about this particular subject to have an opinion either way. I hope you'll find someone more knowledgeable to help you :) (A couple nits: your new #define should go in eglmesaext.h, as eglext.h is the synced down header from Khronos [2], and it should have the _MESA suffix as it is a Mesa extension.) BTW, you should send your patches inlined, for easier reviewing. You can do that using `git send-email` for instance. See the docs on our website [3] for more information. Cheers, Eric [1] docs/specs/MESA_drm_image.spec [2] https://www.khronos.org/registry/EGL/api/EGL/eglext.h [3] https://www.mesa3d.org/submittingpatches.html#mailing > --- a/src/egl/drivers/dri2/egl_dri2.c 2017-02-03 19:52:00.278361176 +0100 > +++ b/src/egl/drivers/dri2/egl_dri2.c 2017-02-06 16:51:02.831727768 +0100 > @@ -2186,7 +2186,8 @@ > valid_mask = > EGL_DRM_BUFFER_USE_SCANOUT_MESA | > EGL_DRM_BUFFER_USE_SHARE_MESA | > - EGL_DRM_BUFFER_USE_CURSOR_MESA; > + EGL_DRM_BUFFER_USE_CURSOR_MESA | > + EGL_DRM_BUFFER_USE_LINEAR; > if (attrs.DRMBufferUseMESA & ~valid_mask) { > _eglLog(_EGL_WARNING, "bad image use bit 0x%04x", > attrs.DRMBufferUseMESA & ~valid_mask); > @@ -2200,6 +2201,8 @@ > dri_use |= __DRI_IMAGE_USE_SCANOUT; > if (attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_CURSOR_MESA) > dri_use |= __DRI_IMAGE_USE_CURSOR; > + if (attrs.DRMBufferUseMESA & EGL_DRM_BUFFER_USE_LINEAR) > + dri_use |= __DRI_IMAGE_USE_LINEAR; > > dri2_img->dri_image = > dri2_dpy->image->createImage(dri2_dpy->dri_screen, > --- a/include/EGL/eglext.h 2017-02-03 19:52:00.278361176 +0100 > +++ b/include/EGL/eglext.h 2017-02-06 16:54:58.436899101 +0100 > @@ -780,6 +780,7 @@ > #define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 > #define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 > #define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 > +#define EGL_DRM_BUFFER_USE_LINEAR 0x00000008 > typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay > dpy, const EGLint *attrib_list); > typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay > dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); > #ifdef EGL_EGLEXT_PROTOTYPES _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev