diff options
-rw-r--r-- | packaging/mesa.spec | 37 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_drm.c | 22 | ||||
-rw-r--r-- | src/egl/main/egldisplay.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/lima/lima_resource.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/glsl_tests/amdgcn_glslc.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/tegra/tegra_screen.c | 4 | ||||
-rw-r--r-- | src/gbm/backends/dri/gbm_dri.c | 17 | ||||
-rw-r--r-- | src/gbm/gbm-symbols.txt | 76 | ||||
-rw-r--r-- | src/gbm/main/backend.c | 42 | ||||
-rw-r--r-- | src/gbm/main/gbm.c | 92 | ||||
-rw-r--r-- | src/gbm/main/gbm.h | 76 | ||||
-rw-r--r-- | src/gbm/meson.build | 12 |
12 files changed, 237 insertions, 147 deletions
diff --git a/packaging/mesa.spec b/packaging/mesa.spec index fdcdbbb0fe0..d3d5a7b0456 100644 --- a/packaging/mesa.spec +++ b/packaging/mesa.spec @@ -40,6 +40,8 @@ ExclusiveArch: %define enable_driver() %{expand:%%{?!enable_%{1}: %%global enable_%{1} 1}} %ifarch %ix86 x86_64 +%define USE_GBM 1 +%define USE_VULKAN 0 %define gallium_drivers "i915,virgl,swrast" %define vulkan_drivers "" %define dri_drivers "" @@ -47,17 +49,16 @@ ExclusiveArch: %define USE_GBM 0 %define USE_VULKAN 1 %define VULKAN_DRIVER broadcom +%define gallium_drivers "vc4,v3d,kmsro,virgl,swrast" +%define vulkan_drivers "%{?enable_vulkan:%{VULKAN_DRIVER}}" +%define dri_drivers "auto" +%endif %if %{USE_GBM} == 1 %enable_driver gbm %endif %if %{USE_VULKAN} == 1 %enable_driver vulkan %endif -%define gallium_drivers "vc4,v3d,kmsro,virgl,swrast" -%define vulkan_drivers "%{?enable_vulkan:%{VULKAN_DRIVER}}" -%define dri_drivers "auto" -%endif - %description Mesa is a 3-D graphics library with an API which is very similar to @@ -74,6 +75,15 @@ just Mesa or The Mesa 3-D graphics library. * OpenGL is a trademark of Silicon Graphics Incorporated. +%if %{USE_GBM} == 1 +%package -n libgbm-mesa-devel +Summary: AAAAAAAAAAAAA ASDFJOKASDFIOJKSDFIOJSDFJKSDFJKSDFKJ:SDFJK:KJL:SDKJ:FLS +Group: System/Libraries +Requires: %{name} +%description -n libgbm-mesa-devel +AAAAAAAAAAAAA ASDFJOKASDFIOJKSDFIOJSDFJKSDFJKSDFKJ:SDFJK:KJL:SDKJ:FLS +%endif + %prep %setup -q -n %{name}-%{version} cp %{SOURCE1001} . @@ -117,6 +127,11 @@ cp 99-GPU-Acceleration.rules %{buildroot}%{_hal_libdir}/udev/rules.d mkdir -p %{buildroot}%{_hal_prefix}/share/licenses/%{name} cp COPYING %{buildroot}%{_hal_prefix}/share/licenses/%{name}/ +%if "%{USE_GBM}" == "1" +mkdir -p %{buildroot}%{_libdir}/pkgconfig +mv %{buildroot}%{_hal_libdir}/pkgconfig/gbm_mesa.pc %{buildroot}%{_libdir}/pkgconfig/gbm_mesa.pc +%endif + %post -p /sbin/ldconfig %postun -p /sbin/ldconfig @@ -129,10 +144,20 @@ cp COPYING %{buildroot}%{_hal_prefix}/share/licenses/%{name}/ %{_hal_libdir}/driver/* %{_hal_libdir}/dri/* %if "%{USE_GBM}" == "1" -%{_hal_libdir}/libgbm* +%{_hal_libdir}/libgbm_mesa.so.1 +%{_hal_libdir}/libgbm_mesa.so.1.0.0 %endif %if "%{USE_VULKAN}" == "1" %{_hal_libdir}/libvulkan_%{VULKAN_DRIVER}.so %{_hal_prefix}/share/vulkan/icd.d/* %endif %{_hal_libdir}/udev/rules.d/99-GPU-Acceleration.rules + +%if "%{USE_GBM}" == "1" +%files -n libgbm-mesa-devel +%manifest %{name}.manifest +%defattr(-,root,root) +%{_libdir}/pkgconfig/gbm_mesa.pc +%{_hal_prefix}/include/gbm.h +%{_hal_libdir}/libgbm_mesa.so +%endif diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 45895a88b6c..fd6fd127f9d 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -212,7 +212,7 @@ dri2_drm_destroy_surface(_EGLDisplay *disp, _EGLSurface *surf) for (unsigned i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) { if (dri2_surf->color_buffers[i].bo) - gbm_bo_destroy(dri2_surf->color_buffers[i].bo); + gbm_mesa_bo_destroy(dri2_surf->color_buffers[i].bo); } dri2_egl_surface_free_local_buffers(dri2_surf); @@ -245,7 +245,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf) return -1; if (dri2_surf->back->bo == NULL) { if (surf->base.v0.modifiers) - dri2_surf->back->bo = gbm_bo_create_with_modifiers(&dri2_dpy->gbm_dri->base, + dri2_surf->back->bo = gbm_mesa_bo_create_with_modifiers(&dri2_dpy->gbm_dri->base, surf->base.v0.width, surf->base.v0.height, surf->base.v0.format, @@ -255,7 +255,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf) unsigned flags = surf->base.v0.flags; if (dri2_surf->base.ProtectedContent) flags |= GBM_BO_USE_PROTECTED; - dri2_surf->back->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base, + dri2_surf->back->bo = gbm_mesa_bo_create(&dri2_dpy->gbm_dri->base, surf->base.v0.width, surf->base.v0.height, surf->base.v0.format, @@ -282,7 +282,7 @@ get_swrast_front_bo(struct dri2_egl_surface *dri2_surf) } if (dri2_surf->current->bo == NULL) - dri2_surf->current->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base, + dri2_surf->current->bo = gbm_mesa_bo_create(&dri2_dpy->gbm_dri->base, surf->base.v0.width, surf->base.v0.height, surf->base.v0.format, @@ -537,7 +537,7 @@ swrast_put_image2(__DRIdrawable *driDrawable, bo = gbm_dri_bo(dri2_surf->current->bo); - bpp = gbm_bo_get_bpp(&bo->base); + bpp = gbm_mesa_bo_get_bpp(&bo->base); if (bpp == 0) return; @@ -582,7 +582,7 @@ swrast_get_image(__DRIdrawable *driDrawable, bo = gbm_dri_bo(dri2_surf->current->bo); - bpp = gbm_bo_get_bpp(&bo->base); + bpp = gbm_mesa_bo_get_bpp(&bo->base); if (bpp == 0) return; @@ -661,7 +661,7 @@ drm_add_configs_for_visuals(_EGLDisplay *disp) if (!format_count[i]) { struct gbm_format_name_desc desc; _eglLog(_EGL_DEBUG, "No DRI config supports native format %s", - gbm_format_get_name(visuals[i].gbm_format, &desc)); + gbm_mesa_format_get_name(visuals[i].gbm_format, &desc)); } } @@ -700,14 +700,14 @@ dri2_initialize_drm(_EGLDisplay *disp) int n = snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, 0); if (n != -1 && n < sizeof(buf)) dri2_dpy->fd = loader_open_device(buf); - gbm = gbm_create_device(dri2_dpy->fd); + gbm = gbm_mesa_create_device(dri2_dpy->fd); if (gbm == NULL) { err = "DRI2: failed to create gbm device"; goto cleanup; } dri2_dpy->own_device = true; } else { - dri2_dpy->fd = os_dupfd_cloexec(gbm_device_get_fd(gbm)); + dri2_dpy->fd = os_dupfd_cloexec(gbm_mesa_device_get_fd(gbm)); if (dri2_dpy->fd < 0) { err = "DRI2: failed to fcntl() existing gbm device"; goto cleanup; @@ -715,7 +715,7 @@ dri2_initialize_drm(_EGLDisplay *disp) } dri2_dpy->gbm_dri = gbm_dri_device(gbm); - if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) { + if (strcmp(gbm_mesa_device_get_backend_name(gbm), "drm") != 0) { err = "DRI2: gbm device using incorrect/incompatible backend"; goto cleanup; } @@ -805,5 +805,5 @@ void dri2_teardown_drm(struct dri2_egl_display *dri2_dpy) { if (dri2_dpy->own_device) - gbm_device_destroy(&dri2_dpy->gbm_dri->base); + gbm_mesa_device_destroy(&dri2_dpy->gbm_dri->base); } diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 65616d907d9..10c33eb4a87 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -162,7 +162,7 @@ _eglNativePlatformDetectNativeDisplay(void *nativeDisplay) #ifdef HAVE_DRM_PLATFORM /* gbm has a pointer to its constructor as first element. */ - if (first_pointer == gbm_create_device) + if (first_pointer == gbm_mesa_create_device) return _EGL_PLATFORM_DRM; #endif } diff --git a/src/gallium/drivers/lima/lima_resource.c b/src/gallium/drivers/lima/lima_resource.c index 260212178bb..111fd41b566 100644 --- a/src/gallium/drivers/lima/lima_resource.c +++ b/src/gallium/drivers/lima/lima_resource.c @@ -256,7 +256,7 @@ lima_resource_create_with_modifiers(struct pipe_screen *pscreen, { struct pipe_resource tmpl = *templat; - /* gbm_bo_create_with_modifiers & gbm_surface_create_with_modifiers + /* gbm_mesa_bo_create_with_modifiers & gbm_mesa_surface_create_with_modifiers * don't have usage parameter, but buffer created by these functions * may be used for scanout. So we assume buffer created by this * function always enable scanout if linear modifier is permitted. diff --git a/src/gallium/drivers/radeonsi/glsl_tests/amdgcn_glslc.c b/src/gallium/drivers/radeonsi/glsl_tests/amdgcn_glslc.c index bbdbb50b36a..aaae6652dda 100644 --- a/src/gallium/drivers/radeonsi/glsl_tests/amdgcn_glslc.c +++ b/src/gallium/drivers/radeonsi/glsl_tests/amdgcn_glslc.c @@ -78,7 +78,7 @@ create_gl_core_context() exit(1); } - struct gbm_device *gbm = gbm_create_device(fd); + struct gbm_device *gbm = gbm_mesa_create_device(fd); if (unlikely(gbm == NULL)) { fprintf(stderr, "ERROR: Couldn't create gbm device\n"); exit(1); diff --git a/src/gallium/drivers/tegra/tegra_screen.c b/src/gallium/drivers/tegra/tegra_screen.c index 18bc624ca6c..de8e2915d56 100644 --- a/src/gallium/drivers/tegra/tegra_screen.c +++ b/src/gallium/drivers/tegra/tegra_screen.c @@ -222,7 +222,7 @@ tegra_screen_resource_create(struct pipe_screen *pscreen, * * Technically it is possible for applications to create resources without * specifying a modifier but still query the modifier associated with the - * resource (e.g. using gbm_bo_get_modifier()) before handing it to the + * resource (e.g. using gbm_mesa_bo_get_modifier()) before handing it to the * framebuffer creation API (such as the DRM_IOCTL_MODE_ADDFB2 IOCTL). */ if (template->bind & PIPE_BIND_SCANOUT) @@ -482,7 +482,7 @@ tegra_screen_resource_create_with_modifiers(struct pipe_screen *pscreen, /* * Assume that resources created with modifiers will always be used for * scanout. This is necessary because some of the APIs that are used to - * create resources with modifiers (e.g. gbm_bo_create_with_modifiers()) + * create resources with modifiers (e.g. gbm_mesa_bo_create_with_modifiers()) * can't pass along usage information. Adding that capability might be * worth adding to remove this ambiguity. Not all future use-cases that * involve modifiers may always be targetting scanout hardware. diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 36cee87a2fd..1aae26dbeea 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -25,6 +25,9 @@ * Benjamin Franzke <benjaminfranzke@googlemail.com> */ +#define LOG_TAG "TBM_GBM" +#include <dlog.h> + #include <stdio.h> #include <stdlib.h> #include <stddef.h> @@ -1434,10 +1437,12 @@ dri_destroy(struct gbm_device *gbm) static struct gbm_device * dri_device_create(int fd, uint32_t gbm_backend_version) { + SLOGI("."); struct gbm_dri_device *dri; int ret; bool force_sw; + SLOGI("."); /* * Since the DRI backend is built-in to the loader, the loader ABI version is * guaranteed to match this backend's ABI version @@ -1445,10 +1450,12 @@ dri_device_create(int fd, uint32_t gbm_backend_version) assert(gbm_core.v0.core_version == GBM_BACKEND_ABI_VERSION); assert(gbm_core.v0.core_version == gbm_backend_version); + SLOGI("."); dri = calloc(1, sizeof *dri); if (!dri) return NULL; + SLOGI("."); dri->base.v0.fd = fd; dri->base.v0.backend_version = gbm_backend_version; dri->base.v0.bo_create = gbm_dri_bo_create; @@ -1476,25 +1483,33 @@ dri_device_create(int fd, uint32_t gbm_backend_version) dri->visual_table = gbm_dri_visuals_table; dri->num_visuals = ARRAY_SIZE(gbm_dri_visuals_table); + SLOGI("."); mtx_init(&dri->mutex, mtx_plain); + SLOGI("."); force_sw = debug_get_bool_option("GBM_ALWAYS_SOFTWARE", false); if (!force_sw) { + SLOGI("."); ret = dri_screen_create(dri); - if (ret) + if (ret) { + SLOGI("."); ret = dri_screen_create_sw(dri); + } } else { + SLOGI("."); ret = dri_screen_create_sw(dri); } if (ret) goto err_dri; + SLOGI("."); return &dri->base; err_dri: free(dri); + SLOGI("."); return NULL; } diff --git a/src/gbm/gbm-symbols.txt b/src/gbm/gbm-symbols.txt index d3c99b0c389..6c118c2b6be 100644 --- a/src/gbm/gbm-symbols.txt +++ b/src/gbm/gbm-symbols.txt @@ -1,38 +1,38 @@ -gbm_bo_create -gbm_bo_create_with_modifiers -gbm_bo_create_with_modifiers2 -gbm_bo_destroy -gbm_bo_get_bpp -gbm_bo_get_device -gbm_bo_get_fd -gbm_bo_get_fd_for_plane -gbm_bo_get_format -gbm_bo_get_handle -gbm_bo_get_handle_for_plane -gbm_bo_get_height -gbm_bo_get_modifier -gbm_bo_get_offset -gbm_bo_get_plane_count -gbm_bo_get_stride -gbm_bo_get_stride_for_plane -gbm_bo_get_user_data -gbm_bo_get_width -gbm_bo_import -gbm_bo_map -gbm_bo_set_user_data -gbm_bo_unmap -gbm_bo_write -gbm_create_device -gbm_device_destroy -gbm_device_get_backend_name -gbm_device_get_fd -gbm_device_get_format_modifier_plane_count -gbm_device_is_format_supported -gbm_format_get_name -gbm_surface_create -gbm_surface_create_with_modifiers -gbm_surface_create_with_modifiers2 -gbm_surface_destroy -gbm_surface_has_free_buffers -gbm_surface_lock_front_buffer -gbm_surface_release_buffer +gbm_mesa_bo_create +gbm_mesa_bo_create_with_modifiers +gbm_mesa_bo_create_with_modifiers2 +gbm_mesa_bo_destroy +gbm_mesa_bo_get_bpp +gbm_mesa_bo_get_device +gbm_mesa_bo_get_fd +gbm_mesa_bo_get_fd_for_plane +gbm_mesa_bo_get_format +gbm_mesa_bo_get_handle +gbm_mesa_bo_get_handle_for_plane +gbm_mesa_bo_get_height +gbm_mesa_bo_get_modifier +gbm_mesa_bo_get_offset +gbm_mesa_bo_get_plane_count +gbm_mesa_bo_get_stride +gbm_mesa_bo_get_stride_for_plane +gbm_mesa_bo_get_user_data +gbm_mesa_bo_get_width +gbm_mesa_bo_import +gbm_mesa_bo_map +gbm_mesa_bo_set_user_data +gbm_mesa_bo_unmap +gbm_mesa_bo_write +gbm_mesa_create_device +gbm_mesa_device_destroy +gbm_mesa_device_get_backend_name +gbm_mesa_device_get_fd +gbm_mesa_device_get_format_modifier_plane_count +gbm_mesa_device_is_format_supported +gbm_mesa_format_get_name +gbm_mesa_surface_create +gbm_mesa_surface_create_with_modifiers +gbm_mesa_surface_create_with_modifiers2 +gbm_mesa_surface_destroy +gbm_mesa_surface_has_free_buffers +gbm_mesa_surface_lock_front_buffer +gbm_mesa_surface_release_buffer diff --git a/src/gbm/main/backend.c b/src/gbm/main/backend.c index 974d0a76a4e..583994431f4 100644 --- a/src/gbm/main/backend.c +++ b/src/gbm/main/backend.c @@ -27,6 +27,9 @@ * James Jones <jajones@nvidia.com> */ +#define LOG_TAG "TBM_GBM" +#include <dlog.h> + #include <stdio.h> #include <stddef.h> #include <stdlib.h> @@ -96,45 +99,60 @@ create_backend_desc(const char *name, static struct gbm_device * backend_create_device(const struct gbm_backend_desc *bd, int fd) { + SLOGI("."); const uint32_t abi_ver = VER_MIN(GBM_BACKEND_ABI_VERSION, bd->backend->v0.backend_version); + SLOGI("."); struct gbm_device *dev = bd->backend->v0.create_device(fd, abi_ver); + SLOGI("."); if (dev) { + SLOGI("."); if (abi_ver != dev->v0.backend_version) { + SLOGI("."); _gbm_device_destroy(dev); return NULL; } + SLOGI("."); dev->v0.backend_desc = bd; } + SLOGI("."); return dev; } static struct gbm_device * load_backend(void *lib, int fd, const char *name) { + SLOGI("."); struct gbm_device *dev = NULL; struct gbm_backend_desc *backend_desc; const struct gbm_backend *gbm_backend; GBM_GET_BACKEND_PROC_PTR get_backend; + SLOGI("."); get_backend = dlsym(lib, GBM_GET_BACKEND_PROC_NAME); + SLOGI("."); if (!get_backend) goto fail; + SLOGI("."); gbm_backend = get_backend(&gbm_core); backend_desc = create_backend_desc(name, gbm_backend, lib); + SLOGI("."); if (!backend_desc) goto fail; + SLOGI("."); dev = backend_create_device(backend_desc, fd); + SLOGI("."); if (!dev) free_backend_desc(backend_desc); + SLOGI("."); return dev; fail: @@ -145,85 +163,109 @@ fail: static struct gbm_device * find_backend(const char *name, int fd) { + SLOGI("."); struct gbm_device *dev = NULL; const struct gbm_backend_desc *bd; void *lib; unsigned i; + SLOGI("."); for (i = 0; i < ARRAY_SIZE(builtin_backends); ++i) { + SLOGI("."); bd = &builtin_backends[i]; + SLOGI("."); if (name && strcmp(bd->name, name)) continue; + SLOGI("."); dev = backend_create_device(bd, fd); + SLOGI("."); if (dev) break; } + SLOGI("."); if (name && !dev) { + SLOGI("."); lib = loader_open_driver_lib(name, BACKEND_LIB_SUFFIX, backend_search_path_vars, DEFAULT_BACKENDS_PATH, true); + SLOGI("."); if (lib) dev = load_backend(lib, fd, name); } + SLOGI("."); return dev; } static struct gbm_device * override_backend(int fd) { + SLOGI("."); struct gbm_device *dev = NULL; const char *b; + SLOGI("."); b = getenv("GBM_BACKEND"); if (b) dev = find_backend(b, fd); + SLOGI("."); return dev; } static struct gbm_device * backend_from_driver_name(int fd) { + SLOGI("."); struct gbm_device *dev = NULL; drmVersionPtr v = drmGetVersion(fd); void *lib; + SLOGI("."); if (!v) return NULL; + SLOGI("."); lib = loader_open_driver_lib(v->name, BACKEND_LIB_SUFFIX, backend_search_path_vars, DEFAULT_BACKENDS_PATH, false); + SLOGI("."); if (lib) dev = load_backend(lib, fd, v->name); + SLOGI("."); drmFreeVersion(v); + SLOGI("."); return dev; } struct gbm_device * _gbm_create_device(int fd) { + SLOGI("."); struct gbm_device *dev; + SLOGI("."); dev = override_backend(fd); + SLOGI("."); if (!dev) dev = backend_from_driver_name(fd); + SLOGI("."); if (!dev) dev = find_backend(NULL, fd); + SLOGI("."); return dev; } diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c index 599f7aae9b6..bdefa268c95 100644 --- a/src/gbm/main/gbm.c +++ b/src/gbm/main/gbm.c @@ -25,6 +25,9 @@ * Benjamin Franzke <benjaminfranzke@googlemail.com> */ +#define LOG_TAG "TBM_GBM" +#include <dlog.h> + #include <stddef.h> #include <stdio.h> #include <stdlib.h> @@ -50,7 +53,7 @@ * \return The fd that the struct gbm_device was created with */ GBM_EXPORT int -gbm_device_get_fd(struct gbm_device *gbm) +gbm_mesa_device_get_fd(struct gbm_device *gbm) { return gbm->v0.fd; } @@ -61,7 +64,7 @@ gbm_device_get_fd(struct gbm_device *gbm) * be freed */ GBM_EXPORT const char * -gbm_device_get_backend_name(struct gbm_device *gbm) +gbm_mesa_device_get_backend_name(struct gbm_device *gbm) { return gbm->v0.name; } @@ -79,7 +82,7 @@ gbm_device_get_backend_name(struct gbm_device *gbm) * \sa enum gbm_bo_format for the list of formats */ GBM_EXPORT int -gbm_device_is_format_supported(struct gbm_device *gbm, +gbm_mesa_device_is_format_supported(struct gbm_device *gbm, uint32_t format, uint32_t flags) { return gbm->v0.is_format_supported(gbm, format, flags); @@ -92,7 +95,7 @@ gbm_device_is_format_supported(struct gbm_device *gbm, * \param modifier The modifier to query */ GBM_EXPORT int -gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm, +gbm_mesa_device_get_format_modifier_plane_count(struct gbm_device *gbm, uint32_t format, uint64_t modifier) { @@ -107,7 +110,7 @@ gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm, * \param gbm The device created using gbm_create_device() */ GBM_EXPORT void -gbm_device_destroy(struct gbm_device *gbm) +gbm_mesa_device_destroy(struct gbm_device *gbm) { _gbm_device_destroy(gbm); } @@ -125,22 +128,27 @@ gbm_device_destroy(struct gbm_device *gbm) * needed. If the creation of the device failed NULL will be returned. */ GBM_EXPORT struct gbm_device * -gbm_create_device(int fd) +gbm_mesa_create_device(int fd) { + SLOGI("."); struct gbm_device *gbm = NULL; struct stat buf; + SLOGI("."); if (fd < 0 || fstat(fd, &buf) < 0 || !S_ISCHR(buf.st_mode)) { errno = EINVAL; return NULL; } + SLOGI("."); gbm = _gbm_create_device(fd); if (gbm == NULL) return NULL; - gbm->dummy = gbm_create_device; + SLOGI("."); + gbm->dummy = gbm_mesa_create_device; + SLOGI("."); return gbm; } @@ -151,7 +159,7 @@ gbm_create_device(int fd) * */ GBM_EXPORT uint32_t -gbm_bo_get_width(struct gbm_bo *bo) +gbm_mesa_bo_get_width(struct gbm_bo *bo) { return bo->v0.width; } @@ -162,7 +170,7 @@ gbm_bo_get_width(struct gbm_bo *bo) * \return The height of the allocated buffer object */ GBM_EXPORT uint32_t -gbm_bo_get_height(struct gbm_bo *bo) +gbm_mesa_bo_get_height(struct gbm_bo *bo) { return bo->v0.height; } @@ -176,9 +184,9 @@ gbm_bo_get_height(struct gbm_bo *bo) * \return The stride of the allocated buffer object in bytes */ GBM_EXPORT uint32_t -gbm_bo_get_stride(struct gbm_bo *bo) +gbm_mesa_bo_get_stride(struct gbm_bo *bo) { - return gbm_bo_get_stride_for_plane(bo, 0); + return gbm_mesa_bo_get_stride_for_plane(bo, 0); } /** Get the stride for the given plane @@ -189,7 +197,7 @@ gbm_bo_get_stride(struct gbm_bo *bo) * \sa gbm_bo_get_stride() */ GBM_EXPORT uint32_t -gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane) +gbm_mesa_bo_get_stride_for_plane(struct gbm_bo *bo, int plane) { return bo->gbm->v0.bo_get_stride(bo, plane); } @@ -202,7 +210,7 @@ gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane) * \return The format of buffer object, one of the GBM_FORMAT_* codes */ GBM_EXPORT uint32_t -gbm_bo_get_format(struct gbm_bo *bo) +gbm_mesa_bo_get_format(struct gbm_bo *bo) { return bo->v0.format; } @@ -220,7 +228,7 @@ gbm_bo_get_format(struct gbm_bo *bo) * \return The number of bits0per-pixel of the buffer object's format. */ GBM_EXPORT uint32_t -gbm_bo_get_bpp(struct gbm_bo *bo) +gbm_mesa_bo_get_bpp(struct gbm_bo *bo) { switch (bo->v0.format) { default: @@ -291,7 +299,7 @@ gbm_bo_get_bpp(struct gbm_bo *bo) * \return The offset */ GBM_EXPORT uint32_t -gbm_bo_get_offset(struct gbm_bo *bo, int plane) +gbm_mesa_bo_get_offset(struct gbm_bo *bo, int plane) { return bo->gbm->v0.bo_get_offset(bo, plane); } @@ -302,7 +310,7 @@ gbm_bo_get_offset(struct gbm_bo *bo, int plane) * \return Returns the gbm device with which the buffer object was created */ GBM_EXPORT struct gbm_device * -gbm_bo_get_device(struct gbm_bo *bo) +gbm_mesa_bo_get_device(struct gbm_bo *bo) { return bo->gbm; } @@ -316,7 +324,7 @@ gbm_bo_get_device(struct gbm_bo *bo) * \return Returns the handle of the allocated buffer object */ GBM_EXPORT union gbm_bo_handle -gbm_bo_get_handle(struct gbm_bo *bo) +gbm_mesa_bo_get_handle(struct gbm_bo *bo) { return bo->v0.handle; } @@ -333,7 +341,7 @@ gbm_bo_get_handle(struct gbm_bo *bo) * if an error occurs. */ GBM_EXPORT int -gbm_bo_get_fd(struct gbm_bo *bo) +gbm_mesa_bo_get_fd(struct gbm_bo *bo) { return bo->gbm->v0.bo_get_fd(bo); } @@ -344,7 +352,7 @@ gbm_bo_get_fd(struct gbm_bo *bo) * \return The number of planes */ GBM_EXPORT int -gbm_bo_get_plane_count(struct gbm_bo *bo) +gbm_mesa_bo_get_plane_count(struct gbm_bo *bo) { return bo->gbm->v0.bo_get_planes(bo); } @@ -362,7 +370,7 @@ gbm_bo_get_plane_count(struct gbm_bo *bo) * \sa gbm_bo_get_handle() */ GBM_EXPORT union gbm_bo_handle -gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane) +gbm_mesa_bo_get_handle_for_plane(struct gbm_bo *bo, int plane) { return bo->gbm->v0.bo_get_handle(bo, plane); } @@ -382,7 +390,7 @@ gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane) * \sa gbm_bo_get_fd() */ GBM_EXPORT int -gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane) +gbm_mesa_bo_get_fd_for_plane(struct gbm_bo *bo, int plane) { return bo->gbm->v0.bo_get_plane_fd(bo, plane); } @@ -401,7 +409,7 @@ gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane) * \sa define DRM_FORMAT_MOD_* in drm_fourcc.h for possible modifiers */ GBM_EXPORT uint64_t -gbm_bo_get_modifier(struct gbm_bo *bo) +gbm_mesa_bo_get_modifier(struct gbm_bo *bo) { return bo->gbm->v0.bo_get_modifier(bo); } @@ -420,7 +428,7 @@ gbm_bo_get_modifier(struct gbm_bo *bo) * \return Returns 0 on success, otherwise -1 is returned an errno set */ GBM_EXPORT int -gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count) +gbm_mesa_bo_write(struct gbm_bo *bo, const void *buf, size_t count) { return bo->gbm->v0.bo_write(bo, buf, count); } @@ -433,7 +441,7 @@ gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count) * called prior to the buffer destruction */ GBM_EXPORT void -gbm_bo_set_user_data(struct gbm_bo *bo, void *data, +gbm_mesa_bo_set_user_data(struct gbm_bo *bo, void *data, void (*destroy_user_data)(struct gbm_bo *, void *)) { bo->v0.user_data = data; @@ -449,7 +457,7 @@ gbm_bo_set_user_data(struct gbm_bo *bo, void *data, * \sa gbm_bo_set_user_data() */ GBM_EXPORT void * -gbm_bo_get_user_data(struct gbm_bo *bo) +gbm_mesa_bo_get_user_data(struct gbm_bo *bo) { return bo->v0.user_data; } @@ -461,7 +469,7 @@ gbm_bo_get_user_data(struct gbm_bo *bo) * \param bo The buffer object */ GBM_EXPORT void -gbm_bo_destroy(struct gbm_bo *bo) +gbm_mesa_bo_destroy(struct gbm_bo *bo) { if (bo->v0.destroy_user_data) bo->v0.destroy_user_data(bo, bo->v0.user_data); @@ -486,7 +494,7 @@ gbm_bo_destroy(struct gbm_bo *bo) * \sa enum gbm_bo_flags for the list of usage flags */ GBM_EXPORT struct gbm_bo * -gbm_bo_create(struct gbm_device *gbm, +gbm_mesa_bo_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, uint32_t flags) { @@ -499,7 +507,7 @@ gbm_bo_create(struct gbm_device *gbm, } GBM_EXPORT struct gbm_bo * -gbm_bo_create_with_modifiers(struct gbm_device *gbm, +gbm_mesa_bo_create_with_modifiers(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -519,12 +527,12 @@ gbm_bo_create_with_modifiers(struct gbm_device *gbm, flags |= GBM_BO_USE_SCANOUT; } - return gbm_bo_create_with_modifiers2(gbm, width, height, format, modifiers, + return gbm_mesa_bo_create_with_modifiers2(gbm, width, height, format, modifiers, count, flags); } GBM_EXPORT struct gbm_bo * -gbm_bo_create_with_modifiers2(struct gbm_device *gbm, +gbm_mesa_bo_create_with_modifiers2(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -577,7 +585,7 @@ gbm_bo_create_with_modifiers2(struct gbm_device *gbm, * \sa enum gbm_bo_flags for the list of usage flags */ GBM_EXPORT struct gbm_bo * -gbm_bo_import(struct gbm_device *gbm, +gbm_mesa_bo_import(struct gbm_device *gbm, uint32_t type, void *buffer, uint32_t flags) { return gbm->v0.bo_import(gbm, type, buffer, flags); @@ -612,7 +620,7 @@ gbm_bo_import(struct gbm_device *gbm, * \sa enum gbm_bo_transfer_flags for the list of flags */ GBM_EXPORT void * -gbm_bo_map(struct gbm_bo *bo, +gbm_mesa_bo_map(struct gbm_bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint32_t flags, uint32_t *stride, void **map_data) @@ -636,7 +644,7 @@ gbm_bo_map(struct gbm_bo *bo, * \param map_data opaque ptr returned from prior gbm_bo_map */ GBM_EXPORT void -gbm_bo_unmap(struct gbm_bo *bo, void *map_data) +gbm_mesa_bo_unmap(struct gbm_bo *bo, void *map_data) { bo->gbm->v0.bo_unmap(bo, map_data); } @@ -656,7 +664,7 @@ gbm_bo_unmap(struct gbm_bo *bo, void *map_data) * \sa enum gbm_bo_format for the list of formats */ GBM_EXPORT struct gbm_surface * -gbm_surface_create(struct gbm_device *gbm, +gbm_mesa_surface_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, uint32_t flags) { @@ -664,7 +672,7 @@ gbm_surface_create(struct gbm_device *gbm, } GBM_EXPORT struct gbm_surface * -gbm_surface_create_with_modifiers(struct gbm_device *gbm, +gbm_mesa_surface_create_with_modifiers(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -684,13 +692,13 @@ gbm_surface_create_with_modifiers(struct gbm_device *gbm, flags |= GBM_BO_USE_SCANOUT; } - return gbm_surface_create_with_modifiers2(gbm, width, height, format, + return gbm_mesa_surface_create_with_modifiers2(gbm, width, height, format, modifiers, count, flags); } GBM_EXPORT struct gbm_surface * -gbm_surface_create_with_modifiers2(struct gbm_device *gbm, +gbm_mesa_surface_create_with_modifiers2(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -721,7 +729,7 @@ gbm_surface_create_with_modifiers2(struct gbm_device *gbm, * \param surf The surface */ GBM_EXPORT void -gbm_surface_destroy(struct gbm_surface *surf) +gbm_mesa_surface_destroy(struct gbm_surface *surf) { surf->gbm->v0.surface_destroy(surf); } @@ -746,7 +754,7 @@ gbm_surface_destroy(struct gbm_surface *surf) * returns %NULL. */ GBM_EXPORT struct gbm_bo * -gbm_surface_lock_front_buffer(struct gbm_surface *surf) +gbm_mesa_surface_lock_front_buffer(struct gbm_surface *surf) { return surf->gbm->v0.surface_lock_front_buffer(surf); } @@ -764,7 +772,7 @@ gbm_surface_lock_front_buffer(struct gbm_surface *surf) * \param bo The buffer object */ GBM_EXPORT void -gbm_surface_release_buffer(struct gbm_surface *surf, struct gbm_bo *bo) +gbm_mesa_surface_release_buffer(struct gbm_surface *surf, struct gbm_bo *bo) { surf->gbm->v0.surface_release_buffer(surf, bo); } @@ -786,7 +794,7 @@ gbm_surface_release_buffer(struct gbm_surface *surf, struct gbm_bo *bo) * \return 1 if the surface has free buffers, 0 otherwise */ GBM_EXPORT int -gbm_surface_has_free_buffers(struct gbm_surface *surf) +gbm_mesa_surface_has_free_buffers(struct gbm_surface *surf) { return surf->gbm->v0.surface_has_free_buffers(surf); } @@ -814,7 +822,7 @@ format_canonicalize(uint32_t gbm_format) * \return String containing the fourcc of the format. */ GBM_EXPORT char * -gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc) +gbm_mesa_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc) { gbm_format = format_canonicalize(gbm_format); diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h index 1a1e2caecb4..9655c6e9629 100644 --- a/src/gbm/main/gbm.h +++ b/src/gbm/main/gbm.h @@ -267,40 +267,40 @@ enum gbm_bo_flags { }; int -gbm_device_get_fd(struct gbm_device *gbm); +gbm_mesa_device_get_fd(struct gbm_device *gbm); const char * -gbm_device_get_backend_name(struct gbm_device *gbm); +gbm_mesa_device_get_backend_name(struct gbm_device *gbm); int -gbm_device_is_format_supported(struct gbm_device *gbm, +gbm_mesa_device_is_format_supported(struct gbm_device *gbm, uint32_t format, uint32_t flags); int -gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm, +gbm_mesa_device_get_format_modifier_plane_count(struct gbm_device *gbm, uint32_t format, uint64_t modifier); void -gbm_device_destroy(struct gbm_device *gbm); +gbm_mesa_device_destroy(struct gbm_device *gbm); struct gbm_device * -gbm_create_device(int fd); +gbm_mesa_create_device(int fd); struct gbm_bo * -gbm_bo_create(struct gbm_device *gbm, +gbm_mesa_bo_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, uint32_t flags); struct gbm_bo * -gbm_bo_create_with_modifiers(struct gbm_device *gbm, +gbm_mesa_bo_create_with_modifiers(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, const unsigned int count); struct gbm_bo * -gbm_bo_create_with_modifiers2(struct gbm_device *gbm, +gbm_mesa_bo_create_with_modifiers2(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -334,7 +334,7 @@ struct gbm_import_fd_modifier_data { }; struct gbm_bo * -gbm_bo_import(struct gbm_device *gbm, uint32_t type, +gbm_mesa_bo_import(struct gbm_device *gbm, uint32_t type, void *buffer, uint32_t flags); /** @@ -365,82 +365,82 @@ enum gbm_bo_transfer_flags { }; void * -gbm_bo_map(struct gbm_bo *bo, +gbm_mesa_bo_map(struct gbm_bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint32_t flags, uint32_t *stride, void **map_data); void -gbm_bo_unmap(struct gbm_bo *bo, void *map_data); +gbm_mesa_bo_unmap(struct gbm_bo *bo, void *map_data); uint32_t -gbm_bo_get_width(struct gbm_bo *bo); +gbm_mesa_bo_get_width(struct gbm_bo *bo); uint32_t -gbm_bo_get_height(struct gbm_bo *bo); +gbm_mesa_bo_get_height(struct gbm_bo *bo); uint32_t -gbm_bo_get_stride(struct gbm_bo *bo); +gbm_mesa_bo_get_stride(struct gbm_bo *bo); uint32_t -gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane); +gbm_mesa_bo_get_stride_for_plane(struct gbm_bo *bo, int plane); uint32_t -gbm_bo_get_format(struct gbm_bo *bo); +gbm_mesa_bo_get_format(struct gbm_bo *bo); uint32_t -gbm_bo_get_bpp(struct gbm_bo *bo); +gbm_mesa_bo_get_bpp(struct gbm_bo *bo); uint32_t -gbm_bo_get_offset(struct gbm_bo *bo, int plane); +gbm_mesa_bo_get_offset(struct gbm_bo *bo, int plane); struct gbm_device * -gbm_bo_get_device(struct gbm_bo *bo); +gbm_mesa_bo_get_device(struct gbm_bo *bo); union gbm_bo_handle -gbm_bo_get_handle(struct gbm_bo *bo); +gbm_mesa_bo_get_handle(struct gbm_bo *bo); int -gbm_bo_get_fd(struct gbm_bo *bo); +gbm_mesa_bo_get_fd(struct gbm_bo *bo); uint64_t -gbm_bo_get_modifier(struct gbm_bo *bo); +gbm_mesa_bo_get_modifier(struct gbm_bo *bo); int -gbm_bo_get_plane_count(struct gbm_bo *bo); +gbm_mesa_bo_get_plane_count(struct gbm_bo *bo); union gbm_bo_handle -gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane); +gbm_mesa_bo_get_handle_for_plane(struct gbm_bo *bo, int plane); int -gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane); +gbm_mesa_bo_get_fd_for_plane(struct gbm_bo *bo, int plane); int -gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count); +gbm_mesa_bo_write(struct gbm_bo *bo, const void *buf, size_t count); void -gbm_bo_set_user_data(struct gbm_bo *bo, void *data, +gbm_mesa_bo_set_user_data(struct gbm_bo *bo, void *data, void (*destroy_user_data)(struct gbm_bo *, void *)); void * -gbm_bo_get_user_data(struct gbm_bo *bo); +gbm_mesa_bo_get_user_data(struct gbm_bo *bo); void -gbm_bo_destroy(struct gbm_bo *bo); +gbm_mesa_bo_destroy(struct gbm_bo *bo); struct gbm_surface * -gbm_surface_create(struct gbm_device *gbm, +gbm_mesa_surface_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, uint32_t flags); struct gbm_surface * -gbm_surface_create_with_modifiers(struct gbm_device *gbm, +gbm_mesa_surface_create_with_modifiers(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, const unsigned int count); struct gbm_surface * -gbm_surface_create_with_modifiers2(struct gbm_device *gbm, +gbm_mesa_surface_create_with_modifiers2(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, @@ -448,19 +448,19 @@ gbm_surface_create_with_modifiers2(struct gbm_device *gbm, uint32_t flags); struct gbm_bo * -gbm_surface_lock_front_buffer(struct gbm_surface *surface); +gbm_mesa_surface_lock_front_buffer(struct gbm_surface *surface); void -gbm_surface_release_buffer(struct gbm_surface *surface, struct gbm_bo *bo); +gbm_mesa_surface_release_buffer(struct gbm_surface *surface, struct gbm_bo *bo); int -gbm_surface_has_free_buffers(struct gbm_surface *surface); +gbm_mesa_surface_has_free_buffers(struct gbm_surface *surface); void -gbm_surface_destroy(struct gbm_surface *surface); +gbm_mesa_surface_destroy(struct gbm_surface *surface); char * -gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc); +gbm_mesa_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc); #ifdef __cplusplus } diff --git a/src/gbm/meson.build b/src/gbm/meson.build index df65361aef7..22e89b36dc6 100644 --- a/src/gbm/meson.build +++ b/src/gbm/meson.build @@ -45,11 +45,11 @@ if with_platform_wayland incs_gbm += inc_wayland_drm endif -libgbm_name = 'gbm' +# libgbm_name = 'gbm' -if with_platform_android and get_option('platform-sdk-version') >= 30 +# if with_platform_android and get_option('platform-sdk-version') >= 30 libgbm_name = 'gbm_mesa' -endif +# endif libgbm = shared_library( libgbm_name, @@ -58,7 +58,7 @@ libgbm = shared_library( c_args : [args_gbm], link_args : [ld_args_gc_sections], link_with : libloader, - dependencies : [deps_gbm, dep_dl, dep_thread, idep_mesautil, idep_xmlconfig], + dependencies : [deps_gbm, dep_dl, dep_thread, idep_mesautil, idep_xmlconfig, dep_dlog], # dlog be a G gnu_symbol_visibility : 'hidden', version : '1.0.0', install : true, @@ -72,8 +72,8 @@ endif install_headers('main/gbm.h') pkg.generate( - name : 'gbm', - filebase : 'gbm', + name : libgbm_name, + filebase : libgbm_name, description : 'Mesa gbm library', version : meson.project_version(), libraries : libgbm, |