projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "egl: Configs w/o double buffering support have no `EGL_WINDOW_BIT`."
[mesa.git]
/
src
/
egl
/
drivers
/
dri2
/
egl_dri2.h
diff --git
a/src/egl/drivers/dri2/egl_dri2.h
b/src/egl/drivers/dri2/egl_dri2.h
index 4918517b572fb151f5a21109ecc27ddf5ccba235..146f954eacf5ecd22727d7ae1128b0184d2f2696 100644
(file)
--- a/
src/egl/drivers/dri2/egl_dri2.h
+++ b/
src/egl/drivers/dri2/egl_dri2.h
@@
-81,6
+81,9
@@
struct zwp_linux_dmabuf_v1;
#include "eglsync.h"
#include "util/u_vector.h"
#include "eglsync.h"
#include "util/u_vector.h"
+#include "util/bitset.h"
+
+#define EGL_DRI2_MAX_FORMATS 10
struct wl_buffer;
struct wl_buffer;
@@
-119,10
+122,6
@@
struct dri2_egl_display_vtbl {
_EGLSurface *surface,
const EGLint *rects, EGLint n_rects);
_EGLSurface *surface,
const EGLint *rects, EGLint n_rects);
- EGLBoolean (*set_damage_region)(_EGLDriver *drv, _EGLDisplay *disp,
- _EGLSurface *surface,
- const EGLint *rects, EGLint n_rects);
-
EGLBoolean (*swap_buffers_region)(_EGLDriver *drv, _EGLDisplay *disp,
_EGLSurface *surf, EGLint numRects,
const EGLint *rects);
EGLBoolean (*swap_buffers_region)(_EGLDriver *drv, _EGLDisplay *disp,
_EGLSurface *surf, EGLint numRects,
const EGLint *rects);
@@
-182,6
+181,7
@@
struct dri2_egl_display
const __DRInoErrorExtension *no_error;
const __DRI2configQueryExtension *config;
const __DRI2fenceExtension *fence;
const __DRInoErrorExtension *no_error;
const __DRI2configQueryExtension *config;
const __DRI2fenceExtension *fence;
+ const __DRI2bufferDamageExtension *buffer_damage;
const __DRI2blobExtension *blob;
const __DRI2rendererQueryExtension *rendererQuery;
const __DRI2interopExtension *interop;
const __DRI2blobExtension *blob;
const __DRI2rendererQueryExtension *rendererQuery;
const __DRI2interopExtension *interop;
@@
-232,7
+232,7
@@
struct dri2_egl_display
struct zwp_linux_dmabuf_v1 *wl_dmabuf;
struct u_vector *wl_modifiers;
bool authenticated;
struct zwp_linux_dmabuf_v1 *wl_dmabuf;
struct u_vector *wl_modifiers;
bool authenticated;
-
unsigned formats
;
+
BITSET_DECLARE(formats, EGL_DRI2_MAX_FORMATS)
;
uint32_t capabilities;
char *device_name;
#endif
uint32_t capabilities;
char *device_name;
#endif
@@
-322,19
+322,20
@@
struct dri2_egl_surface
__DRIimage *dri_image_front;
/* Used to record all the buffers created by ANativeWindow and their ages.
__DRIimage *dri_image_front;
/* Used to record all the buffers created by ANativeWindow and their ages.
- *
Usually Android uses at most triple buffers in ANativeWindow
- *
so hardcode the number of color_buffers to 3
.
+ *
Allocate number of color_buffers based on query to android bufferqueue
+ *
and save color_buffers_count
.
*/
*/
+ int color_buffers_count;
struct {
struct ANativeWindowBuffer *buffer;
int age;
struct {
struct ANativeWindowBuffer *buffer;
int age;
- }
color_buffers[3]
, *back;
+ }
*color_buffers
, *back;
#endif
#endif
-#if defined(HAVE_SURFACELESS_PLATFORM)
-
__DRIimage *front;
-
unsigned int visual;
-#endif
+ /* surfaceless and device */
+ __DRIimage *front;
+ unsigned int visual;
+
int out_fence_fd;
EGLBoolean enable_out_fence;
};
int out_fence_fd;
EGLBoolean enable_out_fence;
};
@@
-373,6
+374,7
@@
_EGL_DRIVER_TYPECAST(dri2_egl_sync, _EGLSync, obj)
extern const __DRIimageLookupExtension image_lookup_extension;
extern const __DRIuseInvalidateExtension use_invalidate;
extern const __DRIbackgroundCallableExtension background_callable_extension;
extern const __DRIimageLookupExtension image_lookup_extension;
extern const __DRIuseInvalidateExtension use_invalidate;
extern const __DRIbackgroundCallableExtension background_callable_extension;
+extern const __DRIswrastLoaderExtension swrast_pbuffer_loader_extension;
EGLBoolean
dri2_load_driver(_EGLDisplay *disp);
EGLBoolean
dri2_load_driver(_EGLDisplay *disp);
@@
-402,10
+404,20
@@
dri2_surface_get_dri_drawable(_EGLSurface *surf);
__DRIimage *
dri2_lookup_egl_image(__DRIscreen *screen, void *image, void *data);
__DRIimage *
dri2_lookup_egl_image(__DRIscreen *screen, void *image, void *data);
+void
+dri2_get_shifts_and_sizes(const __DRIcoreExtension *core,
+ const __DRIconfig *config, int *shifts,
+ unsigned int *sizes);
+
+void
+dri2_get_render_type_float(const __DRIcoreExtension *core,
+ const __DRIconfig *config,
+ bool *is_float);
+
struct dri2_egl_config *
dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
EGLint surface_type, const EGLint *attr_list,
struct dri2_egl_config *
dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
EGLint surface_type, const EGLint *attr_list,
- const
unsigned int *rgba_mask
s);
+ const
int *rgba_shifts, const unsigned int *rgba_size
s);
_EGLImage *
dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
_EGLImage *
dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
@@
-492,6
+504,11
@@
dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
}
#endif
}
#endif
+EGLBoolean
+dri2_initialize_device(_EGLDriver *drv, _EGLDisplay *disp);
+static inline void
+dri2_teardown_device(struct dri2_egl_display *dri2_dpy) { /* noop */ }
+
void
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw);
void
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw);
@@
-541,6
+558,12
@@
dri2_init_surface(_EGLSurface *surf, _EGLDisplay *disp, EGLint type,
void
dri2_fini_surface(_EGLSurface *surf);
void
dri2_fini_surface(_EGLSurface *surf);
+EGLBoolean
+dri2_create_drawable(struct dri2_egl_display *dri2_dpy,
+ const __DRIconfig *config,
+ struct dri2_egl_surface *dri2_surf,
+ void *loaderPrivate);
+
static inline uint64_t
combine_u32_into_u64(uint32_t hi, uint32_t lo)
{
static inline uint64_t
combine_u32_into_u64(uint32_t hi, uint32_t lo)
{