From: Jakob Bornecrantz Date: Mon, 28 Jun 2010 18:59:09 +0000 (+0200) Subject: Merge branch 'gallium-drm-driver-drescriptor' X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a01e0afd9fc0d647081c6903baa1a7ba505c4b05;p=mesa.git Merge branch 'gallium-drm-driver-drescriptor' Conflicts: src/gallium/state_trackers/egl/x11/native_dri2.c src/gallium/state_trackers/egl/x11/native_x11.c src/gallium/state_trackers/egl/x11/native_x11.h src/gallium/state_trackers/xorg/xorg_driver.c src/gallium/winsys/radeon/drm/radeon_drm.c --- a01e0afd9fc0d647081c6903baa1a7ba505c4b05 diff --cc src/gallium/drivers/galahad/Makefile index 67d08745662,00000000000..e9c4f7e28c8 mode 100644,000000..100644 --- a/src/gallium/drivers/galahad/Makefile +++ b/src/gallium/drivers/galahad/Makefile @@@ -1,12 -1,0 +1,11 @@@ +TOP = ../../../.. +include $(TOP)/configs/current + +LIBNAME = galahad + +C_SOURCES = \ + glhd_objects.c \ + glhd_context.c \ - glhd_screen.c \ - glhd_drm.c ++ glhd_screen.c + +include ../../Makefile.template diff --cc src/gallium/drivers/galahad/SConscript index fc668facaf5,00000000000..ca6213cfff1 mode 100644,000000..100644 --- a/src/gallium/drivers/galahad/SConscript +++ b/src/gallium/drivers/galahad/SConscript @@@ -1,14 -1,0 +1,13 @@@ +Import('*') + +env = env.Clone() + +identity = env.ConvenienceLibrary( + target = 'identity', + source = [ + 'glhd_context.c', - 'glhd_drm.c', + 'glhd_objects.c', + 'glhd_screen.c', + ]) + +Export('identity') diff --cc src/gallium/drivers/r300/r300_texture.c index ddb66000561,5a013e2a25a..6206570fca4 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@@ -30,17 -35,16 +30,19 @@@ #include "r300_screen.h" #include "r300_winsys.h" -#define TILE_WIDTH 0 -#define TILE_HEIGHT 1 +#include "util/u_format.h" +#include "util/u_format_s3tc.h" +#include "util/u_math.h" +#include "util/u_memory.h" + +#include "pipe/p_screen.h" - #include "state_tracker/drm_api.h" + -static const unsigned microblock_table[5][3][2] = { - /*linear tiled square-tiled */ - {{32, 1}, {8, 4}, {0, 0}}, /* 8 bits per pixel */ - {{16, 1}, {8, 2}, {4, 4}}, /* 16 bits per pixel */ - {{ 8, 1}, {4, 2}, {0, 0}}, /* 32 bits per pixel */ - {{ 4, 1}, {0, 0}, {2, 2}}, /* 64 bits per pixel */ - {{ 2, 1}, {0, 0}, {0, 0}} /* 128 bits per pixel */ ++/* XXX NO! just no! */ ++#include "state_tracker/drm_driver.h" + +enum r300_dim { + DIM_WIDTH = 0, + DIM_HEIGHT = 1 }; unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format, @@@ -1081,7 -1051,7 +1083,8 @@@ r300_texture_from_handle(struct pipe_sc return NULL; } - buffer = rws->buffer_from_handle(rws, screen, whandle, &stride); ++ /* XXX make the winsys return the stride_override, see i915_resource_texture.c:830 */ + buffer = rws->buffer_from_handle(rws, whandle->handle); if (!buffer) { return NULL; } diff --cc src/gallium/state_trackers/egl/x11/native_dri2.c index e90c33b824d,0ce7c0be64b..7464354fe61 --- a/src/gallium/state_trackers/egl/x11/native_dri2.c +++ b/src/gallium/state_trackers/egl/x11/native_dri2.c @@@ -741,9 -738,8 +738,8 @@@ dri2_display_hash_table_compare(void *k } struct native_display * -x11_create_dri2_display(EGLNativeDisplayType dpy, +x11_create_dri2_display(Display *dpy, - struct native_event_handler *event_handler, - struct drm_api *api) + struct native_event_handler *event_handler) { struct dri2_display *dri2dpy; diff --cc src/gallium/state_trackers/egl/x11/native_x11.c index bfa12b26a77,5d71778410b..6f1e5998732 --- a/src/gallium/state_trackers/egl/x11/native_x11.c +++ b/src/gallium/state_trackers/egl/x11/native_x11.c @@@ -132,12 -123,12 +122,12 @@@ native_create_display(void *dpy, struc struct native_display *ndpy = NULL; boolean force_sw; - if (!api) - api = drm_api_create(); - force_sw = debug_get_bool_option("EGL_SOFTWARE", FALSE); - if (api && !force_sw) { - ndpy = x11_create_dri2_display((Display *) dpy, event_handler, api); + if (!driver_descriptor.create_screen) + force_sw = TRUE; + + if (!force_sw) { - ndpy = x11_create_dri2_display(dpy, event_handler); ++ ndpy = x11_create_dri2_display((Display *) dpy, event_handler); } if (!ndpy) { diff --cc src/gallium/state_trackers/egl/x11/native_x11.h index f1fea7f3de4,e16da935c0b..a1c32c3455a --- a/src/gallium/state_trackers/egl/x11/native_x11.h +++ b/src/gallium/state_trackers/egl/x11/native_x11.h @@@ -34,8 -33,7 +33,7 @@@ x11_create_ximage_display(Display *dpy struct native_event_handler *event_handler); struct native_display * -x11_create_dri2_display(EGLNativeDisplayType dpy, +x11_create_dri2_display(Display *dpy, - struct native_event_handler *event_handler, - struct drm_api *api); + struct native_event_handler *event_handler); #endif /* _NATIVE_X11_H_ */ diff --cc src/gallium/state_trackers/xorg/xorg_driver.c index a7e57634aec,9357cd5763f..c69d75e22e8 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@@ -316,18 -305,10 +307,11 @@@ drv_init_resource_management(ScrnInfoPt if (ms->screen || ms->kms) return TRUE; - if (ms->api) { - ms->screen = ms->no3D ? NULL : - ms->api->create_screen(ms->api, ms->fd); - - if (ms->screen) - return TRUE; - - if (ms->api->destroy) - ms->api->destroy(ms->api); - ms->screen = driver_descriptor.create_screen(ms->fd); ++ if (!ms->no3D) ++ ms->screen = driver_descriptor.create_screen(ms->fd); - ms->api = NULL; - } + if (ms->screen) + return TRUE; #ifdef HAVE_LIBKMS if (!kms_create(ms->fd, &ms->kms)) diff --cc src/gallium/targets/egl-radeon/Makefile index 64c20afc2be,2adc027b8f0..79426836db4 --- a/src/gallium/targets/egl-radeon/Makefile +++ b/src/gallium/targets/egl-radeon/Makefile @@@ -2,12 -2,14 +2,15 @@@ TOP = ../../../. include $(TOP)/configs/current EGL_DRIVER_NAME = radeon - EGL_DRIVER_SOURCES = dummy.c + EGL_DRIVER_SOURCES = target.c EGL_DRIVER_LIBS = -ldrm_radeon + EGL_DRIVER_DEFINES = \ + -DGALLIUM_RBUG -DGALLIUM_TRACE + EGL_DRIVER_PIPES = \ $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ + $(TOP)/src/gallium/drivers/galahad/libgalahad.a \ $(TOP)/src/gallium/drivers/trace/libtrace.a \ $(TOP)/src/gallium/drivers/rbug/librbug.a \ $(TOP)/src/gallium/drivers/r300/libr300.a diff --cc src/gallium/winsys/r600/drm/r600_drm.c index 803049d58c9,469f1446d05..3d87a994c15 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@@ -48,42 -45,18 +45,21 @@@ boolean r600_buffer_get_handle(struct r struct winsys_handle *whandle) { struct drm_gem_flink flink; - struct r600_buffer* rbuffer; - int r; + struct r600_buffer* rbuffer = (struct r600_buffer*)buf; - rbuffer = (struct r600_buffer*)buf; - if (!rbuffer->flink) { - flink.handle = rbuffer->bo->handle; - r = ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink); - if (r) { - return FALSE; + if (whandle->type == DRM_API_HANDLE_TYPE_SHARED) { + if (!rbuffer->flink) { + flink.handle = rbuffer->bo->handle; + + if (ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink)) { + return FALSE; + } + + rbuffer->flink = flink.name; } - rbuffer->flink = flink.name; + whandle->handle = rbuffer->flink; + } else if (whandle->type == DRM_API_HANDLE_TYPE_KMS) { + whandle->handle = rbuffer->bo->handle; } - whandle->handle = rbuffer->flink; return TRUE; } - - static void r600_drm_api_destroy(struct drm_api *api) - { - return; - } - - struct drm_api drm_api_hooks = { - .name = "r600", - .driver_name = "r600", - .create_screen = r600_drm_create_screen, - .destroy = r600_drm_api_destroy, - }; - - struct drm_api* drm_api_create() - { - #ifdef DEBUG - return trace_drm_create(&drm_api_hooks); - #else - return &drm_api_hooks; - #endif - }