SlideShare a Scribd company logo
1 of 19
Download to read offline
OpenGL and Vulkan Interoperability
Eleni Maria Stea <estea@igalia.com>
XDC 2020
Outline
1 OpenGL interoperability extensions
2 Additions to Mesa and Piglit
3 Questions
4 References
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 2 / 19
Introduction
Outline
1 OpenGL interoperability extensions
2 Additions to Mesa and Piglit
3 Questions
4 References
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 3 / 19
Introduction
Interoperability Concept
INTEROPERABILITY
EXT_external_objects(_fd) extensions enable:
· Allocation of resources (textures, buffers) from Vulkan and sharing
of those resources from both APIs
· Synchronization of the access to shared resources between APIs.
Example: a VR compositor where the left and right eye images are allocated and
displayed by Vulkan but their contents are filled by OpenGL processes.
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 4 / 19
Introduction
OpenGL extensions for interoperability on Linux
OpenGL Extensions (Linux)
EXT_external_objects_fd (EXT_memory_object_fd, EXT_semaphore_fd):
▶ enables an OpenGL application to import a memory object or semaphore
from POSIX file descriptor external handles
EXT_external_objects (EXT_memory_object, EXT_semaphore):
▶ enables an OpenGL application to create OpenGL objects corresponding to
Vulkan objects (textures, buffers, semaphores) and synchronize access to
shared objects across APIs
▶ extends existing GL calls that set and query properties
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 5 / 19
Interoperability on Mesa
Outline
1 OpenGL interoperability extensions
2 Additions to Mesa and Piglit
3 Questions
4 References
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 6 / 19
Interoperability on Mesa
Igalia’s contributions
Work on the feature
Mesa
Igalia contributed to the implementation of the interoperability extensions for
different Mesa drivers.
Piglit (drivers testing framework)
As there were no conformance tests available for the extensions, we’ve written
a Vulkan framework for Piglit and Vulkan/GL tests that cover some common
EXT_external_objects(_fd) use cases.
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 7 / 19
Interoperability on Mesa
Additions to Mesa (the details)
Contributions to Mesa drivers
Driver Igalia’s Contributions Status
iris implemented EXT_external_objects, EXT_external_objects_fd under review (MR !4337)
freedreno implemented EXT_external_objects, EXT_external_objects_fd upstream
radeonsi fixes to the already implemented feature work in progress (WIP MR !6364)
i965 helped with the review, patches under review (Draft MR !5594)
Contributors, reviewers, people who helped!
Driver Patches Reviews, Comments, Advice
iris Juan A. Suárez Romero, Eleni Maria Stea, Tapani
Pälli, Eduardo Lima Mitev
Tapani Pälli, Rohan Garg, Eric Engestrom, Kenneth
Graunke, Jason Ekstrand, Oscar Barenys, Daniel
Stone, Matt Turner, Tomeu Vizoso
freedreno Eduardo Lima Mitev, Hyunjun Ko Rob Clark, Marek Olšák, Jonathan Marek, Rohan
Garg
radeonsi The feature was implemented by AMD a few years
ago and we are mostly working on fixes (WIP).
feedback from: Bas Nieuwenhuizen, Marek Olšák
i965 Rohan Garg, Juan A. Suárez Romero, Tapani Pälli Tomeu Vizoso, Eleni Maria Stea, Oscar Barenys
▶ The information above was accurate at the beginning of September when I pre-recorded this presentation!
Apologies if I’ve not included someone or something!
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 8 / 19
Interoperability on Mesa
Additions to Piglit (the details) I
Contributions to Piglit I
Reusing color images:
Test name Description Output Status
vk-image-overwrite • Vulkan: allocates images of different
formats and tiling modes
• OpenGL: fills them with green
• Expectation: green screen
upstream
vk-image-display • Vulkan: creates an image and fills it with
colored bars
• OpenGL: draws the image on screen using
semaphores to synchronize access
• Expectation: a stripped image on screen
upstream
vk-image-display-overwrite • Vulkan: creates an image and fills it
• OpenGL: overwrites that image with
another stripped pattern
• Vulkan: reads back the contents of the
image
• Expectation: the modified contents to be
read back
upstream
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 9 / 19
Interoperability on Mesa
Additions to Piglit (the details) II
Contributions to Piglit II
Reusing the depth and stencil buffer:
Test name Description Output Status
vk-depth-display • Vulkan: creates a depth buffer pattern
• OpenGL: draws a fullscreen quad at a greater
depth
• Expectation: quad partially obscured
under review
vk-stencil-display • Vulkan: creates a pattern in the stencil buffer
• OpenGL: draws a blue fullscreen quad with stencil
testing
• Expectation: quad masked by stencil pattern
under review
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 10 / 19
Interoperability on Mesa
Additions to Piglit (the details) III
Contributions to Piglit III
Reusing a pixel buffer:
Test name Description Output Status
vk-buf-exchange • Vulkan: creates and fills an image with
color bars and copies its content to a
buffer
• OpenGL: uses the buffer as pixel
storage for a texture and displays it
• Expectation: colored bars on screen
upstream
vk-pix-buf-update-errors Same as above and:
• OpenGL: attempts to overwrite the
buffer
• Expectation: error is generated, the
buffer remains unchanged
work in progress
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 11 / 19
Interoperability on Mesa
Additions to Piglit (the details) IV
Contributions to Piglit IV
Reusing a vertex buffer:
Test name Description Output Status
vk-vert-buf-update-errors • Vulkan: creates a vertex buffer and
fills it with only the odd quads of a
chess board pattern
• OpenGL: clears the screen to red and
draws the vertex buffer in blue
• OpenGL: attempts to overwrite the
VBO
• Expectation: a red-blue chess board
pattern on screen and an invalid
operation error is generated
work in progress
vk-vert-buf-reuse • Vulkan: same as above
• OpenGL: same as above minus the
invalid overwrite test
• Vulkan: reuses the VBO in a
renderpass to draw the chess board
• Expectation: chessboard on screen
work in progress
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 12 / 19
Interoperability on Mesa
Additions to Piglit (the details) V
Contributions to Piglit V
Many people helped us with the work on the tests:
Contributors Contributions
Eleni Maria Stea tests, Vulkan framework code
Juan A. Suárez Romero contributions to the framework, and vk-image-overwrite, testing
Tapani Pälli (many thanks!) reviews, testing and patches for the framework
Bas Nieuwenhuizen framework patch to support dedicated memory
Topi Pohjolainen we’ve used some old patches of him as an example at the very beginning
▶ Also thanks to Eduardo Lima Mitev and to Hyunjun Ko for the reviews and to Germán Poo Caamaño who helped
tidying up the initial mess of the Vulkan framework commits.
▶ Again, this information was accurate when I prepared and pre-recorded the slides. Sorry if I am missing someone
or something!
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 13 / 19
Interoperability on Mesa
Piglit Results
Conclusions from running the tests:
▶ Most of the new Piglit tests are passing in the mesa drivers
mentioned before (iris, freedreno, radeonsi, i965).
▶ Unfortunately Mesa does not yet support the depth and stencil
buffer exchange. The only implementation I ’ve found that
currently supports this feature is the Nvidia proprietary driver.
▶ radeonsi needs some fixes to better support buffers and
optimal tiling (WIP).
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 14 / 19
Q & A
Outline
1 OpenGL interoperability extensions
2 Additions to Mesa and Piglit
3 Questions
4 References
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 15 / 19
Q & A
Questions?
E-mail: estea@igalia.com
IRC/Freenode: hikiko
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 16 / 19
References
Outline
1 OpenGL interoperability extensions
2 Additions to Mesa and Piglit
3 Questions
4 References
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 17 / 19
References
Links I
OpenGL and Vulkan Interoperability on Linux (Blog posts on the Piglit tests use
cases).
https://eleni.mutantstargoat.com/hikiko/category/igalia/
graphics_drivers/opengl-and-vulkan-interoperability/.
Carsten Rohde, Dave Airlie, James Jones, Jan-Harald Fredriksen, Jeff Juliano,
and Michael Worcester.
EXT_external_objects (GL_EXT_memory_object, GL_EXT_semaphore), July 18, 2018.
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_
external_objects.txt.
Carsten Rhode, James Jones, Jan Harald Fredriksen, and Jeff Juliano.
EXT_external_objects_fd (GL_EXT_memory_object_fd, GL_EXT_semaphore_fd), June
2, 2017.
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_
external_objects_fd.txt.
Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 18 / 19
Thank you!

More Related Content

What's hot

HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...Igalia
 
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Igalia
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futurephiln2
 
Petri Niemi Qt Web Kit
Petri Niemi Qt Web KitPetri Niemi Qt Web Kit
Petri Niemi Qt Web KitNokiaAppForum
 
Gnome on wayland at a glance
Gnome on wayland at a glanceGnome on wayland at a glance
Gnome on wayland at a glancegnomekr
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms philn2
 
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...Igalia
 
Lessons learned from the charts repo
Lessons learned from the charts repoLessons learned from the charts repo
Lessons learned from the charts repoVictor Iglesias
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)ryuan choi
 
WPE WebKit for Android
WPE WebKit for AndroidWPE WebKit for Android
WPE WebKit for AndroidIgalia
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegVMware Tanzu
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Victor Iglesias
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKitAriya Hidayat
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestMicael Gallego
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamercalvaris
 
Fantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemFantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemJoe Kutner
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)Igalia
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIssparkfabrik
 
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Igalia
 

What's hot (20)

HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
 
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/future
 
Petri Niemi Qt Web Kit
Petri Niemi Qt Web KitPetri Niemi Qt Web Kit
Petri Niemi Qt Web Kit
 
Gnome on wayland at a glance
Gnome on wayland at a glanceGnome on wayland at a glance
Gnome on wayland at a glance
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms
 
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conferenc...
 
Lessons learned from the charts repo
Lessons learned from the charts repoLessons learned from the charts repo
Lessons learned from the charts repo
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
 
WPE WebKit for Android
WPE WebKit for AndroidWPE WebKit for Android
WPE WebKit for Android
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKit
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
Fantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemFantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find Them
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
 

Similar to About OpenGL and Vulkan interoperability (XDC 2020)

Webgl 기술동향 2011.8
Webgl 기술동향 2011.8Webgl 기술동향 2011.8
Webgl 기술동향 2011.8Seung Joon Choi
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFLEnlightenmentProject
 
State of GeoServer 2.10
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10Jody Garnett
 
PDE2011 pythonOCC project status and plans
PDE2011 pythonOCC project status and plansPDE2011 pythonOCC project status and plans
PDE2011 pythonOCC project status and plansThomas Paviot
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMark Kilgard
 
13th kandroid OpenGL and EGL
13th kandroid OpenGL and EGL13th kandroid OpenGL and EGL
13th kandroid OpenGL and EGLJungsoo Nam
 
SDVIs and In-Situ Visualization on TACC's Stampede
SDVIs and In-Situ Visualization on TACC's StampedeSDVIs and In-Situ Visualization on TACC's Stampede
SDVIs and In-Situ Visualization on TACC's StampedeIntel® Software
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedSuyash Joshi
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Prabindh Sundareson
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allMarc Dutoo
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware
 
The Next Generation Eclipse Graphical Editing Framework
The Next Generation Eclipse Graphical Editing FrameworkThe Next Generation Eclipse Graphical Editing Framework
The Next Generation Eclipse Graphical Editing FrameworkAlexander Nyßen
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDocker, Inc.
 
Angular 12 brought several new features to the table
Angular 12 brought several new features to the tableAngular 12 brought several new features to the table
Angular 12 brought several new features to the tableMoon Technolabs Pvt. Ltd.
 
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI ProjectsDiscovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI ProjectsWee Hyong Tok
 

Similar to About OpenGL and Vulkan interoperability (XDC 2020) (20)

Webgl 기술동향 2011.8
Webgl 기술동향 2011.8Webgl 기술동향 2011.8
Webgl 기술동향 2011.8
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
 
State of GeoServer 2.10
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10
 
PDE2011 pythonOCC project status and plans
PDE2011 pythonOCC project status and plansPDE2011 pythonOCC project status and plans
PDE2011 pythonOCC project status and plans
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to Vulkan
 
13th kandroid OpenGL and EGL
13th kandroid OpenGL and EGL13th kandroid OpenGL and EGL
13th kandroid OpenGL and EGL
 
SDVIs and In-Situ Visualization on TACC's Stampede
SDVIs and In-Situ Visualization on TACC's StampedeSDVIs and In-Situ Visualization on TACC's Stampede
SDVIs and In-Situ Visualization on TACC's Stampede
 
Android native gl
Android native glAndroid native gl
Android native gl
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting Started
 
Duel of Two Libraries: Cairo & Skia
Duel of Two Libraries: Cairo & SkiaDuel of Two Libraries: Cairo & Skia
Duel of Two Libraries: Cairo & Skia
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
The Next Generation Eclipse Graphical Editing Framework
The Next Generation Eclipse Graphical Editing FrameworkThe Next Generation Eclipse Graphical Editing Framework
The Next Generation Eclipse Graphical Editing Framework
 
SWT - Technical Deep Dive
SWT - Technical Deep DiveSWT - Technical Deep Dive
SWT - Technical Deep Dive
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application Packages
 
Angular 12 brought several new features to the table
Angular 12 brought several new features to the tableAngular 12 brought several new features to the table
Angular 12 brought several new features to the table
 
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI ProjectsDiscovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 

More from Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...Igalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 

More from Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 

Recently uploaded

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

About OpenGL and Vulkan interoperability (XDC 2020)

  • 1. OpenGL and Vulkan Interoperability Eleni Maria Stea <estea@igalia.com> XDC 2020
  • 2. Outline 1 OpenGL interoperability extensions 2 Additions to Mesa and Piglit 3 Questions 4 References Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 2 / 19
  • 3. Introduction Outline 1 OpenGL interoperability extensions 2 Additions to Mesa and Piglit 3 Questions 4 References Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 3 / 19
  • 4. Introduction Interoperability Concept INTEROPERABILITY EXT_external_objects(_fd) extensions enable: · Allocation of resources (textures, buffers) from Vulkan and sharing of those resources from both APIs · Synchronization of the access to shared resources between APIs. Example: a VR compositor where the left and right eye images are allocated and displayed by Vulkan but their contents are filled by OpenGL processes. Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 4 / 19
  • 5. Introduction OpenGL extensions for interoperability on Linux OpenGL Extensions (Linux) EXT_external_objects_fd (EXT_memory_object_fd, EXT_semaphore_fd): ▶ enables an OpenGL application to import a memory object or semaphore from POSIX file descriptor external handles EXT_external_objects (EXT_memory_object, EXT_semaphore): ▶ enables an OpenGL application to create OpenGL objects corresponding to Vulkan objects (textures, buffers, semaphores) and synchronize access to shared objects across APIs ▶ extends existing GL calls that set and query properties Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 5 / 19
  • 6. Interoperability on Mesa Outline 1 OpenGL interoperability extensions 2 Additions to Mesa and Piglit 3 Questions 4 References Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 6 / 19
  • 7. Interoperability on Mesa Igalia’s contributions Work on the feature Mesa Igalia contributed to the implementation of the interoperability extensions for different Mesa drivers. Piglit (drivers testing framework) As there were no conformance tests available for the extensions, we’ve written a Vulkan framework for Piglit and Vulkan/GL tests that cover some common EXT_external_objects(_fd) use cases. Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 7 / 19
  • 8. Interoperability on Mesa Additions to Mesa (the details) Contributions to Mesa drivers Driver Igalia’s Contributions Status iris implemented EXT_external_objects, EXT_external_objects_fd under review (MR !4337) freedreno implemented EXT_external_objects, EXT_external_objects_fd upstream radeonsi fixes to the already implemented feature work in progress (WIP MR !6364) i965 helped with the review, patches under review (Draft MR !5594) Contributors, reviewers, people who helped! Driver Patches Reviews, Comments, Advice iris Juan A. Suárez Romero, Eleni Maria Stea, Tapani Pälli, Eduardo Lima Mitev Tapani Pälli, Rohan Garg, Eric Engestrom, Kenneth Graunke, Jason Ekstrand, Oscar Barenys, Daniel Stone, Matt Turner, Tomeu Vizoso freedreno Eduardo Lima Mitev, Hyunjun Ko Rob Clark, Marek Olšák, Jonathan Marek, Rohan Garg radeonsi The feature was implemented by AMD a few years ago and we are mostly working on fixes (WIP). feedback from: Bas Nieuwenhuizen, Marek Olšák i965 Rohan Garg, Juan A. Suárez Romero, Tapani Pälli Tomeu Vizoso, Eleni Maria Stea, Oscar Barenys ▶ The information above was accurate at the beginning of September when I pre-recorded this presentation! Apologies if I’ve not included someone or something! Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 8 / 19
  • 9. Interoperability on Mesa Additions to Piglit (the details) I Contributions to Piglit I Reusing color images: Test name Description Output Status vk-image-overwrite • Vulkan: allocates images of different formats and tiling modes • OpenGL: fills them with green • Expectation: green screen upstream vk-image-display • Vulkan: creates an image and fills it with colored bars • OpenGL: draws the image on screen using semaphores to synchronize access • Expectation: a stripped image on screen upstream vk-image-display-overwrite • Vulkan: creates an image and fills it • OpenGL: overwrites that image with another stripped pattern • Vulkan: reads back the contents of the image • Expectation: the modified contents to be read back upstream Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 9 / 19
  • 10. Interoperability on Mesa Additions to Piglit (the details) II Contributions to Piglit II Reusing the depth and stencil buffer: Test name Description Output Status vk-depth-display • Vulkan: creates a depth buffer pattern • OpenGL: draws a fullscreen quad at a greater depth • Expectation: quad partially obscured under review vk-stencil-display • Vulkan: creates a pattern in the stencil buffer • OpenGL: draws a blue fullscreen quad with stencil testing • Expectation: quad masked by stencil pattern under review Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 10 / 19
  • 11. Interoperability on Mesa Additions to Piglit (the details) III Contributions to Piglit III Reusing a pixel buffer: Test name Description Output Status vk-buf-exchange • Vulkan: creates and fills an image with color bars and copies its content to a buffer • OpenGL: uses the buffer as pixel storage for a texture and displays it • Expectation: colored bars on screen upstream vk-pix-buf-update-errors Same as above and: • OpenGL: attempts to overwrite the buffer • Expectation: error is generated, the buffer remains unchanged work in progress Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 11 / 19
  • 12. Interoperability on Mesa Additions to Piglit (the details) IV Contributions to Piglit IV Reusing a vertex buffer: Test name Description Output Status vk-vert-buf-update-errors • Vulkan: creates a vertex buffer and fills it with only the odd quads of a chess board pattern • OpenGL: clears the screen to red and draws the vertex buffer in blue • OpenGL: attempts to overwrite the VBO • Expectation: a red-blue chess board pattern on screen and an invalid operation error is generated work in progress vk-vert-buf-reuse • Vulkan: same as above • OpenGL: same as above minus the invalid overwrite test • Vulkan: reuses the VBO in a renderpass to draw the chess board • Expectation: chessboard on screen work in progress Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 12 / 19
  • 13. Interoperability on Mesa Additions to Piglit (the details) V Contributions to Piglit V Many people helped us with the work on the tests: Contributors Contributions Eleni Maria Stea tests, Vulkan framework code Juan A. Suárez Romero contributions to the framework, and vk-image-overwrite, testing Tapani Pälli (many thanks!) reviews, testing and patches for the framework Bas Nieuwenhuizen framework patch to support dedicated memory Topi Pohjolainen we’ve used some old patches of him as an example at the very beginning ▶ Also thanks to Eduardo Lima Mitev and to Hyunjun Ko for the reviews and to Germán Poo Caamaño who helped tidying up the initial mess of the Vulkan framework commits. ▶ Again, this information was accurate when I prepared and pre-recorded the slides. Sorry if I am missing someone or something! Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 13 / 19
  • 14. Interoperability on Mesa Piglit Results Conclusions from running the tests: ▶ Most of the new Piglit tests are passing in the mesa drivers mentioned before (iris, freedreno, radeonsi, i965). ▶ Unfortunately Mesa does not yet support the depth and stencil buffer exchange. The only implementation I ’ve found that currently supports this feature is the Nvidia proprietary driver. ▶ radeonsi needs some fixes to better support buffers and optimal tiling (WIP). Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 14 / 19
  • 15. Q & A Outline 1 OpenGL interoperability extensions 2 Additions to Mesa and Piglit 3 Questions 4 References Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 15 / 19
  • 16. Q & A Questions? E-mail: estea@igalia.com IRC/Freenode: hikiko Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 16 / 19
  • 17. References Outline 1 OpenGL interoperability extensions 2 Additions to Mesa and Piglit 3 Questions 4 References Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 17 / 19
  • 18. References Links I OpenGL and Vulkan Interoperability on Linux (Blog posts on the Piglit tests use cases). https://eleni.mutantstargoat.com/hikiko/category/igalia/ graphics_drivers/opengl-and-vulkan-interoperability/. Carsten Rohde, Dave Airlie, James Jones, Jan-Harald Fredriksen, Jeff Juliano, and Michael Worcester. EXT_external_objects (GL_EXT_memory_object, GL_EXT_semaphore), July 18, 2018. https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_ external_objects.txt. Carsten Rhode, James Jones, Jan Harald Fredriksen, and Jeff Juliano. EXT_external_objects_fd (GL_EXT_memory_object_fd, GL_EXT_semaphore_fd), June 2, 2017. https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_ external_objects_fd.txt. Eleni Maria Stea <estea@igalia.com> OpenGL and Vulkan Interoperability XDC 2020 18 / 19