radeon-gallium: DRI2 state tracker, part 3.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Wed, 4 Mar 2009 23:36:42 +0000 (15:36 -0800)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Wed, 4 Mar 2009 23:50:00 +0000 (15:50 -0800)
Properly setup the build process for adding in xorg and egl trackers,
and finally put radeon_context and radeon_screen to bed.

23 files changed:
src/gallium/winsys/drm/radeon/Makefile
src/gallium/winsys/drm/radeon/core/Makefile [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_buffer.c [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_buffer.h [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_drm.c [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_drm.h [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_r300.c [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_r300.h [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c [new file with mode: 0644]
src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h [new file with mode: 0644]
src/gallium/winsys/drm/radeon/dri2/Makefile [new file with mode: 0644]
src/gallium/winsys/drm/radeon/radeon_buffer.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_buffer.h [deleted file]
src/gallium/winsys/drm/radeon/radeon_context.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_context.h [deleted file]
src/gallium/winsys/drm/radeon/radeon_drm.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_drm.h [deleted file]
src/gallium/winsys/drm/radeon/radeon_r300.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_r300.h [deleted file]
src/gallium/winsys/drm/radeon/radeon_screen.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_screen.h [deleted file]
src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c [deleted file]
src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h [deleted file]

index 8721f2cb5d47aac7805c13de48da036ddfc37ebd..fc8abc572f678aeea7abfb99479898f2bd2d1c42 100644 (file)
@@ -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 (file)
index 0000000..42a6f4a
--- /dev/null
@@ -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/core/radeon_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
new file mode 100644 (file)
index 0000000..f75e388
--- /dev/null
@@ -0,0 +1,239 @@
+/* 
+ * Copyright © 2008 Jérôme Glisse
+ *             2009 Corbin Simpson
+ * 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@freedesktop.org>
+ *      Corbin Simpson <MostAwesomeDude@gmail.com>
+ */
+
+#include "radeon_buffer.h"
+
+static const char *radeon_get_name(struct pipe_winsys *ws)
+{
+    return "Radeon/GEM+KMS";
+}
+
+static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws,
+                                                unsigned alignment,
+                                                unsigned usage,
+                                                unsigned size)
+{
+    struct radeon_winsys *radeon_ws = (struct radeon_winsys *)ws;
+    struct radeon_pipe_buffer *radeon_buffer;
+    uint32_t domain;
+
+    radeon_buffer = CALLOC_STRUCT(radeon_pipe_buffer);
+    if (radeon_buffer == NULL) {
+        return NULL;
+    }
+
+    pipe_reference_init(&radeon_buffer->base.reference, 1);
+    radeon_buffer->base.alignment = alignment;
+    radeon_buffer->base.usage = usage;
+    radeon_buffer->base.size = size;
+
+    domain = 0;
+
+    if (usage & PIPE_BUFFER_USAGE_PIXEL) {
+        domain |= RADEON_GEM_DOMAIN_VRAM;
+    }
+    if (usage & PIPE_BUFFER_USAGE_VERTEX) {
+        domain |= RADEON_GEM_DOMAIN_GTT;
+    }
+    if (usage & PIPE_BUFFER_USAGE_INDEX) {
+        domain |= RADEON_GEM_DOMAIN_GTT;
+    }
+
+    radeon_buffer->bo = radeon_bo_open(radeon_ws->bom, 0, size, alignment,
+                                       domain, 0);
+    if (radeon_buffer->bo == NULL) {
+        FREE(radeon_buffer);
+    }
+    return &radeon_buffer->base;
+}
+
+static struct pipe_buffer *radeon_buffer_user_create(struct pipe_winsys *ws,
+                                                     void *ptr,
+                                                     unsigned bytes)
+{
+    struct radeon_pipe_buffer *radeon_buffer;
+
+    radeon_buffer = (struct radeon_pipe_buffer*)radeon_buffer_create(ws, 0, 0, bytes);
+    if (radeon_buffer == NULL) {
+        return NULL;
+    }
+    radeon_bo_map(radeon_buffer->bo, 1);
+    memcpy(radeon_buffer->bo->ptr, ptr, bytes);
+    radeon_bo_unmap(radeon_buffer->bo);
+    return &radeon_buffer->base;
+}
+
+static void radeon_buffer_del(struct pipe_buffer *buffer)
+{
+    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
+
+    radeon_bo_unref(radeon_buffer->bo);
+    free(radeon_buffer);
+}
+
+static void *radeon_buffer_map(struct pipe_winsys *ws,
+                               struct pipe_buffer *buffer,
+                               unsigned flags)
+{
+    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
+    int write = 0;
+
+    if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) {
+       /* XXX Remove this when radeon_bo_map supports DONTBLOCK */
+       return NULL;
+    }
+    if (flags & PIPE_BUFFER_USAGE_CPU_WRITE) {
+        write = 1;
+    }
+
+    if (radeon_bo_map(radeon_buffer->bo, write))
+        return NULL;
+    return radeon_buffer->bo->ptr;
+}
+
+static void radeon_buffer_unmap(struct pipe_winsys *ws, struct pipe_buffer *buffer)
+{
+    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
+
+    radeon_bo_unmap(radeon_buffer->bo);
+}
+
+static void radeon_fence_reference(struct pipe_winsys *ws,
+                                   struct pipe_fence_handle **ptr,
+                                   struct pipe_fence_handle *pfence)
+{
+}
+
+static int radeon_fence_signalled(struct pipe_winsys *ws,
+                                  struct pipe_fence_handle *pfence,
+                                  unsigned flag)
+{
+    return 1;
+}
+
+static int radeon_fence_finish(struct pipe_winsys *ws,
+                               struct pipe_fence_handle *pfence,
+                               unsigned flag)
+{
+    return 0;
+}
+
+static void radeon_flush_frontbuffer(struct pipe_winsys *pipe_winsys,
+                                     struct pipe_surface *pipe_surface,
+                                     void *context_private)
+{
+    /* TODO: call dri2CopyRegion */
+}
+
+struct pipe_winsys *radeon_pipe_winsys()
+{
+    struct pipe_winsys *radeon_ws;
+
+    radeon_ws = CALLOC_STRUCT(pipe_winsys);
+    if (radeon_ws == NULL) {
+        return NULL;
+    }
+
+    radeon_ws->flush_frontbuffer = radeon_flush_frontbuffer;
+
+    radeon_ws->buffer_create = radeon_buffer_create;
+    radeon_ws->buffer_destroy = radeon_buffer_del;
+    radeon_ws->user_buffer_create = radeon_buffer_user_create;
+    radeon_ws->buffer_map = radeon_buffer_map;
+    radeon_ws->buffer_unmap = radeon_buffer_unmap;
+
+    radeon_ws->fence_reference = radeon_fence_reference;
+    radeon_ws->fence_signalled = radeon_fence_signalled;
+    radeon_ws->fence_finish = radeon_fence_finish;
+
+    radeon_ws->get_name = radeon_get_name;
+
+    return radeon_ws;
+}
+#if 0
+static struct pipe_buffer *radeon_buffer_from_handle(struct radeon_screen *radeon_screen,
+                                                  uint32_t handle)
+{
+    struct radeon_pipe_buffer *radeon_buffer;
+    struct radeon_bo *bo = NULL;
+
+    bo = radeon_bo_open(radeon_screen->bom, handle, 0, 0, 0, 0);
+    if (bo == NULL) {
+        return NULL;
+    }
+    radeon_buffer = calloc(1, sizeof(struct radeon_pipe_buffer));
+    if (radeon_buffer == NULL) {
+        radeon_bo_unref(bo);
+        return NULL;
+    }
+    pipe_reference_init(&radeon_buffer->base.reference, 1);
+    radeon_buffer->base.usage = PIPE_BUFFER_USAGE_PIXEL;
+    radeon_buffer->bo = bo;
+    return &radeon_buffer->base;
+}
+
+struct pipe_surface *radeon_surface_from_handle(struct radeon_context *radeon_context,
+                                             uint32_t handle,
+                                             enum pipe_format format,
+                                             int w, int h, int pitch)
+{
+    struct pipe_screen *pipe_screen = radeon_context->pipe_screen;
+    struct pipe_winsys *pipe_winsys = radeon_context->pipe_winsys;
+    struct pipe_texture tmpl;
+    struct pipe_surface *ps;
+    struct pipe_texture *pt;
+    struct pipe_buffer *pb;
+
+    pb = radeon_buffer_from_handle(radeon_context->radeon_screen, handle);
+    if (pb == NULL) {
+        return NULL;
+    }
+    memset(&tmpl, 0, sizeof(tmpl));
+    tmpl.tex_usage = PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
+    tmpl.target = PIPE_TEXTURE_2D;
+    tmpl.width[0] = w;
+    tmpl.height[0] = h;
+    tmpl.depth[0] = 1;
+    tmpl.format = format;
+    pf_get_block(tmpl.format, &tmpl.block);
+    tmpl.nblocksx[0] = pf_get_nblocksx(&tmpl.block, w);
+    tmpl.nblocksy[0] = pf_get_nblocksy(&tmpl.block, h);
+
+    pt = pipe_screen->texture_blanket(pipe_screen, &tmpl, &pitch, pb);
+    if (pt == NULL) {
+        pipe_buffer_reference(&pb, NULL);
+    }
+    ps = pipe_screen->get_tex_surface(pipe_screen, pt, 0, 0, 0,
+                                      PIPE_BUFFER_USAGE_GPU_WRITE);
+    return ps;
+}
+#endif
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.h b/src/gallium/winsys/drm/radeon/core/radeon_buffer.h
new file mode 100644 (file)
index 0000000..e9d9e7c
--- /dev/null
@@ -0,0 +1,66 @@
+/* 
+ * 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@freedesktop.org>
+ */
+#ifndef RADEON_BUFFER_H
+#define RADEON_BUFFER_H
+
+#include <stdio.h>
+
+#include "pipe/internal/p_winsys_screen.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;
+};
+
+struct radeon_winsys {
+    /* Parent class. */
+    struct pipe_winsys base;
+
+    /* Radeon BO manager. This corresponds to void* radeon_winsys in r300_winsys. */
+    struct radeon_bo_manager* bom;
+};
+
+struct pipe_winsys *radeon_pipe_winsys();
+struct pipe_surface *radeon_surface_from_handle(struct radeon_context *radeon_context,
+                                             uint32_t handle,
+                                             enum pipe_format format,
+                                             int w, int h, int pitch);
+
+#endif
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.c b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
new file mode 100644 (file)
index 0000000..c712482
--- /dev/null
@@ -0,0 +1,122 @@
+/* 
+ * Copyright © 2009 Corbin Simpson
+ * 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:
+ *      Corbin Simpson <MostAwesomeDude@gmail.com>
+ */
+
+#include "radeon_drm.h"
+
+/* Create a pipe_screen. */
+struct pipe_screen* radeon_create_screen(int drmFB, int pciID)
+{
+    struct pipe_winsys* winsys = radeon_pipe_winsys();
+
+    if (getenv("RADEON_SOFTPIPE")) {
+        return softpipe_create_screen(winsys);
+    } else {
+        struct r300_winsys* r300 = radeon_create_r300_winsys(drmFB, winsys);
+        FREE(winsys);
+        return r300_create_screen(r300);
+    }
+}
+
+/* Create a pipe_context. */
+struct pipe_context* radeon_create_context(struct pipe_screen* screen)
+{
+    if (getenv("RADEON_SOFTPIPE")) {
+        return radeon_create_softpipe(screen->winsys);
+    } else {
+        return r300_create_context(screen, screen->winsys);
+    }
+}
+
+boolean radeon_buffer_from_texture(struct pipe_texture* texture,
+                                   struct pipe_buffer** buffer,
+                                   unsigned* stride)
+{
+    return FALSE;
+}
+
+/* Create a buffer from a handle. */
+/* XXX what's up with name? */
+struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
+                                              const char* name,
+                                              unsigned handle)
+{
+    struct radeon_bo_manager* bom =
+        ((struct radeon_winsys*)screen->winsys)->bom;
+    struct radeon_pipe_buffer* radeon_buffer;
+    struct radeon_bo* bo = NULL;
+
+    bo = radeon_bo_open(bom, handle, 0, 0, 0, 0);
+    if (bo == NULL) {
+        return NULL;
+    }
+
+    radeon_buffer = CALLOC_STRUCT(radeon_pipe_buffer);
+    if (radeon_buffer == NULL) {
+        radeon_bo_unref(bo);
+        return NULL;
+    }
+
+    pipe_reference_init(&radeon_buffer->base.reference, 1);
+    radeon_buffer->base.screen = screen;
+    radeon_buffer->base.usage = PIPE_BUFFER_USAGE_PIXEL;
+    radeon_buffer->bo = bo;
+    return &radeon_buffer->base;
+}
+
+boolean radeon_handle_from_buffer(struct pipe_screen* screen,
+                                  struct pipe_buffer* buffer,
+                                  unsigned* handle)
+{
+    struct radeon_pipe_buffer* radeon_buffer =
+        (struct radeon_pipe_buffer*)buffer;
+    *handle = radeon_buffer->bo->handle;
+    return TRUE;
+}
+
+boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
+                                         struct pipe_buffer* buffer,
+                                         unsigned* handle)
+{
+    /* XXX WTF is the difference here? global? */
+    struct radeon_pipe_buffer* radeon_buffer =
+        (struct radeon_pipe_buffer*)buffer;
+    *handle = radeon_buffer->bo->handle;
+    return TRUE;
+}
+
+struct drm_api drm_api_hooks = {
+    .create_screen = radeon_create_screen,
+    .create_context = radeon_create_context,
+    /* XXX fix this */
+    .buffer_from_texture = r300_get_texture_buffer,
+    .buffer_from_handle = radeon_buffer_from_handle,
+    .handle_from_buffer = radeon_handle_from_buffer,
+    .global_handle_from_buffer = radeon_global_handle_from_buffer,
+};
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.h b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
new file mode 100644 (file)
index 0000000..ca2d98e
--- /dev/null
@@ -0,0 +1,63 @@
+/* 
+ * Copyright © 2009 Corbin Simpson
+ * 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:
+ *      Corbin Simpson <MostAwesomeDude@gmail.com>
+ */
+#ifndef RADEON_DRM_H
+#define RADEON_DRM_H
+
+#include "pipe/p_screen.h"
+
+#include "util/u_memory.h"
+
+#include "state_tracker/drm_api.h"
+
+#include "radeon_buffer.h"
+#include "radeon_r300.h"
+#include "radeon_winsys_softpipe.h"
+
+struct pipe_screen* radeon_create_screen(int drmFB, int pciID);
+
+struct pipe_context* radeon_create_context(struct pipe_screen* screen);
+
+boolean radeon_buffer_from_texture(struct pipe_texture* texture,
+                                   struct pipe_buffer** buffer,
+                                   unsigned* stride);
+
+struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
+                                              const char* name,
+                                              unsigned handle);
+
+boolean radeon_handle_from_buffer(struct pipe_screen* screen,
+                                  struct pipe_buffer* buffer,
+                                  unsigned* handle);
+
+boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
+                                         struct pipe_buffer* buffer,
+                                         unsigned* handle);
+
+#endif
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_r300.c b/src/gallium/winsys/drm/radeon/core/radeon_r300.c
new file mode 100644 (file)
index 0000000..e9b96b1
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
+ *
+ * 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
+ * on 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 above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * 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 AUTHOR(S) AND/OR THEIR 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. */
+
+#include "radeon_r300.h"
+
+static boolean radeon_r300_check_cs(struct radeon_cs* cs, int size)
+{
+    /* XXX check size here, lazy ass! */
+    return TRUE;
+}
+
+static void radeon_r300_write_cs_reloc(struct radeon_cs* cs,
+                                    struct pipe_buffer* pbuffer,
+                                    uint32_t rd,
+                                    uint32_t wd,
+                                    uint32_t flags)
+{
+    radeon_cs_write_reloc(cs, ((struct radeon_pipe_buffer*)pbuffer)->bo, rd, wd, flags);
+}
+
+static void radeon_r300_flush_cs(struct radeon_cs* cs)
+{
+    radeon_cs_emit(cs);
+    radeon_cs_erase(cs);
+}
+
+/* Helper function to do the ioctls needed for setup and init. */
+static void do_ioctls(struct r300_winsys* winsys, int fd)
+{
+    drm_radeon_getparam_t gp;
+    uint32_t target;
+    int retval;
+
+    /* XXX is this cast safe? */
+    gp.value = (int*)&target;
+
+    /* First, get PCI ID */
+    gp.param = RADEON_PARAM_DEVICE_ID;
+    retval = drmCommandWriteRead(fd, DRM_RADEON_GETPARAM, &gp, sizeof(gp));
+    if (retval) {
+        fprintf(stderr, "%s: Failed to get PCI ID, error number %d",
+                __FUNCTION__, retval);
+        exit(1);
+    }
+    winsys->pci_id = target;
+
+    /* Then, get the number of pixel pipes */
+    gp.param = RADEON_PARAM_NUM_GB_PIPES;
+    retval = drmCommandWriteRead(fd, DRM_RADEON_GETPARAM, &gp, sizeof(gp));
+    if (retval) {
+        fprintf(stderr, "%s: Failed to get GB pipe count, error number %d",
+                __FUNCTION__, retval);
+        exit(1);
+    }
+    winsys->gb_pipes = target;
+
+}
+
+struct r300_winsys* radeon_create_r300_winsys(int fd, struct pipe_winsys* old_winsys)
+{
+    struct r300_winsys* winsys = CALLOC_STRUCT(r300_winsys);
+
+    do_ioctls(winsys, fd);
+
+    struct radeon_bo_manager* bom = radeon_bo_manager_gem_ctor(fd);
+    struct radeon_cs_manager* csm = radeon_cs_manager_gem_ctor(fd);
+
+    winsys->radeon_winsys = bom;
+    winsys->cs = radeon_cs_create(csm, 1024 * 64 / 4);
+
+    winsys->check_cs = radeon_r300_check_cs;
+    winsys->begin_cs = radeon_cs_begin;
+    winsys->write_cs_dword = radeon_cs_write_dword;
+    winsys->write_cs_reloc = radeon_r300_write_cs_reloc;
+    winsys->end_cs = radeon_cs_end;
+    winsys->flush_cs = radeon_r300_flush_cs;
+
+    winsys->base = *old_winsys;
+
+    return winsys;
+}
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_r300.h b/src/gallium/winsys/drm/radeon/core/radeon_r300.h
new file mode 100644 (file)
index 0000000..432b7b1
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
+ *
+ * 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
+ * on 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 above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * 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 AUTHOR(S) AND/OR THEIR 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. */
+
+/* XXX WTF is this! I shouldn't have to include those first three! FUCK! */
+#include <stdint.h>
+#include <stdlib.h>
+#include "drm.h"
+#include "radeon_drm.h"
+#include "radeon_cs.h"
+
+#include "r300_winsys.h"
+
+#include "radeon_buffer.h"
+
+struct r300_winsys* radeon_create_r300_winsys(int fd, struct pipe_winsys* old_winsys);
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.c
new file mode 100644 (file)
index 0000000..226e166
--- /dev/null
@@ -0,0 +1,71 @@
+/**************************************************************************
+ * 
+ * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA
+ * 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: Keith Whitwell <keithw-at-tungstengraphics-dot-com>
+ */
+
+#include "radeon_winsys_softpipe.h"
+
+struct radeon_softpipe_winsys {
+    struct softpipe_winsys  sp_winsys;
+    struct radeon_context      *radeon_context;
+};
+
+/**
+ * Return list of surface formats supported by this driver.
+ */
+static boolean radeon_is_format_supported(struct softpipe_winsys *sws, uint format)
+{
+    switch (format) {
+    case PIPE_FORMAT_A8R8G8B8_UNORM:
+    case PIPE_FORMAT_R5G6B5_UNORM:
+    case PIPE_FORMAT_Z24S8_UNORM:
+        return TRUE;
+    default:
+        break;
+    };
+    return FALSE;
+}
+
+struct pipe_context *radeon_create_softpipe(struct pipe_winsys* winsys)
+{
+    struct softpipe_winsys *sp_winsys;
+    struct pipe_screen *pipe_screen;
+
+    pipe_screen = softpipe_create_screen(winsys);
+
+    sp_winsys = CALLOC_STRUCT(softpipe_winsys);
+    if (sp_winsys == NULL) {
+        return NULL;
+    }
+
+    sp_winsys->is_format_supported = radeon_is_format_supported;
+    return softpipe_create(pipe_screen,
+                           winsys,
+                           sp_winsys);
+}
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h b/src/gallium/winsys/drm/radeon/core/radeon_winsys_softpipe.h
new file mode 100644 (file)
index 0000000..04740e4
--- /dev/null
@@ -0,0 +1,44 @@
+/* 
+ * 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@freedesktop.org>
+ */
+#ifndef RADEON_WINSYS_SOFTPIPE_H
+#define RADEON_WINSYS_SOFTPIPE_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);
+
+#endif
diff --git a/src/gallium/winsys/drm/radeon/dri2/Makefile b/src/gallium/winsys/drm/radeon/dri2/Makefile
new file mode 100644 (file)
index 0000000..b1c2f30
--- /dev/null
@@ -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_buffer.c b/src/gallium/winsys/drm/radeon/radeon_buffer.c
deleted file mode 100644 (file)
index b3582e3..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/* 
- * Copyright © 2008 Jérôme Glisse
- *             2009 Corbin Simpson
- * 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@freedesktop.org>
- *      Corbin Simpson <MostAwesomeDude@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)
-{
-    return "Radeon/GEM+KMS";
-}
-
-static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws,
-                                                unsigned alignment,
-                                                unsigned usage,
-                                                unsigned size)
-{
-    struct radeon_winsys *radeon_ws = (struct radeon_winsys *)ws;
-    struct radeon_pipe_buffer *radeon_buffer;
-    uint32_t domain;
-
-    radeon_buffer = CALLOC_STRUCT(radeon_pipe_buffer);
-    if (radeon_buffer == NULL) {
-        return NULL;
-    }
-
-    pipe_reference_init(&radeon_buffer->base.reference, 1);
-    radeon_buffer->base.alignment = alignment;
-    radeon_buffer->base.usage = usage;
-    radeon_buffer->base.size = size;
-
-    domain = 0;
-
-    if (usage & PIPE_BUFFER_USAGE_PIXEL) {
-        domain |= RADEON_GEM_DOMAIN_VRAM;
-    }
-    if (usage & PIPE_BUFFER_USAGE_VERTEX) {
-        domain |= RADEON_GEM_DOMAIN_GTT;
-    }
-    if (usage & PIPE_BUFFER_USAGE_INDEX) {
-        domain |= RADEON_GEM_DOMAIN_GTT;
-    }
-
-    radeon_buffer->bo = radeon_bo_open(radeon_ws->bom, 0, size, alignment,
-                                       domain, 0);
-    if (radeon_buffer->bo == NULL) {
-        FREE(radeon_buffer);
-    }
-    return &radeon_buffer->base;
-}
-
-static struct pipe_buffer *radeon_buffer_user_create(struct pipe_winsys *ws,
-                                                     void *ptr,
-                                                     unsigned bytes)
-{
-    struct radeon_pipe_buffer *radeon_buffer;
-
-    radeon_buffer = (struct radeon_pipe_buffer*)radeon_buffer_create(ws, 0, 0, bytes);
-    if (radeon_buffer == NULL) {
-        return NULL;
-    }
-    radeon_bo_map(radeon_buffer->bo, 1);
-    memcpy(radeon_buffer->bo->ptr, ptr, bytes);
-    radeon_bo_unmap(radeon_buffer->bo);
-    return &radeon_buffer->base;
-}
-
-static void radeon_buffer_del(struct pipe_buffer *buffer)
-{
-    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
-
-    radeon_bo_unref(radeon_buffer->bo);
-    free(radeon_buffer);
-}
-
-static void *radeon_buffer_map(struct pipe_winsys *ws,
-                               struct pipe_buffer *buffer,
-                               unsigned flags)
-{
-    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
-    int write = 0;
-
-    if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) {
-       /* XXX Remove this when radeon_bo_map supports DONTBLOCK */
-       return NULL;
-    }
-    if (flags & PIPE_BUFFER_USAGE_CPU_WRITE) {
-        write = 1;
-    }
-
-    if (radeon_bo_map(radeon_buffer->bo, write))
-        return NULL;
-    return radeon_buffer->bo->ptr;
-}
-
-static void radeon_buffer_unmap(struct pipe_winsys *ws, struct pipe_buffer *buffer)
-{
-    struct radeon_pipe_buffer *radeon_buffer = (struct radeon_pipe_buffer*)buffer;
-
-    radeon_bo_unmap(radeon_buffer->bo);
-}
-
-static void radeon_fence_reference(struct pipe_winsys *ws,
-                                   struct pipe_fence_handle **ptr,
-                                   struct pipe_fence_handle *pfence)
-{
-}
-
-static int radeon_fence_signalled(struct pipe_winsys *ws,
-                                  struct pipe_fence_handle *pfence,
-                                  unsigned flag)
-{
-    return 1;
-}
-
-static int radeon_fence_finish(struct pipe_winsys *ws,
-                               struct pipe_fence_handle *pfence,
-                               unsigned flag)
-{
-    return 0;
-}
-
-static void radeon_flush_frontbuffer(struct pipe_winsys *pipe_winsys,
-                                     struct pipe_surface *pipe_surface,
-                                     void *context_private)
-{
-    /* TODO: call dri2CopyRegion */
-}
-
-struct pipe_winsys *radeon_pipe_winsys()
-{
-    struct pipe_winsys *radeon_ws;
-
-    radeon_ws = CALLOC_STRUCT(pipe_winsys);
-    if (radeon_ws == NULL) {
-        return NULL;
-    }
-
-    radeon_ws->flush_frontbuffer = radeon_flush_frontbuffer;
-
-    radeon_ws->buffer_create = radeon_buffer_create;
-    radeon_ws->buffer_destroy = radeon_buffer_del;
-    radeon_ws->user_buffer_create = radeon_buffer_user_create;
-    radeon_ws->buffer_map = radeon_buffer_map;
-    radeon_ws->buffer_unmap = radeon_buffer_unmap;
-
-    radeon_ws->fence_reference = radeon_fence_reference;
-    radeon_ws->fence_signalled = radeon_fence_signalled;
-    radeon_ws->fence_finish = radeon_fence_finish;
-
-    radeon_ws->get_name = radeon_get_name;
-
-    return radeon_ws;
-}
-#if 0
-static struct pipe_buffer *radeon_buffer_from_handle(struct radeon_screen *radeon_screen,
-                                                  uint32_t handle)
-{
-    struct radeon_pipe_buffer *radeon_buffer;
-    struct radeon_bo *bo = NULL;
-
-    bo = radeon_bo_open(radeon_screen->bom, handle, 0, 0, 0, 0);
-    if (bo == NULL) {
-        return NULL;
-    }
-    radeon_buffer = calloc(1, sizeof(struct radeon_pipe_buffer));
-    if (radeon_buffer == NULL) {
-        radeon_bo_unref(bo);
-        return NULL;
-    }
-    pipe_reference_init(&radeon_buffer->base.reference, 1);
-    radeon_buffer->base.usage = PIPE_BUFFER_USAGE_PIXEL;
-    radeon_buffer->bo = bo;
-    return &radeon_buffer->base;
-}
-
-struct pipe_surface *radeon_surface_from_handle(struct radeon_context *radeon_context,
-                                             uint32_t handle,
-                                             enum pipe_format format,
-                                             int w, int h, int pitch)
-{
-    struct pipe_screen *pipe_screen = radeon_context->pipe_screen;
-    struct pipe_winsys *pipe_winsys = radeon_context->pipe_winsys;
-    struct pipe_texture tmpl;
-    struct pipe_surface *ps;
-    struct pipe_texture *pt;
-    struct pipe_buffer *pb;
-
-    pb = radeon_buffer_from_handle(radeon_context->radeon_screen, handle);
-    if (pb == NULL) {
-        return NULL;
-    }
-    memset(&tmpl, 0, sizeof(tmpl));
-    tmpl.tex_usage = PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
-    tmpl.target = PIPE_TEXTURE_2D;
-    tmpl.width[0] = w;
-    tmpl.height[0] = h;
-    tmpl.depth[0] = 1;
-    tmpl.format = format;
-    pf_get_block(tmpl.format, &tmpl.block);
-    tmpl.nblocksx[0] = pf_get_nblocksx(&tmpl.block, w);
-    tmpl.nblocksy[0] = pf_get_nblocksy(&tmpl.block, h);
-
-    pt = pipe_screen->texture_blanket(pipe_screen, &tmpl, &pitch, pb);
-    if (pt == NULL) {
-        pipe_buffer_reference(&pb, NULL);
-    }
-    ps = pipe_screen->get_tex_surface(pipe_screen, pt, 0, 0, 0,
-                                      PIPE_BUFFER_USAGE_GPU_WRITE);
-    return ps;
-}
-#endif
diff --git a/src/gallium/winsys/drm/radeon/radeon_buffer.h b/src/gallium/winsys/drm/radeon/radeon_buffer.h
deleted file mode 100644 (file)
index e062308..0000000
+++ /dev/null
@@ -1,57 +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@freedesktop.org>
- */
-#ifndef RADEON_BUFFER_H
-#define RADEON_BUFFER_H
-
-#include "pipe/internal/p_winsys_screen.h"
-#include "radeon_screen.h"
-#include "radeon_context.h"
-#include "radeon_bo.h"
-
-struct radeon_pipe_buffer {
-    struct pipe_buffer  base;
-    struct radeon_bo    *bo;
-};
-
-struct radeon_winsys {
-    /* Parent class. */
-    struct pipe_winsys base;
-
-    /* Radeon BO manager. This corresponds to void* radeon_winsys in r300_winsys. */
-    struct radeon_bo_manager* bom;
-};
-
-struct pipe_winsys *radeon_pipe_winsys();
-struct pipe_surface *radeon_surface_from_handle(struct radeon_context *radeon_context,
-                                             uint32_t handle,
-                                             enum pipe_format format,
-                                             int w, int h, int pitch);
-
-#endif
diff --git a/src/gallium/winsys/drm/radeon/radeon_context.c b/src/gallium/winsys/drm/radeon/radeon_context.c
deleted file mode 100644 (file)
index 13a7035..0000000
+++ /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@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 (file)
index d7222b4..0000000
+++ /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@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_drm.c b/src/gallium/winsys/drm/radeon/radeon_drm.c
deleted file mode 100644 (file)
index 016634c..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/* 
- * Copyright © 2009 Corbin Simpson
- * 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:
- *      Corbin Simpson <MostAwesomeDude@gmail.com>
- */
-
-#include "radeon_drm.h"
-
-/* 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);
-
-    if (getenv("RADEON_SOFTPIPE")) {
-        return softpipe_create_screen(winsys);
-    } else {
-        struct r300_winsys* r300 = radeon_create_r300_winsys(drmFB, winsys);
-        FREE(winsys);
-        return r300_create_screen(r300);
-    }
-}
-
-/* Create a pipe_context. */
-struct pipe_context* radeon_create_context(struct pipe_screen* screen)
-{
-    if (getenv("RADEON_SOFTPIPE")) {
-        return radeon_create_softpipe(screen->winsys);
-    } else {
-        return r300_create_context(screen, screen->winsys);
-    }
-}
-
-boolean radeon_buffer_from_texture(struct pipe_texture* texture,
-                                   struct pipe_buffer** buffer,
-                                   unsigned* stride)
-{
-    return FALSE;
-}
-
-/* Create a buffer from a handle. */
-/* XXX what's up with name? */
-struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
-                                              const char* name,
-                                              unsigned handle)
-{
-    struct radeon_bo_manager* bom =
-        ((struct radeon_winsys*)screen->winsys)->bom;
-    struct radeon_pipe_buffer* radeon_buffer;
-    struct radeon_bo* bo = NULL;
-
-    bo = radeon_bo_open(bom, handle, 0, 0, 0, 0);
-    if (bo == NULL) {
-        return NULL;
-    }
-
-    radeon_buffer = CALLOC_STRUCT(radeon_pipe_buffer);
-    if (radeon_buffer == NULL) {
-        radeon_bo_unref(bo);
-        return NULL;
-    }
-
-    pipe_reference_init(&radeon_buffer->base.reference, 1);
-    radeon_buffer->base.screen = screen;
-    radeon_buffer->base.usage = PIPE_BUFFER_USAGE_PIXEL;
-    radeon_buffer->bo = bo;
-    return &radeon_buffer->base;
-}
-
-boolean radeon_handle_from_buffer(struct pipe_screen* screen,
-                                  struct pipe_buffer* buffer,
-                                  unsigned* handle)
-{
-    struct radeon_pipe_buffer* radeon_buffer =
-        (struct radeon_pipe_buffer*)buffer;
-    *handle = radeon_buffer->bo->handle;
-    return TRUE;
-}
-
-boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
-                                         struct pipe_buffer* buffer,
-                                         unsigned* handle)
-{
-    /* XXX WTF is the difference here? global? */
-    struct radeon_pipe_buffer* radeon_buffer =
-        (struct radeon_pipe_buffer*)buffer;
-    *handle = radeon_buffer->bo->handle;
-    return TRUE;
-}
-
-struct drm_api drm_api_hooks = {
-    .create_screen = radeon_create_screen,
-    .create_context = radeon_create_context,
-    /* XXX fix this */
-    .buffer_from_texture = r300_get_texture_buffer,
-    .buffer_from_handle = radeon_buffer_from_handle,
-    .handle_from_buffer = radeon_handle_from_buffer,
-    .global_handle_from_buffer = radeon_global_handle_from_buffer,
-};
diff --git a/src/gallium/winsys/drm/radeon/radeon_drm.h b/src/gallium/winsys/drm/radeon/radeon_drm.h
deleted file mode 100644 (file)
index e434106..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* 
- * Copyright © 2009 Corbin Simpson
- * 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:
- *      Corbin Simpson <MostAwesomeDude@gmail.com>
- */
-#ifndef RADEON_DRM_H
-#define RADEON_DRM_H
-
-#include "pipe/p_screen.h"
-
-#include "util/u_memory.h"
-
-#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);
-
-struct pipe_context* radeon_create_context(struct pipe_screen* screen);
-
-boolean radeon_buffer_from_texture(struct pipe_texture* texture,
-                                   struct pipe_buffer** buffer,
-                                   unsigned* stride);
-
-struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
-                                              const char* name,
-                                              unsigned handle);
-
-boolean radeon_handle_from_buffer(struct pipe_screen* screen,
-                                  struct pipe_buffer* buffer,
-                                  unsigned* handle);
-
-boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
-                                         struct pipe_buffer* buffer,
-                                         unsigned* handle);
-
-#endif
diff --git a/src/gallium/winsys/drm/radeon/radeon_r300.c b/src/gallium/winsys/drm/radeon/radeon_r300.c
deleted file mode 100644 (file)
index e9b96b1..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
- *
- * 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
- * on 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 above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * 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 AUTHOR(S) AND/OR THEIR 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. */
-
-#include "radeon_r300.h"
-
-static boolean radeon_r300_check_cs(struct radeon_cs* cs, int size)
-{
-    /* XXX check size here, lazy ass! */
-    return TRUE;
-}
-
-static void radeon_r300_write_cs_reloc(struct radeon_cs* cs,
-                                    struct pipe_buffer* pbuffer,
-                                    uint32_t rd,
-                                    uint32_t wd,
-                                    uint32_t flags)
-{
-    radeon_cs_write_reloc(cs, ((struct radeon_pipe_buffer*)pbuffer)->bo, rd, wd, flags);
-}
-
-static void radeon_r300_flush_cs(struct radeon_cs* cs)
-{
-    radeon_cs_emit(cs);
-    radeon_cs_erase(cs);
-}
-
-/* Helper function to do the ioctls needed for setup and init. */
-static void do_ioctls(struct r300_winsys* winsys, int fd)
-{
-    drm_radeon_getparam_t gp;
-    uint32_t target;
-    int retval;
-
-    /* XXX is this cast safe? */
-    gp.value = (int*)&target;
-
-    /* First, get PCI ID */
-    gp.param = RADEON_PARAM_DEVICE_ID;
-    retval = drmCommandWriteRead(fd, DRM_RADEON_GETPARAM, &gp, sizeof(gp));
-    if (retval) {
-        fprintf(stderr, "%s: Failed to get PCI ID, error number %d",
-                __FUNCTION__, retval);
-        exit(1);
-    }
-    winsys->pci_id = target;
-
-    /* Then, get the number of pixel pipes */
-    gp.param = RADEON_PARAM_NUM_GB_PIPES;
-    retval = drmCommandWriteRead(fd, DRM_RADEON_GETPARAM, &gp, sizeof(gp));
-    if (retval) {
-        fprintf(stderr, "%s: Failed to get GB pipe count, error number %d",
-                __FUNCTION__, retval);
-        exit(1);
-    }
-    winsys->gb_pipes = target;
-
-}
-
-struct r300_winsys* radeon_create_r300_winsys(int fd, struct pipe_winsys* old_winsys)
-{
-    struct r300_winsys* winsys = CALLOC_STRUCT(r300_winsys);
-
-    do_ioctls(winsys, fd);
-
-    struct radeon_bo_manager* bom = radeon_bo_manager_gem_ctor(fd);
-    struct radeon_cs_manager* csm = radeon_cs_manager_gem_ctor(fd);
-
-    winsys->radeon_winsys = bom;
-    winsys->cs = radeon_cs_create(csm, 1024 * 64 / 4);
-
-    winsys->check_cs = radeon_r300_check_cs;
-    winsys->begin_cs = radeon_cs_begin;
-    winsys->write_cs_dword = radeon_cs_write_dword;
-    winsys->write_cs_reloc = radeon_r300_write_cs_reloc;
-    winsys->end_cs = radeon_cs_end;
-    winsys->flush_cs = radeon_r300_flush_cs;
-
-    winsys->base = *old_winsys;
-
-    return winsys;
-}
diff --git a/src/gallium/winsys/drm/radeon/radeon_r300.h b/src/gallium/winsys/drm/radeon/radeon_r300.h
deleted file mode 100644 (file)
index 432b7b1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
- *
- * 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
- * on 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 above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * 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 AUTHOR(S) AND/OR THEIR 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. */
-
-/* XXX WTF is this! I shouldn't have to include those first three! FUCK! */
-#include <stdint.h>
-#include <stdlib.h>
-#include "drm.h"
-#include "radeon_drm.h"
-#include "radeon_cs.h"
-
-#include "r300_winsys.h"
-
-#include "radeon_buffer.h"
-
-struct r300_winsys* radeon_create_r300_winsys(int fd, struct pipe_winsys* old_winsys);
diff --git a/src/gallium/winsys/drm/radeon/radeon_screen.c b/src/gallium/winsys/drm/radeon/radeon_screen.c
deleted file mode 100644 (file)
index e31caff..0000000
+++ /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@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 (file)
index 01b7fa6..0000000
+++ /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@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
diff --git a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c b/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.c
deleted file mode 100644 (file)
index 75e975f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA
- * 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: 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 {
-    struct softpipe_winsys  sp_winsys;
-    struct radeon_context      *radeon_context;
-};
-
-/**
- * Return list of surface formats supported by this driver.
- */
-static boolean radeon_is_format_supported(struct softpipe_winsys *sws, uint format)
-{
-    switch (format) {
-    case PIPE_FORMAT_A8R8G8B8_UNORM:
-    case PIPE_FORMAT_R5G6B5_UNORM:
-    case PIPE_FORMAT_Z24S8_UNORM:
-        return TRUE;
-    default:
-        break;
-    };
-    return FALSE;
-}
-
-struct pipe_context *radeon_create_softpipe(struct pipe_winsys* winsys)
-{
-    struct radeon_softpipe_winsys *radeon_sp_ws;
-    struct pipe_screen *pipe_screen;
-
-    pipe_screen = softpipe_create_screen(winsys);
-
-    radeon_sp_ws = CALLOC_STRUCT(radeon_softpipe_winsys);
-    if (radeon_sp_ws == NULL) {
-        return NULL;
-    }
-    radeon_sp_ws->sp_winsys.is_format_supported = radeon_is_format_supported;
-    return softpipe_create(pipe_screen,
-                           winsys,
-                           &radeon_sp_ws->sp_winsys);
-}
diff --git a/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h b/src/gallium/winsys/drm/radeon/radeon_winsys_softpipe.h
deleted file mode 100644 (file)
index 093693e..0000000
+++ /dev/null
@@ -1,37 +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@freedesktop.org>
- */
-#ifndef RADEON_WINSYS_SOFTPIPE_H
-#define RADEON_WINSYS_SOFTPIPE_H
-
-#include "radeon_context.h"
-
-struct pipe_context *radeon_create_softpipe(struct pipe_winsys* winsys);
-
-#endif