Mesa (master): radeon-gallium: DRI2 state tracker, part 3.

Corbin Simpson csimpson at kemper.freedesktop.org
Wed Mar 4 23:53:56 UTC 2009


Module: Mesa
Branch: master
Commit: 07ffb00d30c750f85047485dbf091c3196a2abbf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=07ffb00d30c750f85047485dbf091c3196a2abbf

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Wed Mar  4 15:36:42 2009 -0800

radeon-gallium: DRI2 state tracker, part 3.

Properly setup the build process for adding in xorg and egl trackers,
and finally put radeon_context and radeon_screen to bed.

---

 src/gallium/winsys/drm/radeon/Makefile             |   36 +--
 src/gallium/winsys/drm/radeon/core/Makefile        |   18 ++
 .../winsys/drm/radeon/{ => core}/radeon_buffer.c   |   12 -
 .../winsys/drm/radeon/{ => core}/radeon_buffer.h   |   13 +-
 .../winsys/drm/radeon/{ => core}/radeon_drm.c      |    3 +-
 .../winsys/drm/radeon/{ => core}/radeon_drm.h      |    2 -
 .../winsys/drm/radeon/{ => core}/radeon_r300.c     |    0 
 .../winsys/drm/radeon/{ => core}/radeon_r300.h     |    0 
 .../drm/radeon/{ => core}/radeon_winsys_softpipe.c |   17 +-
 .../drm/radeon/{ => core}/radeon_winsys_softpipe.h |    9 +-
 src/gallium/winsys/drm/radeon/dri2/Makefile        |   25 ++
 src/gallium/winsys/drm/radeon/radeon_context.c     |  272 ------------------
 src/gallium/winsys/drm/radeon/radeon_context.h     |   70 -----
 src/gallium/winsys/drm/radeon/radeon_screen.c      |  288 --------------------
 src/gallium/winsys/drm/radeon/radeon_screen.h      |   41 ---
 15 files changed, 78 insertions(+), 728 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/Makefile b/src/gallium/winsys/drm/radeon/Makefile
index 8721f2c..fc8abc5 100644
--- a/src/gallium/winsys/drm/radeon/Makefile
+++ b/src/gallium/winsys/drm/radeon/Makefile
@@ -1,32 +1,12 @@
-
+# src/gallium/winsys/drm/radeon/Makefile
 TOP = ../../../../..
 include $(TOP)/configs/current
 
-LIBNAME = radeon_dri.so
-
-MINIGLX_SOURCES =
-
-PIPE_DRIVERS = \
-	$(TOP)/src/gallium/state_trackers/dri2/libdri2drm.a \
-	$(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
-	$(TOP)/src/gallium/drivers/r300/libr300.a
-
-DRIVER_SOURCES = \
-	radeon_buffer.c \
-	radeon_drm.c \
-	radeon_r300.c \
-	radeon_winsys_softpipe.c
-
-C_SOURCES = \
-	$(COMMON_GALLIUM_SOURCES) \
-	$(DRIVER_SOURCES)
-
-ASM_SOURCES = 
-
-DRIVER_DEFINES = -I../../../drivers/r300
-
-include ../Makefile.template
-
-DRI_LIB_DEPS += -ldrm_radeon
+SUBDIRS = core dri2
 
-symlinks:
+default install clean:
+	@for dir in $(SUBDIRS) ; do \
+		if [ -d $$dir ] ; then \
+			(cd $$dir && $(MAKE) $@) || exit 1; \
+		fi \
+	done
diff --git a/src/gallium/winsys/drm/radeon/core/Makefile b/src/gallium/winsys/drm/radeon/core/Makefile
new file mode 100644
index 0000000..42a6f4a
--- /dev/null
+++ b/src/gallium/winsys/drm/radeon/core/Makefile
@@ -0,0 +1,18 @@
+
+TOP = ../../../../../..
+include $(TOP)/configs/current
+
+LIBNAME = radeonwinsys
+
+C_SOURCES = \
+	radeon_buffer.c \
+	radeon_drm.c \
+	radeon_r300.c \
+	radeon_winsys_softpipe.c
+
+LIBRARY_INCLUDES = -I$(TOP)/src/gallium/drivers/r300 \
+		   $(shell pkg-config libdrm --cflags-only-I)
+
+include ../../../../Makefile.template
+
+symlinks:
diff --git a/src/gallium/winsys/drm/radeon/radeon_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
similarity index 97%
rename from src/gallium/winsys/drm/radeon/radeon_buffer.c
rename to src/gallium/winsys/drm/radeon/core/radeon_buffer.c
index b3582e3..f75e388 100644
--- a/src/gallium/winsys/drm/radeon/radeon_buffer.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
@@ -29,20 +29,8 @@
  *      Jérôme Glisse <glisse at freedesktop.org>
  *      Corbin Simpson <MostAwesomeDude at gmail.com>
  */
-#include <stdio.h>
 
-#include "state_tracker/st_public.h"
-
-#include "util/u_memory.h"
-
-#include "pipe/p_defines.h"
-#include "pipe/p_inlines.h"
 #include "radeon_buffer.h"
-#include "radeon_screen.h"
-#include "radeon_context.h"
-#include "radeon_bo.h"
-#include "radeon_drm.h"
-
 
 static const char *radeon_get_name(struct pipe_winsys *ws)
 {
diff --git a/src/gallium/winsys/drm/radeon/radeon_buffer.h b/src/gallium/winsys/drm/radeon/core/radeon_buffer.h
similarity index 92%
rename from src/gallium/winsys/drm/radeon/radeon_buffer.h
rename to src/gallium/winsys/drm/radeon/core/radeon_buffer.h
index e062308..e9d9e7c 100644
--- a/src/gallium/winsys/drm/radeon/radeon_buffer.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.h
@@ -30,11 +30,20 @@
 #ifndef RADEON_BUFFER_H
 #define RADEON_BUFFER_H
 
+#include <stdio.h>
+
 #include "pipe/internal/p_winsys_screen.h"
-#include "radeon_screen.h"
-#include "radeon_context.h"
+#include "pipe/p_defines.h"
+#include "pipe/p_inlines.h"
+
+//#include "state_tracker/st_public.h"
+
+#include "util/u_memory.h"
+
 #include "radeon_bo.h"
 
+#include "radeon_drm.h"
+
 struct radeon_pipe_buffer {
     struct pipe_buffer  base;
     struct radeon_bo    *bo;
diff --git a/src/gallium/winsys/drm/radeon/radeon_drm.c b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
similarity index 96%
rename from src/gallium/winsys/drm/radeon/radeon_drm.c
rename to src/gallium/winsys/drm/radeon/core/radeon_drm.c
index 016634c..c712482 100644
--- a/src/gallium/winsys/drm/radeon/radeon_drm.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
@@ -33,8 +33,7 @@
 /* Create a pipe_screen. */
 struct pipe_screen* radeon_create_screen(int drmFB, int pciID)
 {
-    struct radeon_context* radeon = CALLOC_STRUCT(radeon_context);
-    struct pipe_winsys* winsys = radeon_pipe_winsys(radeon);
+    struct pipe_winsys* winsys = radeon_pipe_winsys();
 
     if (getenv("RADEON_SOFTPIPE")) {
         return softpipe_create_screen(winsys);
diff --git a/src/gallium/winsys/drm/radeon/radeon_drm.h b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
similarity index 97%
rename from src/gallium/winsys/drm/radeon/radeon_drm.h
rename to src/gallium/winsys/drm/radeon/core/radeon_drm.h
index e434106..ca2d98e 100644
--- a/src/gallium/winsys/drm/radeon/radeon_drm.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
@@ -37,9 +37,7 @@
 #include "state_tracker/drm_api.h"
 
 #include "radeon_buffer.h"
-#include "radeon_context.h"
 #include "radeon_r300.h"
-#include "radeon_screen.h"
 #include "radeon_winsys_softpipe.h"
 
 struct pipe_screen* radeon_create_screen(int drmFB, int pciID);
diff --git a/src/gallium/winsys/drm/radeon/radeon_r300.c b/src/gallium/winsys/drm/radeon/core/radeon_r300.c
similarity index 100%
rename from src/gallium/winsys/drm/radeon/radeon_r300.c
rename to src/gallium/winsys/drm/radeon/core/radeon_r300.c
diff --git a/src/gallium/winsys/drm/radeon/radeon_r300.h b/src/gallium/winsys/drm/radeon/core/radeon_r300.h
similarity index 100%
rename from src/gallium/winsys/drm/radeon/radeon_r300.h
rename to src/gallium/winsys/drm/radeon/core/radeon_r300.h
diff --git a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c
similarity index 84%
rename from src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c
rename to src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c
index 75e975f..226e166 100644
--- a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c
@@ -28,11 +28,7 @@
 /*
  * Authors: Keith Whitwell <keithw-at-tungstengraphics-dot-com>
  */
-#include <stdio.h>
-#include "pipe/p_defines.h"
-#include "pipe/p_format.h"
-#include "softpipe/sp_winsys.h"
-#include "radeon_context.h"
+
 #include "radeon_winsys_softpipe.h"
 
 struct radeon_softpipe_winsys {
@@ -58,17 +54,18 @@ static boolean radeon_is_format_supported(struct softpipe_winsys *sws, uint form
 
 struct pipe_context *radeon_create_softpipe(struct pipe_winsys* winsys)
 {
-    struct radeon_softpipe_winsys *radeon_sp_ws;
+    struct softpipe_winsys *sp_winsys;
     struct pipe_screen *pipe_screen;
 
     pipe_screen = softpipe_create_screen(winsys);
 
-    radeon_sp_ws = CALLOC_STRUCT(radeon_softpipe_winsys);
-    if (radeon_sp_ws == NULL) {
+    sp_winsys = CALLOC_STRUCT(softpipe_winsys);
+    if (sp_winsys == NULL) {
         return NULL;
     }
-    radeon_sp_ws->sp_winsys.is_format_supported = radeon_is_format_supported;
+
+    sp_winsys->is_format_supported = radeon_is_format_supported;
     return softpipe_create(pipe_screen,
                            winsys,
-                           &radeon_sp_ws->sp_winsys);
+                           sp_winsys);
 }
diff --git a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h
similarity index 91%
rename from src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h
rename to src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h
index 093693e..04740e4 100644
--- a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h
@@ -30,7 +30,14 @@
 #ifndef RADEON_WINSYS_SOFTPIPE_H
 #define RADEON_WINSYS_SOFTPIPE_H
 
-#include "radeon_context.h"
+#include <stdio.h>
+
+#include "pipe/p_defines.h"
+#include "pipe/p_format.h"
+
+#include "softpipe/sp_winsys.h"
+
+#include "util/u_memory.h"
 
 struct pipe_context *radeon_create_softpipe(struct pipe_winsys* winsys);
 
diff --git a/src/gallium/winsys/drm/radeon/dri2/Makefile b/src/gallium/winsys/drm/radeon/dri2/Makefile
new file mode 100644
index 0000000..b1c2f30
--- /dev/null
+++ b/src/gallium/winsys/drm/radeon/dri2/Makefile
@@ -0,0 +1,25 @@
+
+TOP = ../../../../../..
+include $(TOP)/configs/current
+
+LIBNAME = radeon_dri.so
+
+MINIGLX_SOURCES =
+
+PIPE_DRIVERS = \
+	$(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
+	$(TOP)/src/gallium/drivers/r300/libr300.a \
+	$(TOP)/src/gallium/state_trackers/dri2/libdri2drm.a \
+	$(TOP)/src/gallium/winsys/drm/radeon/core/libradeonwinsys.a
+
+C_SOURCES = \
+	$(COMMON_GALLIUM_SOURCES) \
+	$(DRIVER_SOURCES)
+
+ASM_SOURCES = 
+
+include ../../Makefile.template
+
+DRI_LIB_DEPS += -ldrm_radeon
+
+symlinks:
diff --git a/src/gallium/winsys/drm/radeon/radeon_context.c b/src/gallium/winsys/drm/radeon/radeon_context.c
deleted file mode 100644
index 13a7035..0000000
--- a/src/gallium/winsys/drm/radeon/radeon_context.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/* 
- * Copyright © 2008 Jérôme Glisse
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
- * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- */
-/*
- * Authors:
- *      Jérôme Glisse <glisse at freedesktop.org>
- */
-#include <stdio.h>
-#include "dri_util.h"
-#include "pipe/p_defines.h"
-#include "pipe/p_inlines.h"
-#include "state_tracker/st_public.h"
-#include "state_tracker/st_context.h"
-#include "radeon_screen.h"
-#include "radeon_context.h"
-#include "radeon_buffer.h"
-#include "radeon_winsys_softpipe.h"
-
-#define need_GL_ARB_point_parameters
-#define need_GL_ARB_vertex_buffer_object
-#define need_GL_EXT_cull_vertex
-#define need_GL_EXT_compiled_vertex_array
-#include "extension_helper.h"
-
-/**
- * Extension strings exported by the radeon driver.
- */
-const struct dri_extension radeon_card_extensions[] = {
-/* XXX these are technically not supported
-   {"GL_ARB_texture_rectangle", NULL},
-   {"GL_ARB_pixel_buffer_object", NULL}, */
-   {"GL_ARB_point_parameters", GL_ARB_point_parameters_functions},
-   {"GL_ARB_vertex_buffer_object", GL_ARB_vertex_buffer_object_functions},
-   {"GL_EXT_compiled_vertex_array", GL_EXT_compiled_vertex_array_functions},
-   {"GL_EXT_cull_vertex", GL_EXT_cull_vertex_functions},
-   {NULL, NULL}
-};
-
-static void radeon_update_renderbuffers(__DRIcontext *dri_context,
-                                     __DRIdrawable *dri_drawable)
-{
-    struct radeon_framebuffer *radeon_fb;
-    struct radeon_context *radeon_context;
-    unsigned attachments[10];
-    __DRIbuffer *buffers;
-    __DRIscreen *screen;
-    int i, count;
-
-    radeon_context = dri_context->driverPrivate;
-    screen = dri_drawable->driScreenPriv;
-    radeon_fb = dri_drawable->driverPrivate;
-    for (count = 0, i = 0; count < 6; count++) {
-        if (radeon_fb->attachments & (1 << count)) {
-            attachments[i++] = count;
-        }
-    }
-
-    buffers = (*screen->dri2.loader->getBuffers)(dri_drawable,
-                                                 &dri_drawable->w,
-                                                 &dri_drawable->h,
-                                                 attachments,
-                                                 i,
-                                                 &count,
-                                                 dri_drawable->loaderPrivate);
-    if (buffers == NULL) {
-        return;
-    }
-
-    /* set one cliprect to cover the whole dri_drawable */
-    dri_drawable->x = 0;
-    dri_drawable->y = 0;
-    dri_drawable->backX = 0;
-    dri_drawable->backY = 0;
-    dri_drawable->numClipRects = 1;
-    dri_drawable->pClipRects[0].x1 = 0;
-    dri_drawable->pClipRects[0].y1 = 0;
-    dri_drawable->pClipRects[0].x2 = dri_drawable->w;
-    dri_drawable->pClipRects[0].y2 = dri_drawable->h;
-    dri_drawable->numBackClipRects = 1;
-    dri_drawable->pBackClipRects[0].x1 = 0;
-    dri_drawable->pBackClipRects[0].y1 = 0;
-    dri_drawable->pBackClipRects[0].x2 = dri_drawable->w;
-    dri_drawable->pBackClipRects[0].y2 = dri_drawable->h;
-
-    for (i = 0; i < count; i++) {
-        struct pipe_surface *ps;
-        enum pipe_format format = 0;
-        int index = 0;
-
-        switch (buffers[i].attachment) {
-        case __DRI_BUFFER_FRONT_LEFT:
-            index = ST_SURFACE_FRONT_LEFT;
-            switch (buffers[i].cpp) {
-            case 4:
-                format = PIPE_FORMAT_A8R8G8B8_UNORM;
-                break;
-            case 2:
-                format = PIPE_FORMAT_R5G6B5_UNORM;
-                break;
-            default:
-                /* FIXME: error */
-                return;
-            }
-            break;
-        case __DRI_BUFFER_BACK_LEFT:
-            index = ST_SURFACE_BACK_LEFT;
-            switch (buffers[i].cpp) {
-            case 4:
-                format = PIPE_FORMAT_A8R8G8B8_UNORM;
-                break;
-            case 2:
-                format = PIPE_FORMAT_R5G6B5_UNORM;
-                break;
-            default:
-                /* FIXME: error */
-                return;
-            }
-            break;
-        case __DRI_BUFFER_STENCIL:
-        case __DRI_BUFFER_DEPTH:
-            index = ST_SURFACE_DEPTH;
-            switch (buffers[i].cpp) {
-            case 4:
-                format = PIPE_FORMAT_Z24S8_UNORM;
-                break;
-            case 2:
-                format = PIPE_FORMAT_Z16_UNORM;
-                break;
-            default:
-                /* FIXME: error */
-                return;
-            }
-            break;
-        case __DRI_BUFFER_ACCUM:
-        default:
-            fprintf(stderr,
-                    "unhandled buffer attach event, attacment type %d\n",
-                    buffers[i].attachment);
-            return;
-        }
-
-        ps = radeon_surface_from_handle(radeon_context,
-                                     buffers[i].name,
-                                     format,
-                                     dri_drawable->w,
-                                     dri_drawable->h,
-                                     buffers[i].pitch);
-        assert(ps);
-        st_set_framebuffer_surface(radeon_fb->st_framebuffer, index, ps);
-    }
-    st_resize_framebuffer(radeon_fb->st_framebuffer,
-                          dri_drawable->w,
-                          dri_drawable->h);
-}
-
-GLboolean radeon_context_create(const __GLcontextModes *visual,
-                             __DRIcontextPrivate *dri_context,
-                             void *shared_context)
-{
-    __DRIscreenPrivate *dri_screen;
-    struct radeon_context *radeon_context;
-    struct radeon_screen *radeon_screen;
-    struct pipe_context *pipe;
-    struct st_context *shared_st_context = NULL;
-
-    dri_context->driverPrivate = NULL;
-    radeon_context = calloc(1, sizeof(struct radeon_context));
-    if (radeon_context == NULL) {
-        return GL_FALSE;
-    }
-
-    if (shared_context) {
-        shared_st_context = ((struct radeon_context*)shared_context)->st_context;
-    }
-
-    dri_screen = dri_context->driScreenPriv;
-    radeon_screen = dri_screen->private;
-    radeon_context->dri_screen = dri_screen;
-    radeon_context->radeon_screen = radeon_screen;
-    radeon_context->drm_fd = dri_screen->fd;
-
-    radeon_context->pipe_winsys = radeon_pipe_winsys(radeon_screen);
-    if (radeon_context->pipe_winsys == NULL) {
-        free(radeon_context);
-        return GL_FALSE;
-    }
-
-    if (!getenv("RADEON_SOFTPIPE")) {
-        fprintf(stderr, "Creating r300 context...\n");
-        pipe =
-            r300_create_context(NULL,
-                                radeon_context->pipe_winsys,
-                                radeon_create_r300_winsys(radeon_context->drm_fd));
-        radeon_context->pipe_screen = pipe->screen;
-    } else {
-        pipe = radeon_create_softpipe(radeon_context);
-    }
-    radeon_context->st_context = st_create_context(pipe, visual,
-                                                shared_st_context);
-    driInitExtensions(radeon_context->st_context->ctx,
-                      radeon_card_extensions, GL_TRUE);
-    dri_context->driverPrivate = radeon_context;
-    return GL_TRUE;
-}
-
-void radeon_context_destroy(__DRIcontextPrivate *dri_context)
-{
-    struct radeon_context *radeon_context;
-
-    radeon_context = dri_context->driverPrivate;
-    st_finish(radeon_context->st_context);
-    st_destroy_context(radeon_context->st_context);
-    free(radeon_context);
-}
-
-GLboolean radeon_context_bind(__DRIcontextPrivate *dri_context,
-                           __DRIdrawablePrivate *dri_drawable,
-                           __DRIdrawablePrivate *dri_readable)
-{
-    struct radeon_framebuffer *drawable;
-    struct radeon_framebuffer *readable;
-    struct radeon_context *radeon_context;
-
-    if (dri_context == NULL) {
-        st_make_current(NULL, NULL, NULL);
-        return GL_TRUE;
-    }
-
-    radeon_context = dri_context->driverPrivate;
-    drawable = dri_drawable->driverPrivate;
-    readable = dri_readable->driverPrivate;
-    st_make_current(radeon_context->st_context,
-                    drawable->st_framebuffer,
-                    readable->st_framebuffer);
-
-    radeon_update_renderbuffers(dri_context, dri_drawable);
-    if (dri_drawable != dri_readable) {
-        radeon_update_renderbuffers(dri_context, dri_readable);
-    }
-    return GL_TRUE;
-}
-
-GLboolean radeon_context_unbind(__DRIcontextPrivate *dri_context)
-{
-    struct radeon_context *radeon_context;
-
-    radeon_context = dri_context->driverPrivate;
-    st_flush(radeon_context->st_context, PIPE_FLUSH_RENDER_CACHE, NULL);
-    return GL_TRUE;
-}
diff --git a/src/gallium/winsys/drm/radeon/radeon_context.h b/src/gallium/winsys/drm/radeon/radeon_context.h
deleted file mode 100644
index d7222b4..0000000
--- a/src/gallium/winsys/drm/radeon/radeon_context.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* 
- * Copyright © 2008 Jérôme Glisse
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
- * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- */
-/*
- * Authors:
- *      Jérôme Glisse <glisse at freedesktop.org>
- */
-#ifndef RADEON_CONTEXT_H
-#define RADEON_CONTEXT_H
-
-#include "dri_util.h"
-#include "state_tracker/st_public.h"
-#include "state_tracker/st_context.h"
-#include "radeon_screen.h"
-
-#include "radeon_r300.h"
-
-struct radeon_framebuffer {
-    struct st_framebuffer   *st_framebuffer;
-    unsigned                attachments;
-};
-
-struct radeon_context {
-    /* st */
-    struct st_context       *st_context;
-    /* pipe */
-    struct pipe_screen      *pipe_screen;
-    struct pipe_winsys      *pipe_winsys;
-    /* DRI */
-    __DRIscreenPrivate      *dri_screen;
-    __DRIdrawablePrivate    *dri_drawable;
-    __DRIdrawablePrivate    *dri_readable;
-    /* DRM */
-    int                     drm_fd;
-   /* RADEON */
-    struct radeon_screen       *radeon_screen;
-};
-
-GLboolean radeon_context_create(const __GLcontextModes*,
-                             __DRIcontextPrivate*,
-                             void*);
-void radeon_context_destroy(__DRIcontextPrivate*);
-GLboolean radeon_context_bind(__DRIcontextPrivate*,
-                           __DRIdrawablePrivate*,
-                           __DRIdrawablePrivate*);
-GLboolean radeon_context_unbind(__DRIcontextPrivate*);
-
-#endif
diff --git a/src/gallium/winsys/drm/radeon/radeon_screen.c b/src/gallium/winsys/drm/radeon/radeon_screen.c
deleted file mode 100644
index e31caff..0000000
--- a/src/gallium/winsys/drm/radeon/radeon_screen.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* 
- * Copyright © 2008 Jérôme Glisse
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
- * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- */
-/*
- * Authors:
- *      Jérôme Glisse <glisse at freedesktop.org>
- */
-#include <stdio.h>
-#include "pipe/p_screen.h"
-#include "pipe/p_defines.h"
-#include "pipe/p_inlines.h"
-#include "pipe/p_context.h"
-#include "pipe/p_state.h"
-#include "state_tracker/st_public.h"
-#include "state_tracker/st_context.h"
-#include "utils.h"
-#include "xf86drm.h"
-#include "drm.h"
-#include "dri_util.h"
-#include "radeon_screen.h"
-#include "radeon_context.h"
-#include "radeon_buffer.h"
-#include "radeon_bo.h"
-#include "radeon_bo_gem.h"
-#include "radeon_drm.h"
-
-extern const struct dri_extension radeon_card_extensions[];
-
-static const __DRIextension *radeon_screen_extensions[] = {
-    &driReadDrawableExtension,
-    &driCopySubBufferExtension.base,
-    &driSwapControlExtension.base,
-    &driFrameTrackingExtension.base,
-    &driMediaStreamCounterExtension.base,
-    NULL
-};
-
-static __DRIconfig **radeon_fill_in_modes(unsigned pixel_bits,
-                                       unsigned depth_bits,
-                                       GLboolean have_back_buffer)
-{
-    __DRIconfig **configs;
-    unsigned depth_buffer_factor;
-    unsigned back_buffer_factor;
-    unsigned num_modes;
-    GLenum fb_format;
-    GLenum fb_type;
-    uint8_t depth_bits_array[3];
-    uint8_t stencil_bits_array[3];
-    uint8_t msaa_samples_array[1];
-    /* TODO: pageflipping ? */
-    static const GLenum back_buffer_modes[] = {
-        GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
-    };
-
-    stencil_bits_array[0] = 0;
-    stencil_bits_array[1] = 0;
-    if (depth_bits == 24) {
-        stencil_bits_array[2] = 8;
-        num_modes = 3;
-    }
-
-    depth_bits_array[0] = 0;
-    depth_bits_array[1] = depth_bits;
-    depth_bits_array[2] = depth_bits;
-    depth_buffer_factor = (depth_bits == 24) ? 3 : 2;
-
-    back_buffer_factor = (have_back_buffer) ? 3 : 1;
-
-    msaa_samples_array[0] = 0;
-
-    if (pixel_bits == 16) {
-        fb_format = GL_RGB;
-        fb_type = GL_UNSIGNED_SHORT_5_6_5;
-    } else {
-        fb_format = GL_BGRA;
-        fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
-    }
-
-    configs = (__DRIconfig **)driCreateConfigs(fb_format,
-                                               fb_type,
-                                               depth_bits_array,
-                                               stencil_bits_array,
-                                               depth_buffer_factor,
-                                               back_buffer_modes,
-                                               back_buffer_factor,
-                                               msaa_samples_array,
-                                               1);
-    if (configs == NULL) {
-        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n",
-                __FILE__, __LINE__);
-        return NULL;
-    }
-    return configs;
-}
-
-static void radeon_screen_destroy(__DRIscreenPrivate *dri_screen)
-{
-     struct radeon_screen *radeon_screen = (struct radeon_screen*)dri_screen->private;
-
-     radeon_bo_manager_gem_dtor(radeon_screen->bom); 
-     dri_screen = NULL;
-     free(radeon_screen);
-}
-
-static const __DRIconfig **radeon_screen_init(__DRIscreenPrivate *dri_screen)
-{
-    struct radeon_screen *radeon_screen;
-
-    /* Calling driInitExtensions here, with a NULL context pointer,
-     * does not actually enable the extensions.  It just makes sure
-     * that all the dispatch offsets for all the extensions that
-     * *might* be enables are known.  This is needed because the
-     * dispatch offsets need to be known when _mesa_context_create is
-     * called, but we can't enable the extensions until we have a
-     * context pointer.
-     *
-     * Hello chicken.  Hello egg.  How are you two today?
-     */
-    driInitExtensions(NULL, radeon_card_extensions, GL_FALSE);
-
-    radeon_screen = calloc(1, sizeof(struct radeon_screen));
-    if (radeon_screen == NULL) {
-        fprintf(stderr, "\nERROR!  Allocating private area failed\n");
-        return NULL;
-    }
-    dri_screen->private = (void*)radeon_screen;
-    dri_screen->extensions = radeon_screen_extensions;
-    radeon_screen->dri_screen = dri_screen;
-
-    radeon_screen->bom = radeon_bo_manager_gem_ctor(dri_screen->fd);
-    if (radeon_screen->bom == NULL) {
-        radeon_screen_destroy(dri_screen);
-        return NULL;
-    }
-
-    return driConcatConfigs(radeon_fill_in_modes(16, 16, 1),
-                            radeon_fill_in_modes(32, 24, 1));
-}
-
-static boolean radeon_buffer_create(__DRIscreenPrivate *dri_screen,
-                                 __DRIdrawablePrivate *dri_drawable,
-                                 const __GLcontextModes *visual,
-                                 boolean is_pixmap)
-{
-    if (is_pixmap) {
-        /* TODO: implement ? */
-        return GL_FALSE;
-    } else {
-        enum pipe_format color_format, depth_format, stencil_format;
-        struct radeon_framebuffer *radeon_fb;
-
-        radeon_fb = calloc(1, sizeof(struct radeon_framebuffer));
-        if (radeon_fb == NULL) {
-            return GL_FALSE;
-        }
-
-        switch (visual->redBits) {
-        case 5:
-            color_format = PIPE_FORMAT_R5G6B5_UNORM;
-            break;
-        default:
-            color_format = PIPE_FORMAT_A8R8G8B8_UNORM;
-            break;
-        }
-
-        switch (visual->depthBits) {
-        case 24:
-            depth_format = PIPE_FORMAT_S8Z24_UNORM;
-            break;
-        case 16:
-            depth_format = PIPE_FORMAT_Z16_UNORM;
-            break;
-        default:
-            depth_format = PIPE_FORMAT_NONE;
-            break;
-        }
-
-        switch (visual->stencilBits) {
-        case 8:
-            /* force depth format */
-            depth_format = PIPE_FORMAT_S8Z24_UNORM;
-            stencil_format = PIPE_FORMAT_S8Z24_UNORM;
-            break;
-        default:
-            stencil_format = PIPE_FORMAT_NONE;
-            break;
-        }
-
-        radeon_fb->st_framebuffer = st_create_framebuffer(visual,
-                                                       color_format,
-                                                       depth_format,
-                                                       stencil_format,
-                                                       dri_drawable->w,
-                                                       dri_drawable->h,
-                                                       (void*)radeon_fb);
-        if (radeon_fb->st_framebuffer == NULL) {
-            free(radeon_fb);
-            return GL_FALSE;
-        }
-        dri_drawable->driverPrivate = (void *) radeon_fb;
-
-        radeon_fb->attachments = (1 << __DRI_BUFFER_FRONT_LEFT);
-        if (visual->doubleBufferMode) {
-            radeon_fb->attachments |= (1 << __DRI_BUFFER_BACK_LEFT);
-        }
-        if (visual->depthBits || visual->stencilBits) {
-            radeon_fb->attachments |= (1 << __DRI_BUFFER_DEPTH);
-        }
-
-        return GL_TRUE;
-    }
-}
-
-static void radeon_buffer_destroy(__DRIdrawablePrivate * dri_drawable)
-{
-   struct radeon_framebuffer *radeon_fb;
-   
-   radeon_fb = dri_drawable->driverPrivate;
-   assert(radeon_fb->st_framebuffer);
-   st_unreference_framebuffer(radeon_fb->st_framebuffer);
-   free(radeon_fb);
-}
-
-static void radeon_swap_buffers(__DRIdrawablePrivate *dri_drawable)
-{
-    struct radeon_framebuffer *radeon_fb;
-    struct pipe_surface *back_surf = NULL;
-
-    radeon_fb = dri_drawable->driverPrivate;
-    assert(radeon_fb);
-    assert(radeon_fb->st_framebuffer);
-
-    st_get_framebuffer_surface(radeon_fb->st_framebuffer,
-                               ST_SURFACE_BACK_LEFT,
-                               &back_surf);
-    if (back_surf) {
-        st_notify_swapbuffers(radeon_fb->st_framebuffer);
-        /* TODO: do we want to do anythings ? */
-        st_notify_swapbuffers_complete(radeon_fb->st_framebuffer);
-    }
-}
-
-/**
- * Called via glXCopySubBufferMESA() to copy a subrect of the back
- * buffer to the front buffer/screen.
- */
-static void radeon_copy_sub_buffer(__DRIdrawablePrivate *dri_drawable,
-                         int x, int y, int w, int h)
-{
-    /* TODO: ... */
-}
-
-const struct __DriverAPIRec driDriverAPI = {
-    .InitScreen           = NULL,
-    .DestroyScreen        = radeon_screen_destroy,
-    .CreateContext        = radeon_context_create,
-    .DestroyContext       = radeon_context_destroy,
-    .CreateBuffer         = radeon_buffer_create,
-    .DestroyBuffer        = radeon_buffer_destroy,
-    .SwapBuffers          = radeon_swap_buffers,
-    .MakeCurrent          = radeon_context_bind,
-    .UnbindContext        = radeon_context_unbind,
-    .CopySubBuffer        = radeon_copy_sub_buffer,
-    .InitScreen2          = radeon_screen_init,
-};
diff --git a/src/gallium/winsys/drm/radeon/radeon_screen.h b/src/gallium/winsys/drm/radeon/radeon_screen.h
deleted file mode 100644
index 01b7fa6..0000000
--- a/src/gallium/winsys/drm/radeon/radeon_screen.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* 
- * Copyright © 2008 Jérôme Glisse
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
- * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- */
-/*
- * Authors:
- *      Jérôme Glisse <glisse at freedesktop.org>
- */
-#ifndef RADEON_SCREEN_H
-#define RADEON_SCREEN_H
-
-#include "dri_util.h"
-#include "radeon_bo.h"
-
-struct radeon_screen {
-    __DRIscreenPrivate          *dri_screen;
-    struct radeon_bo_manager    *bom;
-};
-
-#endif




More information about the mesa-commit mailing list