126 lines
4.4 KiB
Diff
126 lines
4.4 KiB
Diff
|
diff --git a/gfx/gl/GLLibraryEGL.h b/gfx/gl/GLLibraryEGL.h
|
||
|
--- a/gfx/gl/GLLibraryEGL.h
|
||
|
+++ b/gfx/gl/GLLibraryEGL.h
|
||
|
@@ -106,10 +106,13 @@
|
||
|
KHR_swap_buffers_with_damage,
|
||
|
EXT_buffer_age,
|
||
|
KHR_partial_update,
|
||
|
NV_robustness_video_memory_purge,
|
||
|
MESA_platform_surfaceless,
|
||
|
+ EXT_image_dma_buf_import,
|
||
|
+ EXT_image_dma_buf_import_modifiers,
|
||
|
+ MESA_image_dma_buf_export,
|
||
|
Max
|
||
|
};
|
||
|
|
||
|
// -
|
||
|
|
||
|
@@ -461,10 +464,23 @@
|
||
|
// EGL_KHR_partial_update
|
||
|
EGLBoolean fSetDamageRegion(EGLDisplay dpy, EGLSurface surface,
|
||
|
const EGLint* rects, EGLint n_rects) {
|
||
|
WRAP(fSetDamageRegion(dpy, surface, rects, n_rects));
|
||
|
}
|
||
|
+ // EGL_MESA_image_dma_buf_export
|
||
|
+ EGLBoolean fExportDMABUFImageQuery(EGLDisplay dpy, EGLImage image,
|
||
|
+ int* fourcc, int* num_planes,
|
||
|
+ uint64_t* modifiers) {
|
||
|
+ WRAP(
|
||
|
+ fExportDMABUFImageQueryMESA(dpy, image, fourcc, num_planes, modifiers));
|
||
|
+ }
|
||
|
+ EGLBoolean fExportDMABUFImage(EGLDisplay dpy, EGLImage image, int* fds,
|
||
|
+ EGLint* strides, EGLint* offsets) {
|
||
|
+ WRAP(fExportDMABUFImageMESA(dpy, image, fds, strides, offsets));
|
||
|
+ }
|
||
|
+
|
||
|
+#undef WRAP
|
||
|
|
||
|
#undef WRAP
|
||
|
#undef PROFILE_CALL
|
||
|
#undef BEFORE_CALL
|
||
|
#undef AFTER_CALL
|
||
|
@@ -593,10 +609,22 @@
|
||
|
EGLBoolean(GLAPIENTRY* fSetDamageRegion)(EGLDisplay dpy, EGLSurface surface,
|
||
|
const EGLint* rects,
|
||
|
EGLint n_rects);
|
||
|
EGLClientBuffer(GLAPIENTRY* fGetNativeClientBufferANDROID)(
|
||
|
const struct AHardwareBuffer* buffer);
|
||
|
+
|
||
|
+ // EGL_MESA_image_dma_buf_export
|
||
|
+ EGLBoolean(GLAPIENTRY* fExportDMABUFImageQueryMESA)(EGLDisplay dpy,
|
||
|
+ EGLImage image,
|
||
|
+ int* fourcc,
|
||
|
+ int* num_planes,
|
||
|
+ uint64_t* modifiers);
|
||
|
+ EGLBoolean(GLAPIENTRY* fExportDMABUFImageMESA)(EGLDisplay dpy,
|
||
|
+ EGLImage image, int* fds,
|
||
|
+ EGLint* strides,
|
||
|
+ EGLint* offsets);
|
||
|
+
|
||
|
} mSymbols = {};
|
||
|
};
|
||
|
|
||
|
class EglDisplay final {
|
||
|
public:
|
||
|
@@ -852,10 +880,23 @@
|
||
|
EGLBoolean fSetDamageRegion(EGLSurface surface, const EGLint* rects,
|
||
|
EGLint n_rects) {
|
||
|
MOZ_ASSERT(IsExtensionSupported(EGLExtension::KHR_partial_update));
|
||
|
return mLib->fSetDamageRegion(mDisplay, surface, rects, n_rects);
|
||
|
}
|
||
|
+
|
||
|
+ EGLBoolean fExportDMABUFImageQuery(EGLImage image, int* fourcc,
|
||
|
+ int* num_planes,
|
||
|
+ uint64_t* modifiers) const {
|
||
|
+ MOZ_ASSERT(IsExtensionSupported(EGLExtension::MESA_image_dma_buf_export));
|
||
|
+ return mLib->fExportDMABUFImageQuery(mDisplay, image, fourcc, num_planes,
|
||
|
+ modifiers);
|
||
|
+ }
|
||
|
+ EGLBoolean fExportDMABUFImage(EGLImage image, int* fds, EGLint* strides,
|
||
|
+ EGLint* offsets) const {
|
||
|
+ MOZ_ASSERT(IsExtensionSupported(EGLExtension::MESA_image_dma_buf_export));
|
||
|
+ return mLib->fExportDMABUFImage(mDisplay, image, fds, strides, offsets);
|
||
|
+ }
|
||
|
};
|
||
|
|
||
|
} /* namespace gl */
|
||
|
} /* namespace mozilla */
|
||
|
|
||
|
diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp
|
||
|
--- a/gfx/gl/GLLibraryEGL.cpp
|
||
|
+++ b/gfx/gl/GLLibraryEGL.cpp
|
||
|
@@ -82,11 +82,14 @@
|
||
|
"EGL_EXT_swap_buffers_with_damage",
|
||
|
"EGL_KHR_swap_buffers_with_damage",
|
||
|
"EGL_EXT_buffer_age",
|
||
|
"EGL_KHR_partial_update",
|
||
|
"EGL_NV_robustness_video_memory_purge",
|
||
|
- "EGL_MESA_platform_surfaceless"};
|
||
|
+ "EGL_MESA_platform_surfaceless",
|
||
|
+ "EGL_EXT_image_dma_buf_import",
|
||
|
+ "EGL_EXT_image_dma_buf_import_modifiers",
|
||
|
+ "EGL_MESA_image_dma_buf_export"};
|
||
|
|
||
|
PRLibrary* LoadApitraceLibrary() {
|
||
|
const char* path = nullptr;
|
||
|
|
||
|
#ifdef ANDROID
|
||
|
@@ -647,10 +650,16 @@
|
||
|
{
|
||
|
const SymLoadStruct symbols[] = {SYMBOL(GetPlatformDisplay),
|
||
|
END_OF_SYMBOLS};
|
||
|
(void)fnLoadSymbols(symbols);
|
||
|
}
|
||
|
+ {
|
||
|
+ const SymLoadStruct symbols[] = {SYMBOL(ExportDMABUFImageQueryMESA),
|
||
|
+ SYMBOL(ExportDMABUFImageMESA),
|
||
|
+ END_OF_SYMBOLS};
|
||
|
+ (void)fnLoadSymbols(symbols);
|
||
|
+ }
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// -
|
||
|
|