On Thu, Feb 02, 2017 at 05:19:58PM +0100, Volker Vogelhuber wrote: >> I'm currently trying to mmap the memory of an OpenGL texture I've created by >> doing the following: >> >> std::vector<EGLint> image_attribs = { >> EGL_WIDTH, static_cast<int>(m_texWidth & 0x7FFFFFFF), >> EGL_HEIGHT, static_cast<int>(m_texHeight & 0x7FFFFFFF), >> EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA, >> EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA >> EGL_NONE >> }; >> glGenTextures( 1, &texID ); >> glBindTexture( GL_TEXTURE_2D, texID ); >> eglImage = eglCreateDRMImageMESA( eglGetCurrentDisplay(), &image_attribs[0] >> ); >> glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglmage); >> eglExportDMABUFImageQueryMESA(eglGetCurrentDisplay(), eglImage, &fourcc, >> &nplanes, &modifiers) >> eglExportDMABUFImageMESA(eglGetCurrentDisplay(), eglImage, &fd, strides, >> offsets) >> >> struct dma_buf_sync sync_args = { .flags = DMA_BUF_SYNC_START }; >> ioctl( fd, DMA_BUF_IOCTL_SYNC, sync_args); >> mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 ); >> >> For some reason mmap returns MAP_FAILED when using the PROT_WRITE flag, >> while >> using only PROT_READ seems to be fine. I'm currently using kernel 4.9.6 on >> an Intel CherryTrail (i915). >> >> Is there an obvious reason why I'm not able to mmap the texture FD with >> PROT_WRITE flags? >> Reading https://01.org/blogs/2016/sharing-cpu-and-gpu-buffers-linux I would >> have guessed that >> this should be possible. Or is it only true for specific GEM buffers not >> textures created using >> eglCreateDRMImageMESA? > >From a quick look the mesa/libdrm (depending upon driver) handle2fd >implementations don't set the DRM_RDWR flag when asking PRIME for a >dma-buf fd, which means you fd doesn't have write permissions. Which means >mmap with writing allowed will fail. > >Not sure how to fix that. Thanks for the reply. I guess you mean that line of code: http://code.metager.de/source/xref/freedesktop/mesa/drm/intel/intel_bufmgr_gem.c#2679 Is there a good reason not to patch drm_intel_bo_gem_export_to_prime to call drmPrimeHandleToFD with DRM_RDWR flag set as well? I just saw a similar discussion under https://chromium-review.googlesource.com/c/323990/ Regards, Volker _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel