xref: /haiku/3rdparty/proposals/khronos/EGL_KHR_platform_haiku.txt (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1*ed24eb5fSAlexander von Gluck IVName
2*ed24eb5fSAlexander von Gluck IV
3*ed24eb5fSAlexander von Gluck IV    KHR_platform_haiku
4*ed24eb5fSAlexander von Gluck IV
5*ed24eb5fSAlexander von Gluck IVName Strings
6*ed24eb5fSAlexander von Gluck IV
7*ed24eb5fSAlexander von Gluck IV    EGL_KHR_platform_haiku
8*ed24eb5fSAlexander von Gluck IV
9*ed24eb5fSAlexander von Gluck IVContributors
10*ed24eb5fSAlexander von Gluck IV
11*ed24eb5fSAlexander von Gluck IV    Alexander von Gluck IV <alex@terarocket.io>
12*ed24eb5fSAlexander von Gluck IV
13*ed24eb5fSAlexander von Gluck IVContacts
14*ed24eb5fSAlexander von Gluck IV
15*ed24eb5fSAlexander von Gluck IV    Alexander von Gluck IV <alex@terarocket.io>
16*ed24eb5fSAlexander von Gluck IV
17*ed24eb5fSAlexander von Gluck IVStatus
18*ed24eb5fSAlexander von Gluck IV
19*ed24eb5fSAlexander von Gluck IV    Draft.
20*ed24eb5fSAlexander von Gluck IV
21*ed24eb5fSAlexander von Gluck IVVersion
22*ed24eb5fSAlexander von Gluck IV
23*ed24eb5fSAlexander von Gluck IV    Version 1, 2023/03/29
24*ed24eb5fSAlexander von Gluck IV
25*ed24eb5fSAlexander von Gluck IVNumber
26*ed24eb5fSAlexander von Gluck IV
27*ed24eb5fSAlexander von Gluck IV    EGL Extension TBD
28*ed24eb5fSAlexander von Gluck IV
29*ed24eb5fSAlexander von Gluck IVExtension Type
30*ed24eb5fSAlexander von Gluck IV
31*ed24eb5fSAlexander von Gluck IV    EGL client extension
32*ed24eb5fSAlexander von Gluck IV
33*ed24eb5fSAlexander von Gluck IVDependencies
34*ed24eb5fSAlexander von Gluck IV
35*ed24eb5fSAlexander von Gluck IV    EGL 1.5 is required.
36*ed24eb5fSAlexander von Gluck IV
37*ed24eb5fSAlexander von Gluck IV    This extension is written against the EGL 1.5 Specification (draft
38*ed24eb5fSAlexander von Gluck IV    20140122).
39*ed24eb5fSAlexander von Gluck IV
40*ed24eb5fSAlexander von Gluck IVOverview
41*ed24eb5fSAlexander von Gluck IV
42*ed24eb5fSAlexander von Gluck IV    This extension defines how to create EGL resources from native Haiku
43*ed24eb5fSAlexander von Gluck IV    resources using the EGL 1.5 platform functionality.
44*ed24eb5fSAlexander von Gluck IV
45*ed24eb5fSAlexander von Gluck IV	Mesa has tracked _EGL_PLATFORM_HAIKU internally for quite some time.
46*ed24eb5fSAlexander von Gluck IV
47*ed24eb5fSAlexander von Gluck IV	libglvnd has received patches for basic Haiku support
48*ed24eb5fSAlexander von Gluck IV
49*ed24eb5fSAlexander von Gluck IVNew Types
50*ed24eb5fSAlexander von Gluck IV
51*ed24eb5fSAlexander von Gluck IV    None
52*ed24eb5fSAlexander von Gluck IV
53*ed24eb5fSAlexander von Gluck IVNew Procedures and Functions
54*ed24eb5fSAlexander von Gluck IV
55*ed24eb5fSAlexander von Gluck IV    None
56*ed24eb5fSAlexander von Gluck IV
57*ed24eb5fSAlexander von Gluck IVNew Tokens
58*ed24eb5fSAlexander von Gluck IV
59*ed24eb5fSAlexander von Gluck IV    Accepted as the <platform> argument of eglGetPlatformDisplay:
60*ed24eb5fSAlexander von Gluck IV
61*ed24eb5fSAlexander von Gluck IV        EGL_PLATFORM_HAIKU_KHR                  0x31D9
62*ed24eb5fSAlexander von Gluck IV
63*ed24eb5fSAlexander von Gluck IVAdditions to the EGL Specification
64*ed24eb5fSAlexander von Gluck IV
65*ed24eb5fSAlexander von Gluck IV    None.
66*ed24eb5fSAlexander von Gluck IV
67*ed24eb5fSAlexander von Gluck IVNew Behavior
68*ed24eb5fSAlexander von Gluck IV
69*ed24eb5fSAlexander von Gluck IV    To determine if the EGL implementation supports this extension, clients
70*ed24eb5fSAlexander von Gluck IV    should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
71*ed24eb5fSAlexander von Gluck IV
72*ed24eb5fSAlexander von Gluck IV    To obtain an EGLDisplay backed by a Haiku display, call
73*ed24eb5fSAlexander von Gluck IV    eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_HAIKU_KHR.  The
74*ed24eb5fSAlexander von Gluck IV    <native_display> parameter specifies the Haiku display  to use and must
75*ed24eb5fSAlexander von Gluck IV    either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If
76*ed24eb5fSAlexander von Gluck IV    <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create a new
77*ed24eb5fSAlexander von Gluck IV    wl_display structure by connecting to the default Wayland socket.  The
78*ed24eb5fSAlexander von Gluck IV    manual page wl_display_connect(3) defines the location of the default
79*ed24eb5fSAlexander von Gluck IV    Wayland socket.
80*ed24eb5fSAlexander von Gluck IV
81*ed24eb5fSAlexander von Gluck IV    To obtain an on-screen rendering surface from a Wayland window, call
82*ed24eb5fSAlexander von Gluck IV    eglCreatePlatformWindowSurface with a <dpy> that belongs to Wayland and
83*ed24eb5fSAlexander von Gluck IV    a <native_window> that points to a `struct wl_egl_surface`.
84*ed24eb5fSAlexander von Gluck IV
85*ed24eb5fSAlexander von Gluck IV    It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
86*ed24eb5fSAlexander von Gluck IV    belongs to Haiku. Any such call fails and generates an
87*ed24eb5fSAlexander von Gluck IV    EGL_BAD_PARAMETER error.
88*ed24eb5fSAlexander von Gluck IV
89*ed24eb5fSAlexander von Gluck IV    Rendering to the obtained EGLSurface or querying it with EGL_BUFFER_AGE_KHR
90*ed24eb5fSAlexander von Gluck IV    will lock its back buffer preventing it from being dropped or resized,
91*ed24eb5fSAlexander von Gluck IV    until the next buffer swap. The rationale behind this behavior is to keep
92*ed24eb5fSAlexander von Gluck IV    operations result accurate until the next swap.
93*ed24eb5fSAlexander von Gluck IV
94*ed24eb5fSAlexander von Gluck IVIssues
95*ed24eb5fSAlexander von Gluck IV
96*ed24eb5fSAlexander von Gluck IV    TBD
97*ed24eb5fSAlexander von Gluck IV
98*ed24eb5fSAlexander von Gluck IVRevision History
99*ed24eb5fSAlexander von Gluck IV    Version 1, 2023/03/29 (Alexander von Gluck IV)
100*ed24eb5fSAlexander von Gluck IV	    - Initial Draft version for Haiku with EGL 1.5+
101