st/egl: Remove the egl state tracker.
authorChia-I Wu <olvaffe@gmail.com>
Fri, 22 Jan 2010 07:18:45 +0000 (15:18 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Fri, 22 Jan 2010 07:37:56 +0000 (15:37 +0800)
The egl_g3d state tracker has support for KMS, and the support is based
on the egl state tracker.  As egl_g3d provides more features, it should
be better to keep only egl_g3d to unify the efforts.

15 files changed:
configs/linux-dri
configs/linux-opengl-es
configure.ac
src/gallium/state_trackers/egl/Makefile [deleted file]
src/gallium/state_trackers/egl/egl_context.c [deleted file]
src/gallium/state_trackers/egl/egl_surface.c [deleted file]
src/gallium/state_trackers/egl/egl_tracker.c [deleted file]
src/gallium/state_trackers/egl/egl_tracker.h [deleted file]
src/gallium/state_trackers/egl/egl_visual.c [deleted file]
src/gallium/winsys/drm/i965/egl/Makefile [deleted file]
src/gallium/winsys/drm/intel/egl/Makefile [deleted file]
src/gallium/winsys/drm/intel/egl/dummy.c [deleted file]
src/gallium/winsys/drm/radeon/egl/Makefile [deleted file]
src/gallium/winsys/drm/radeon/egl/dummy.c [deleted file]
src/gallium/winsys/drm/vmware/egl/Makefile [deleted file]

index 95f77ade1dd2301e60618dd19a910d3ec246fc2f..feb2bba3a0064936c464d2c20e15c86dd7ad6237 100644 (file)
@@ -61,7 +61,7 @@ DRIVER_DIRS = dri
 WINDOW_SYSTEM = dri
 GALLIUM_WINSYS_DIRS = drm
 GALLIUM_WINSYS_DRM_DIRS = vmware intel i965
-GALLIUM_STATE_TRACKERS_DIRS = egl
+GALLIUM_STATE_TRACKERS_DIRS = egl_g3d
 
 DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon \
        savage sis tdfx unichrome ffb swrast
index 566cd758e3ec1a89e981e2f594293cf8bf5a1366..e0136587167ed30482a273105ad9e7cb2e9a8041 100644 (file)
@@ -9,6 +9,9 @@ LIB_DIR = lib
 SRC_DIRS = egl glsl mesa/es gallium gallium/winsys
 PROGRAM_DIRS = es1/screen es1/xegl es2/xegl
 
+# egl_g3d needs this
+DEFINES += -DGLX_DIRECT_RENDERING
+
 # no mesa or egl drivers
 DRIVER_DIRS =
 EGL_DRIVERS_DIRS =
@@ -22,6 +25,6 @@ GALLIUM_STATE_TRACKERS_DIRS = es
 
 # build egl_i915.so
 GALLIUM_DRIVERS_DIRS += trace i915
-GALLIUM_STATE_TRACKERS_DIRS += egl
+GALLIUM_STATE_TRACKERS_DIRS += egl_g3d
 GALLIUM_WINSYS_DIRS += drm
 GALLIUM_WINSYS_DRM_DIRS = intel
index e5c2386320fc329b43ce4d275525b959bfbb539b..bb011abff267e52b0b770d7c10b560957e34eb85 100644 (file)
@@ -1165,7 +1165,7 @@ yes)
     dri)
         GALLIUM_STATE_TRACKERS_DIRS="dri"
         if test "x$enable_egl" = xyes; then
-            GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl egl_g3d"
+            GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl_g3d"
         fi
         # Have only tested st/xorg on 1.6.0 servers
         PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
@@ -1182,9 +1182,9 @@ yes)
             AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
 
         case "$tracker" in
-        egl)
+        egl_g3d)
             if test "x$enable_egl" != xyes; then
-                AC_MSG_ERROR([cannot build egl state tracker without EGL library])
+                AC_MSG_ERROR([cannot build egl_g3d state tracker without EGL library])
             fi
             ;;
         xorg)
diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile
deleted file mode 100644 (file)
index e825aa7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-LIBNAME = egldrm
-
-LIBRARY_INCLUDES = \
-       -I$(TOP)/src/gallium/include \
-       -I$(TOP)/src/gallium/auxiliary \
-       -I$(TOP)/src/mesa/drivers/dri/common \
-       -I$(TOP)/src/mesa \
-       -I$(TOP)/include \
-       -I$(TOP)/src/egl/main \
-       $(shell pkg-config --cflags-only-I libdrm)
-
-
-C_SOURCES = $(wildcard ./*.c)
-
-
-include ../../Makefile.template
diff --git a/src/gallium/state_trackers/egl/egl_context.c b/src/gallium/state_trackers/egl/egl_context.c
deleted file mode 100644 (file)
index fee186c..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-
-#include "utils.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "egl_tracker.h"
-
-#include "egllog.h"
-
-
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-
-#include "state_tracker/st_public.h"
-#include "state_tracker/drm_api.h"
-
-#include "GL/internal/glcore.h"
-
-_EGLContext *
-drm_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, _EGLContext *share_list, const EGLint *attrib_list)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       struct drm_context *ctx;
-       struct drm_context *share = NULL;
-       struct st_context *st_share = NULL;
-       int i;
-       __GLcontextModes *visual;
-
-       for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i++) {
-               switch (attrib_list[i]) {
-                       /* no attribs defined for now */
-                       default:
-                               _eglError(EGL_BAD_ATTRIBUTE, "eglCreateContext");
-                               return EGL_NO_CONTEXT;
-               }
-       }
-
-       ctx = (struct drm_context *) calloc(1, sizeof(struct drm_context));
-       if (!ctx)
-               goto err_c;
-
-       _eglInitContext(drv, &ctx->base, conf, attrib_list);
-
-       ctx->pipe = dev->api->create_context(dev->api, dev->screen);
-       if (!ctx->pipe)
-               goto err_pipe;
-
-       if (share)
-               st_share = share->st;
-
-       visual = drm_visual_from_config(conf);
-       ctx->st = st_create_context(ctx->pipe, visual, st_share);
-       drm_visual_modes_destroy(visual);
-
-       if (!ctx->st)
-               goto err_gl;
-
-       return &ctx->base;
-
-err_gl:
-       ctx->pipe->destroy(ctx->pipe);
-err_pipe:
-       free(ctx);
-err_c:
-       return NULL;
-}
-
-EGLBoolean
-drm_destroy_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *context)
-{
-       struct drm_context *c = lookup_drm_context(context);
-       if (!_eglIsContextBound(&c->base)) {
-               st_destroy_context(c->st);
-               free(c);
-       }
-       return EGL_TRUE;
-}
-
-EGLBoolean
-drm_make_current(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw, _EGLSurface *read, _EGLContext *context)
-{
-       struct drm_surface *readSurf = lookup_drm_surface(read);
-       struct drm_surface *drawSurf = lookup_drm_surface(draw);
-       struct drm_context *ctx = lookup_drm_context(context);
-       EGLBoolean b;
-
-       b = _eglMakeCurrent(drv, dpy, draw, read, context);
-       if (!b)
-               return EGL_FALSE;
-
-       if (ctx) {
-               if (!drawSurf || !readSurf)
-                       return EGL_FALSE;
-
-               st_make_current(ctx->st, drawSurf->stfb, readSurf->stfb);
-
-               /* st_resize_framebuffer needs a bound context to work */
-               st_resize_framebuffer(drawSurf->stfb, drawSurf->w, drawSurf->h);
-               st_resize_framebuffer(readSurf->stfb, readSurf->w, readSurf->h);
-       } else {
-               st_make_current(NULL, NULL, NULL);
-       }
-
-       return EGL_TRUE;
-}
diff --git a/src/gallium/state_trackers/egl/egl_surface.c b/src/gallium/state_trackers/egl/egl_surface.c
deleted file mode 100644 (file)
index d55aa51..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "egl_tracker.h"
-
-#include "egllog.h"
-
-#include "pipe/p_inlines.h"
-#include "pipe/p_screen.h"
-#include "pipe/p_context.h"
-
-#include "state_tracker/drm_api.h"
-
-#include "util/u_format.h"
-#include "util/u_rect.h"
-
-/*
- * Util functions
- */
-
-static drmModeModeInfoPtr
-drm_find_mode(drmModeConnectorPtr connector, _EGLMode *mode)
-{
-       int i;
-       drmModeModeInfoPtr m = NULL;
-
-       for (i = 0; i < connector->count_modes; i++) {
-               m = &connector->modes[i];
-               if (m->hdisplay == mode->Width && m->vdisplay == mode->Height && m->vrefresh == mode->RefreshRate)
-                       break;
-               m = &connector->modes[0]; /* if we can't find one, return first */
-       }
-
-       return m;
-}
-
-static struct st_framebuffer *
-drm_create_framebuffer(struct pipe_screen *screen,
-                       const __GLcontextModes *visual,
-                       unsigned width,
-                       unsigned height,
-                       void *priv)
-{
-       enum pipe_format color_format, depth_stencil_format;
-       boolean d_depth_bits_last;
-       boolean ds_depth_bits_last;
-
-       d_depth_bits_last =
-               screen->is_format_supported(screen, PIPE_FORMAT_X8Z24_UNORM,
-                                           PIPE_TEXTURE_2D,
-                                           PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
-       ds_depth_bits_last =
-               screen->is_format_supported(screen, PIPE_FORMAT_S8Z24_UNORM,
-                                           PIPE_TEXTURE_2D,
-                                           PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
-
-       if (visual->redBits == 8) {
-               if (visual->alphaBits == 8)
-                       color_format = PIPE_FORMAT_A8R8G8B8_UNORM;
-               else
-                       color_format = PIPE_FORMAT_X8R8G8B8_UNORM;
-       } else {
-               color_format = PIPE_FORMAT_R5G6B5_UNORM;
-       }
-
-       switch(visual->depthBits) {
-               default:
-               case 0:
-                       depth_stencil_format = PIPE_FORMAT_NONE;
-                       break;
-               case 16:
-                       depth_stencil_format = PIPE_FORMAT_Z16_UNORM;
-                       break;
-               case 24:
-                       if (visual->stencilBits == 0) {
-                               depth_stencil_format = (d_depth_bits_last) ?
-                                       PIPE_FORMAT_X8Z24_UNORM:
-                                       PIPE_FORMAT_Z24X8_UNORM;
-                       } else {
-                               depth_stencil_format = (ds_depth_bits_last) ?
-                                       PIPE_FORMAT_S8Z24_UNORM:
-                                       PIPE_FORMAT_Z24S8_UNORM;
-                       }
-                       break;
-               case 32:
-                       depth_stencil_format = PIPE_FORMAT_Z32_UNORM;
-                       break;
-       }
-
-       return st_create_framebuffer(visual,
-                                    color_format,
-                                    depth_stencil_format,
-                                    depth_stencil_format,
-                                    width,
-                                    height,
-                                    priv);
-}
-
-static void
-drm_create_texture(_EGLDisplay *dpy,
-                   struct drm_screen *scrn,
-                   unsigned w, unsigned h)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       struct pipe_screen *screen = dev->screen;
-       struct pipe_surface *surface;
-       struct pipe_texture *texture;
-       struct pipe_texture templat;
-       struct pipe_buffer *buf = NULL;
-       unsigned pitch = 0;
-
-       memset(&templat, 0, sizeof(templat));
-       templat.tex_usage = PIPE_TEXTURE_USAGE_RENDER_TARGET;
-       templat.tex_usage |= PIPE_TEXTURE_USAGE_PRIMARY;
-       templat.target = PIPE_TEXTURE_2D;
-       templat.last_level = 0;
-       templat.depth0 = 1;
-       templat.format = PIPE_FORMAT_A8R8G8B8_UNORM;
-       templat.width0 = w;
-       templat.height0 = h;
-
-       texture = screen->texture_create(dev->screen,
-                                        &templat);
-
-       if (!texture)
-               goto err_tex;
-
-       surface = screen->get_tex_surface(screen,
-                                         texture,
-                                         0,
-                                         0,
-                                         0,
-                                         PIPE_BUFFER_USAGE_GPU_WRITE);
-
-       if (!surface)
-               goto err_surf;
-
-       scrn->tex = texture;
-       scrn->surface = surface;
-       scrn->front.width = w;
-       scrn->front.height = h;
-       scrn->front.pitch = pitch;
-       dev->api->local_handle_from_texture(dev->api, screen, texture,
-                                           &scrn->front.pitch, &scrn->front.handle);
-       if (0)
-               goto err_handle;
-
-       return;
-
-err_handle:
-       pipe_surface_reference(&surface, NULL);
-err_surf:
-       pipe_texture_reference(&texture, NULL);
-err_tex:
-       pipe_buffer_reference(&buf, NULL);
-       return;
-}
-
-/*
- * Exported functions
- */
-
-void
-drm_takedown_shown_screen(_EGLDisplay *dpy, struct drm_screen *screen)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-
-       screen->surf = NULL;
-
-       drmModeSetCrtc(
-               dev->drmFD,
-               screen->crtcID,
-               0, /* FD */
-               0, 0,
-               NULL, 0, /* List of output ids */
-               NULL);
-
-       drmModeRmFB(dev->drmFD, screen->fbID);
-       drmModeFreeFB(screen->fb);
-       screen->fb = NULL;
-
-       pipe_surface_reference(&screen->surface, NULL);
-       pipe_texture_reference(&screen->tex, NULL);
-
-       screen->shown = 0;
-}
-
-/**
- * Called by libEGL's eglCreateWindowSurface().
- */
-_EGLSurface *
-drm_create_window_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, NativeWindowType window, const EGLint *attrib_list)
-{
-       return NULL;
-}
-
-
-/**
- * Called by libEGL's eglCreatePixmapSurface().
- */
-_EGLSurface *
-drm_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, NativePixmapType pixmap, const EGLint *attrib_list)
-{
-       return NULL;
-}
-
-
-/**
- * Called by libEGL's eglCreatePbufferSurface().
- */
-_EGLSurface *
-drm_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
-                           const EGLint *attrib_list)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       int i;
-       int width = -1;
-       int height = -1;
-       struct drm_surface *surf = NULL;
-       __GLcontextModes *visual;
-
-       for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i++) {
-               switch (attrib_list[i]) {
-                       case EGL_WIDTH:
-                               width = attrib_list[++i];
-                               break;
-                       case EGL_HEIGHT:
-                               height = attrib_list[++i];
-                               break;
-                       default:
-                               _eglError(EGL_BAD_ATTRIBUTE, "eglCreatePbufferSurface");
-                               return EGL_NO_SURFACE;
-               }
-       }
-
-       if (width < 1 || height < 1) {
-               _eglError(EGL_BAD_ATTRIBUTE, "eglCreatePbufferSurface");
-               return NULL;
-       }
-
-       surf = (struct drm_surface *) calloc(1, sizeof(struct drm_surface));
-       if (!surf)
-               goto err;
-
-       if (!_eglInitSurface(drv, &surf->base, EGL_PBUFFER_BIT, conf, attrib_list))
-               goto err_surf;
-
-       surf->w = width;
-       surf->h = height;
-
-       visual = drm_visual_from_config(conf);
-       surf->stfb = drm_create_framebuffer(dev->screen, visual,
-                                           width, height,
-                                           (void*)surf);
-       drm_visual_modes_destroy(visual);
-
-       return &surf->base;
-
-err_surf:
-       free(surf);
-err:
-       return NULL;
-}
-
-/**
- * Called by libEGL's eglCreateScreenSurfaceMESA().
- */
-_EGLSurface *
-drm_create_screen_surface_mesa(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *cfg,
-                               const EGLint *attrib_list)
-{
-       EGLSurface surf = drm_create_pbuffer_surface(drv, dpy, cfg, attrib_list);
-
-       return surf;
-}
-
-/**
- * Called by libEGL's eglShowScreenSurfaceMESA().
- */
-EGLBoolean
-drm_show_screen_surface_mesa(_EGLDriver *drv, _EGLDisplay *dpy,
-                             _EGLScreen *screen,
-                             _EGLSurface *surface, _EGLMode *mode)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       struct drm_surface *surf = lookup_drm_surface(surface);
-       struct drm_screen *scrn = lookup_drm_screen(screen);
-       int ret;
-       unsigned int i, k;
-
-       if (scrn->shown)
-               drm_takedown_shown_screen(dpy, scrn);
-
-
-       drm_create_texture(dpy, scrn, mode->Width, mode->Height);
-       if (!scrn->tex)
-               goto err_tex;
-
-       ret = drmModeAddFB(dev->drmFD,
-                          scrn->front.width, scrn->front.height,
-                          32, 32, scrn->front.pitch,
-                          scrn->front.handle,
-                          &scrn->fbID);
-
-       if (ret)
-               goto err_bo;
-
-       scrn->fb = drmModeGetFB(dev->drmFD, scrn->fbID);
-       if (!scrn->fb)
-               goto err_bo;
-
-       /* find a fitting crtc */
-       {
-               drmModeConnector *con = scrn->connector;
-
-               scrn->mode = drm_find_mode(con, mode);
-               if (!scrn->mode)
-                       goto err_fb;
-
-               for (k = 0; k < con->count_encoders; k++) {
-                       drmModeEncoder *enc = drmModeGetEncoder(dev->drmFD, con->encoders[k]);
-                       for (i = 0; i < dev->res->count_crtcs; i++) {
-                               if (enc->possible_crtcs & (1<<i)) {
-                                       /* save the ID */
-                                       scrn->crtcID = dev->res->crtcs[i];
-
-                                       /* skip the rest */
-                                       i = dev->res->count_crtcs;
-                                       k = dev->res->count_encoders;
-                               }
-                       }
-                       drmModeFreeEncoder(enc);
-               }
-       }
-
-       ret = drmModeSetCrtc(dev->drmFD,
-                            scrn->crtcID,
-                            scrn->fbID,
-                            0, 0,
-                            &scrn->connectorID, 1,
-                            scrn->mode);
-
-       if (ret)
-               goto err_crtc;
-
-
-       if (scrn->dpms)
-               drmModeConnectorSetProperty(dev->drmFD,
-                                           scrn->connectorID,
-                                           scrn->dpms->prop_id,
-                                           DRM_MODE_DPMS_ON);
-
-       surf->screen = scrn;
-
-       scrn->surf = surf;
-       scrn->shown = 1;
-
-       return EGL_TRUE;
-
-err_crtc:
-       scrn->crtcID = 0;
-
-err_fb:
-       drmModeRmFB(dev->drmFD, scrn->fbID);
-       drmModeFreeFB(scrn->fb);
-       scrn->fb = NULL;
-
-err_bo:
-       pipe_surface_reference(&scrn->surface, NULL);
-       pipe_texture_reference(&scrn->tex, NULL);
-
-err_tex:
-       return EGL_FALSE;
-}
-
-/**
- * Called by libEGL's eglDestroySurface().
- */
-EGLBoolean
-drm_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface)
-{
-       struct drm_surface *surf = lookup_drm_surface(surface);
-       if (!_eglIsSurfaceBound(&surf->base)) {
-               if (surf->screen)
-                       drm_takedown_shown_screen(dpy, surf->screen);
-               st_unreference_framebuffer(surf->stfb);
-               free(surf);
-       }
-       return EGL_TRUE;
-}
-
-/**
- * Called by libEGL's eglSwapBuffers().
- */
-EGLBoolean
-drm_swap_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       struct drm_surface *surf = lookup_drm_surface(draw);
-       struct pipe_surface *back_surf;
-
-       if (!surf)
-               return EGL_FALSE;
-
-       st_get_framebuffer_surface(surf->stfb, ST_SURFACE_BACK_LEFT, &back_surf);
-
-       if (back_surf) {
-               struct drm_context *ctx = lookup_drm_context(draw->Binding);
-
-               st_notify_swapbuffers(surf->stfb);
-
-               if (ctx && surf->screen) {
-            if (ctx->pipe->surface_copy) {
-                ctx->pipe->surface_copy(ctx->pipe,
-                    surf->screen->surface,
-                    0, 0,
-                    back_surf,
-                    0, 0,
-                    surf->w, surf->h);
-            } else {
-                util_surface_copy(ctx->pipe, FALSE,
-                    surf->screen->surface,
-                    0, 0,
-                    back_surf,
-                    0, 0,
-                    surf->w, surf->h);
-            }
-                       ctx->pipe->flush(ctx->pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_TEXTURE_CACHE, NULL);
-
-#ifdef DRM_MODE_FEATURE_DIRTYFB
-                       /* TODO query connector property to see if this is needed */
-                       drmModeDirtyFB(dev->drmFD, surf->screen->fbID, NULL, 0);
-#else
-                       (void)dev;
-#endif
-
-                       /* TODO more stuff here */
-               }
-       }
-
-       return EGL_TRUE;
-}
diff --git a/src/gallium/state_trackers/egl/egl_tracker.c b/src/gallium/state_trackers/egl/egl_tracker.c
deleted file mode 100644 (file)
index 11583ec..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-
-#include "utils.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "egl_tracker.h"
-
-#include <fcntl.h>
-
-#include "egllog.h"
-#include "state_tracker/drm_api.h"
-
-#include "pipe/p_screen.h"
-#include "pipe/internal/p_winsys_screen.h"
-
-/** HACK */
-void* driDriverAPI;
-
-
-/*
- * Exported functions
- */
-
-/** Called by libEGL just prior to unloading/closing the driver.
- */
-static void
-drm_unload(_EGLDriver *drv)
-{
-       free(drv);
-}
-
-/**
- * The bootstrap function.  Return a new drm_driver object and
- * plug in API functions.
- * libEGL finds this function with dlopen()/dlsym() and calls it from
- * "load driver" function.
- */
-_EGLDriver *
-_eglMain(const char *args)
-{
-       _EGLDriver *drv;
-
-       drv = (_EGLDriver *) calloc(1, sizeof(_EGLDriver));
-       if (!drv) {
-               return NULL;
-       }
-
-       /* First fill in the dispatch table with defaults */
-       _eglInitDriverFallbacks(drv);
-       /* then plug in our Drm-specific functions */
-       drv->API.Initialize = drm_initialize;
-       drv->API.Terminate = drm_terminate;
-       drv->API.CreateContext = drm_create_context;
-       drv->API.MakeCurrent = drm_make_current;
-       drv->API.CreateWindowSurface = drm_create_window_surface;
-       drv->API.CreatePixmapSurface = drm_create_pixmap_surface;
-       drv->API.CreatePbufferSurface = drm_create_pbuffer_surface;
-       drv->API.DestroySurface = drm_destroy_surface;
-       drv->API.DestroyContext = drm_destroy_context;
-       drv->API.CreateScreenSurfaceMESA = drm_create_screen_surface_mesa;
-       drv->API.ShowScreenSurfaceMESA = drm_show_screen_surface_mesa;
-       drv->API.SwapBuffers = drm_swap_buffers;
-
-       drv->Name = "DRM/Gallium/Win";
-       drv->Unload = drm_unload;
-
-       return drv;
-}
-
-static void
-drm_get_device_id(struct drm_device *device)
-{
-       char path[512];
-       FILE *file;
-       char *ret;
-
-       /* TODO get the real minor */
-       int minor = 0;
-
-       device->deviceID = 0;
-
-       snprintf(path, sizeof(path), "/sys/class/drm/card%d/device/device", minor);
-       file = fopen(path, "r");
-       if (!file) {
-               _eglLog(_EGL_WARNING, "Could not retrive device ID\n");
-               return;
-       }
-
-       ret = fgets(path, sizeof( path ), file);
-       fclose(file);
-       if (!ret)
-               return;
-
-       sscanf(path, "%x", &device->deviceID);
-}
-
-static void
-drm_update_res(struct drm_device *dev)
-{
-       drmModeFreeResources(dev->res);
-       dev->res = drmModeGetResources(dev->drmFD);
-}
-
-static void
-drm_add_modes_from_connector(_EGLScreen *screen, drmModeConnectorPtr connector)
-{
-       drmModeModeInfoPtr m = NULL;
-       int i;
-
-       for (i = 0; i < connector->count_modes; i++) {
-               m = &connector->modes[i];
-               _eglAddNewMode(screen, m->hdisplay, m->vdisplay, m->vrefresh, m->name);
-       }
-}
-
-static void
-drm_find_dpms(struct drm_device *dev, struct drm_screen *screen)
-{
-       drmModeConnectorPtr c = screen->connector;
-       drmModePropertyPtr p;
-       int i;
-
-       for (i = 0; i < c->count_props; i++) {
-               p = drmModeGetProperty(dev->drmFD, c->props[i]);
-               if (!strcmp(p->name, "DPMS"))
-                       break;
-
-               drmModeFreeProperty(p);
-               p = NULL;
-       }
-
-       screen->dpms = p;
-}
-
-static int drm_open_minor(int minor)
-{
-       char buf[64];
-
-       sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, minor);
-       return open(buf, O_RDWR, 0);
-}
-
-EGLBoolean
-drm_initialize(_EGLDriver *drv, _EGLDisplay *disp, EGLint *major, EGLint *minor)
-{
-       struct drm_device *dev;
-       struct drm_screen *screen = NULL;
-       drmModeConnectorPtr connector = NULL;
-       drmModeResPtr res = NULL;
-       unsigned count_connectors = 0;
-       int num_screens = 0;
-       EGLint i;
-       int fd;
-       _EGLConfig *config;
-
-       dev = (struct drm_device *) calloc(1, sizeof(struct drm_device));
-       if (!dev)
-               return EGL_FALSE;
-       dev->api = drm_api_create();
-
-       /* try the first node */
-       fd = drm_open_minor(0);
-       if (fd < 0)
-               goto err_fd;
-
-       dev->drmFD = fd;
-       drm_get_device_id(dev);
-
-       dev->screen = dev->api->create_screen(dev->api, dev->drmFD, NULL);
-       if (!dev->screen)
-               goto err_screen;
-       dev->winsys = dev->screen->winsys;
-
-       drm_update_res(dev);
-       res = dev->res;
-       if (res)
-               count_connectors = res->count_connectors;
-       else
-               _eglLog(_EGL_WARNING, "Could not retrive kms information\n");
-
-       for(i = 0; i < count_connectors && i < MAX_SCREENS; i++) {
-               connector = drmModeGetConnector(fd, res->connectors[i]);
-
-               if (!connector)
-                       continue;
-
-               if (connector->connection != DRM_MODE_CONNECTED) {
-                       drmModeFreeConnector(connector);
-                       continue;
-               }
-
-               screen = malloc(sizeof(struct drm_screen));
-               memset(screen, 0, sizeof(*screen));
-               screen->connector = connector;
-               screen->connectorID = connector->connector_id;
-               _eglInitScreen(&screen->base);
-               _eglAddScreen(disp, &screen->base);
-               drm_add_modes_from_connector(&screen->base, connector);
-               drm_find_dpms(dev, screen);
-               dev->screens[num_screens++] = screen;
-       }
-       dev->count_screens = num_screens;
-
-       disp->DriverData = dev;
-
-       /* for now we only have one config */
-       config = calloc(1, sizeof(*config));
-       memset(config, 1, sizeof(*config));
-       _eglInitConfig(config, 1);
-       _eglSetConfigAttrib(config, EGL_RED_SIZE, 8);
-       _eglSetConfigAttrib(config, EGL_GREEN_SIZE, 8);
-       _eglSetConfigAttrib(config, EGL_BLUE_SIZE, 8);
-       _eglSetConfigAttrib(config, EGL_ALPHA_SIZE, 8);
-       _eglSetConfigAttrib(config, EGL_BUFFER_SIZE, 32);
-       _eglSetConfigAttrib(config, EGL_DEPTH_SIZE, 24);
-       _eglSetConfigAttrib(config, EGL_STENCIL_SIZE, 8);
-       _eglSetConfigAttrib(config, EGL_SURFACE_TYPE, EGL_PBUFFER_BIT);
-       _eglAddConfig(disp, config);
-
-       disp->ClientAPIsMask = EGL_OPENGL_BIT /*| EGL_OPENGL_ES_BIT*/;
-       /* enable supported extensions */
-       disp->Extensions.MESA_screen_surface = EGL_TRUE;
-       disp->Extensions.MESA_copy_context = EGL_TRUE;
-
-       *major = 1;
-       *minor = 4;
-
-       return EGL_TRUE;
-
-err_screen:
-       drmClose(fd);
-err_fd:
-       free(dev);
-       return EGL_FALSE;
-}
-
-EGLBoolean
-drm_terminate(_EGLDriver *drv, _EGLDisplay *dpy)
-{
-       struct drm_device *dev = lookup_drm_device(dpy);
-       struct drm_screen *screen;
-       int i = 0;
-
-       _eglReleaseDisplayResources(drv, dpy);
-       _eglCleanupDisplay(dpy);
-
-       drmFreeVersion(dev->version);
-
-       for (i = 0; i < dev->count_screens; i++) {
-               screen = dev->screens[i];
-
-               if (screen->shown)
-                       drm_takedown_shown_screen(dpy, screen);
-
-               drmModeFreeProperty(screen->dpms);
-               drmModeFreeConnector(screen->connector);
-               _eglDestroyScreen(&screen->base);
-               dev->screens[i] = NULL;
-       }
-
-       dev->screen->destroy(dev->screen);
-       dev->winsys = NULL;
-
-       drmClose(dev->drmFD);
-
-       dev->api->destroy(dev->api);
-       free(dev);
-       dpy->DriverData = NULL;
-
-       return EGL_TRUE;
-}
diff --git a/src/gallium/state_trackers/egl/egl_tracker.h b/src/gallium/state_trackers/egl/egl_tracker.h
deleted file mode 100644 (file)
index 73eb1a1..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-
-#ifndef _EGL_TRACKER_H_
-#define _EGL_TRACKER_H_
-
-#include <stdint.h>
-
-#include "eglconfig.h"
-#include "eglcontext.h"
-#include "egldisplay.h"
-#include "egldriver.h"
-#include "eglglobals.h"
-#include "eglmode.h"
-#include "eglscreen.h"
-#include "eglsurface.h"
-
-#include "xf86drm.h"
-#include "xf86drmMode.h"
-
-#include "pipe/p_compiler.h"
-
-#include "state_tracker/st_public.h"
-
-#define MAX_SCREENS 16
-
-struct pipe_winsys;
-struct pipe_screen;
-struct pipe_context;
-struct state_tracker;
-
-struct drm_screen;
-struct drm_context;
-
-struct drm_device
-{
-       /*
-        * pipe
-        */
-
-       struct drm_api *api;
-       struct pipe_winsys *winsys;
-       struct pipe_screen *screen;
-
-       /*
-        * drm
-        */
-
-       int drmFD;
-       drmVersionPtr version;
-       int deviceID;
-
-       drmModeResPtr res;
-
-       struct drm_screen *screens[MAX_SCREENS];
-       size_t count_screens;
-};
-
-struct drm_surface
-{
-       _EGLSurface base; /* base class/object */
-
-       /*
-        * pipe
-        */
-
-
-       struct st_framebuffer *stfb;
-
-       /*
-        * drm
-        */
-
-       struct drm_screen *screen;
-
-       int w;
-       int h;
-};
-
-struct drm_context
-{
-       _EGLContext base; /* base class/object */
-
-       /* pipe */
-
-       struct pipe_context *pipe;
-       struct st_context *st;
-};
-
-struct drm_screen
-{
-       _EGLScreen base;
-
-       /*
-        * pipe
-        */
-
-       struct pipe_texture *tex;
-       struct pipe_surface *surface;
-
-       /*
-        * drm
-        */
-
-       struct {
-               unsigned height;
-               unsigned width;
-               unsigned pitch;
-               unsigned handle;
-       } front;
-
-       /* currently only support one connector */
-       drmModeConnectorPtr connector;
-       uint32_t connectorID;
-
-       /* dpms property */
-       drmModePropertyPtr dpms;
-
-       /* Has this screen been shown */
-       int shown;
-
-       /* Surface that is currently attached to this screen */
-       struct drm_surface *surf;
-
-       /* framebuffer */
-       drmModeFBPtr fb;
-       uint32_t fbID;
-
-       /* crtc and mode used */
-       /*drmModeCrtcPtr crtc;*/
-       uint32_t crtcID;
-
-       drmModeModeInfoPtr mode;
-};
-
-
-static INLINE struct drm_device *
-lookup_drm_device(_EGLDisplay *d)
-{
-       return (struct drm_device *) d->DriverData;
-}
-
-
-static INLINE struct drm_context *
-lookup_drm_context(_EGLContext *c)
-{
-       return (struct drm_context *) c;
-}
-
-
-static INLINE struct drm_surface *
-lookup_drm_surface(_EGLSurface *s)
-{
-       return (struct drm_surface *) s;
-}
-
-static INLINE struct drm_screen *
-lookup_drm_screen(_EGLScreen *s)
-{
-       return (struct drm_screen *) s;
-}
-
-/**
- * egl_visual.h
- */
-/*@{*/
-void drm_visual_modes_destroy(__GLcontextModes *modes);
-__GLcontextModes* drm_visual_modes_create(unsigned count, size_t minimum_size);
-__GLcontextModes* drm_visual_from_config(_EGLConfig *conf);
-/*@}*/
-
-/**
- * egl_surface.h
- */
-/*@{*/
-void drm_takedown_shown_screen(_EGLDisplay *dpy, struct drm_screen *screen);
-/*@}*/
-
-/**
- * All function exported to the egl side.
- */
-/*@{*/
-EGLBoolean drm_initialize(_EGLDriver *drv, _EGLDisplay *dpy, EGLint *major, EGLint *minor);
-EGLBoolean drm_terminate(_EGLDriver *drv, _EGLDisplay *dpy);
-_EGLContext *drm_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, _EGLContext *share_list, const EGLint *attrib_list);
-EGLBoolean drm_destroy_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *context);
-_EGLSurface *drm_create_window_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, NativeWindowType window, const EGLint *attrib_list);
-_EGLSurface *drm_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, NativePixmapType pixmap, const EGLint *attrib_list);
-_EGLSurface *drm_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, const EGLint *attrib_list);
-_EGLSurface *drm_create_screen_surface_mesa(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, const EGLint *attrib_list);
-EGLBoolean drm_show_screen_surface_mesa(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLSurface *surface, _EGLMode *mode);
-EGLBoolean drm_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface);
-EGLBoolean drm_make_current(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw, _EGLSurface *read, _EGLContext *context);
-EGLBoolean drm_swap_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw);
-/*@}*/
-
-#endif
diff --git a/src/gallium/state_trackers/egl/egl_visual.c b/src/gallium/state_trackers/egl/egl_visual.c
deleted file mode 100644 (file)
index e59f893..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-
-#include "egl_tracker.h"
-
-#include "egllog.h"
-
-void
-drm_visual_modes_destroy(__GLcontextModes *modes)
-{
-   _eglLog(_EGL_DEBUG, "%s", __FUNCTION__);
-
-   while (modes) {
-      __GLcontextModes * const next = modes->next;
-      free(modes);
-      modes = next;
-   }
-}
-
-__GLcontextModes *
-drm_visual_modes_create(unsigned count, size_t minimum_size)
-{
-       /* This code copied from libGLX, and modified */
-       const size_t size = (minimum_size > sizeof(__GLcontextModes))
-               ? minimum_size : sizeof(__GLcontextModes);
-       __GLcontextModes * head = NULL;
-       __GLcontextModes ** next;
-       unsigned   i;
-
-       _eglLog(_EGL_DEBUG, "%s %d %d", __FUNCTION__, count, minimum_size);
-
-       next = & head;
-       for (i = 0 ; i < count ; i++) {
-               *next = (__GLcontextModes *) calloc(1, size);
-               if (*next == NULL) {
-                       drm_visual_modes_destroy(head);
-                       head = NULL;
-                       break;
-               }
-
-               (*next)->doubleBufferMode = 1;
-               (*next)->visualID = GLX_DONT_CARE;
-               (*next)->visualType = GLX_DONT_CARE;
-               (*next)->visualRating = GLX_NONE;
-               (*next)->transparentPixel = GLX_NONE;
-               (*next)->transparentRed = GLX_DONT_CARE;
-               (*next)->transparentGreen = GLX_DONT_CARE;
-               (*next)->transparentBlue = GLX_DONT_CARE;
-               (*next)->transparentAlpha = GLX_DONT_CARE;
-               (*next)->transparentIndex = GLX_DONT_CARE;
-               (*next)->xRenderable = GLX_DONT_CARE;
-               (*next)->fbconfigID = GLX_DONT_CARE;
-               (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML;
-               (*next)->bindToTextureRgb = GLX_DONT_CARE;
-               (*next)->bindToTextureRgba = GLX_DONT_CARE;
-               (*next)->bindToMipmapTexture = GLX_DONT_CARE;
-               (*next)->bindToTextureTargets = 0;
-               (*next)->yInverted = GLX_DONT_CARE;
-
-               next = & ((*next)->next);
-       }
-
-       return head;
-}
-
-__GLcontextModes *
-drm_visual_from_config(_EGLConfig *conf)
-{
-       __GLcontextModes *visual;
-       (void)conf;
-
-       visual = drm_visual_modes_create(1, sizeof(*visual));
-       visual->redBits = 8;
-       visual->greenBits = 8;
-       visual->blueBits = 8;
-       visual->alphaBits = 8;
-
-       visual->rgbBits = 32;
-       visual->doubleBufferMode = 1;
-
-       visual->depthBits = 24;
-       visual->haveDepthBuffer = visual->depthBits > 0;
-       visual->stencilBits = 8;
-       visual->haveStencilBuffer = visual->stencilBits > 0;
-
-       return visual;
-}
diff --git a/src/gallium/winsys/drm/i965/egl/Makefile b/src/gallium/winsys/drm/i965/egl/Makefile
deleted file mode 100644 (file)
index a1b32eb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-TOP = ../../../../../..
-GALLIUMDIR = ../../../..
-include $(TOP)/configs/current
-
-LIBNAME = EGL_i965.so
-
-PIPE_DRIVERS = \
-       $(TOP)/src/gallium/state_trackers/egl/libegldrm.a \
-       $(GALLIUMDIR)/winsys/drm/i965/gem/libi965drm.a \
-       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/i965/libi965.a
-
-DRIVER_SOURCES =
-
-C_SOURCES = \
-       $(COMMON_GALLIUM_SOURCES) \
-       $(DRIVER_SOURCES)
-
-DRIVER_EXTRAS = -ldrm_intel
-
-ASM_SOURCES = 
-
-DRIVER_DEFINES = -I../gem $(shell pkg-config libdrm --atleast-version=2.3.1 \
-                               && echo "-DDRM_VBLANK_FLIP=DRM_VBLANK_FLIP")
-
-include ../../Makefile.template
-
-symlinks:
diff --git a/src/gallium/winsys/drm/intel/egl/Makefile b/src/gallium/winsys/drm/intel/egl/Makefile
deleted file mode 100644 (file)
index c9c92b6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-TOP = ../../../../../..
-GALLIUMDIR = ../../../..
-include $(TOP)/configs/current
-
-LIBNAME = egl_i915.so
-
-PIPE_DRIVERS = \
-       $(TOP)/src/gallium/state_trackers/egl/libegldrm.a \
-       $(GALLIUMDIR)/winsys/drm/intel/gem/libinteldrm.a \
-       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/i915/libi915.a
-
-DRIVER_EXTRAS = -lm -lpthread -ldrm_intel
-
-OBJECTS = dummy.o
-
-default: $(TOP)/$(LIB_DIR)/$(LIBNAME)
-
-$(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
-       @mkdir -p $(TOP)/$(LIB_DIR)
-       $(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR)
-
-$(LIBNAME): $(OBJECTS) $(GALLIUM_AUXILIARIES) $(PIPE_DRIVERS) Makefile
-       $(MKLIB) -noprefix -o $@ $(OBJECTS) \
-               -Wl,--whole-archive $(PIPE_DRIVERS) -Wl,--no-whole-archive \
-               -Wl,--start-group $(GALLIUM_AUXILIARIES) -Wl,--end-group \
-                 $(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
-
-clean:
-       -rm -f *.o *.so *~
-
-depend:
-
-symlinks:
-
-install: $(LIBNAME)
-       $(MINSTALL) -m 755 $(LIBNAME) $(INSTALL_DIR)/$(LIB_DIR)
diff --git a/src/gallium/winsys/drm/intel/egl/dummy.c b/src/gallium/winsys/drm/intel/egl/dummy.c
deleted file mode 100644 (file)
index 58c7af8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* mklib expects at least one .o is given */
diff --git a/src/gallium/winsys/drm/radeon/egl/Makefile b/src/gallium/winsys/drm/radeon/egl/Makefile
deleted file mode 100644 (file)
index fcbfd09..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-TOP = ../../../../../..
-GALLIUMDIR = ../../../..
-include $(TOP)/configs/current
-
-LIBNAME = egl_radeon.so
-
-PIPE_DRIVERS = \
-       $(TOP)/src/gallium/state_trackers/egl/libegldrm.a \
-       $(GALLIUMDIR)/winsys/drm/radeon/core/libradeonwinsys.a \
-       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/r300/libr300.a
-
-DRIVER_EXTRAS = -lm -lpthread -ldrm_radeon
-
-OBJECTS = dummy.o
-
-default: $(TOP)/$(LIB_DIR)/$(LIBNAME)
-
-$(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME)
-       @mkdir -p $(TOP)/$(LIB_DIR)
-       $(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR)
-
-$(LIBNAME): $(OBJECTS) $(GALLIUM_AUXILIARIES) $(PIPE_DRIVERS) Makefile
-       $(MKLIB) -noprefix -o $@ $(OBJECTS) \
-               -Wl,--whole-archive $(PIPE_DRIVERS) -Wl,--no-whole-archive \
-               -Wl,--start-group $(GALLIUM_AUXILIARIES) -Wl,--end-group \
-                 $(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
-
-clean:
-       -rm -f *.o *.so *~
-
-depend:
-
-symlinks:
-
-install: $(LIBNAME)
-       $(MINSTALL) -m 755 $(LIBNAME) $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
diff --git a/src/gallium/winsys/drm/radeon/egl/dummy.c b/src/gallium/winsys/drm/radeon/egl/dummy.c
deleted file mode 100644 (file)
index 58c7af8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* mklib expects at least one .o is given */
diff --git a/src/gallium/winsys/drm/vmware/egl/Makefile b/src/gallium/winsys/drm/vmware/egl/Makefile
deleted file mode 100644 (file)
index 8e2980c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-TOP = ../../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = EGL_svga.so
-
-PIPE_DRIVERS = \
-       $(TOP)/src/gallium/state_trackers/egl/libegldrm.a \
-       $(TOP)/src/gallium/winsys/drm/vmware/core/libsvgadrm.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/svga/libsvga.a
-
-C_SOURCES = \
-       $(COMMON_GALLIUM_SOURCES)
-
-include ../../Makefile.template
-
-symlinks: