--- /dev/null
- glhd_screen.c \
- glhd_drm.c
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = galahad
+
+C_SOURCES = \
+ glhd_objects.c \
+ glhd_context.c \
++ glhd_screen.c
+
+include ../../Makefile.template
--- /dev/null
- 'glhd_drm.c',
+Import('*')
+
+env = env.Clone()
+
+identity = env.ConvenienceLibrary(
+ target = 'identity',
+ source = [
+ 'glhd_context.c',
+ 'glhd_objects.c',
+ 'glhd_screen.c',
+ ])
+
+Export('identity')
#include "r300_screen.h"
#include "r300_winsys.h"
-#define TILE_WIDTH 0
-#define TILE_HEIGHT 1
+#include "util/u_format.h"
+#include "util/u_format_s3tc.h"
+#include "util/u_math.h"
+#include "util/u_memory.h"
+
+#include "pipe/p_screen.h"
- #include "state_tracker/drm_api.h"
+
-static const unsigned microblock_table[5][3][2] = {
- /*linear tiled square-tiled */
- {{32, 1}, {8, 4}, {0, 0}}, /* 8 bits per pixel */
- {{16, 1}, {8, 2}, {4, 4}}, /* 16 bits per pixel */
- {{ 8, 1}, {4, 2}, {0, 0}}, /* 32 bits per pixel */
- {{ 4, 1}, {0, 0}, {2, 2}}, /* 64 bits per pixel */
- {{ 2, 1}, {0, 0}, {0, 0}} /* 128 bits per pixel */
++/* XXX NO! just no! */
++#include "state_tracker/drm_driver.h"
+
+enum r300_dim {
+ DIM_WIDTH = 0,
+ DIM_HEIGHT = 1
};
unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
return NULL;
}
- buffer = rws->buffer_from_handle(rws, screen, whandle, &stride);
++ /* XXX make the winsys return the stride_override, see i915_resource_texture.c:830 */
+ buffer = rws->buffer_from_handle(rws, whandle->handle);
if (!buffer) {
return NULL;
}
}
struct native_display *
-x11_create_dri2_display(EGLNativeDisplayType dpy,
+x11_create_dri2_display(Display *dpy,
- struct native_event_handler *event_handler,
- struct drm_api *api)
+ struct native_event_handler *event_handler)
{
struct dri2_display *dri2dpy;
struct native_display *ndpy = NULL;
boolean force_sw;
- if (!api)
- api = drm_api_create();
-
force_sw = debug_get_bool_option("EGL_SOFTWARE", FALSE);
- if (api && !force_sw) {
- ndpy = x11_create_dri2_display((Display *) dpy, event_handler, api);
+ if (!driver_descriptor.create_screen)
+ force_sw = TRUE;
+
+ if (!force_sw) {
- ndpy = x11_create_dri2_display(dpy, event_handler);
++ ndpy = x11_create_dri2_display((Display *) dpy, event_handler);
}
if (!ndpy) {
struct native_event_handler *event_handler);
struct native_display *
-x11_create_dri2_display(EGLNativeDisplayType dpy,
+x11_create_dri2_display(Display *dpy,
- struct native_event_handler *event_handler,
- struct drm_api *api);
+ struct native_event_handler *event_handler);
#endif /* _NATIVE_X11_H_ */
if (ms->screen || ms->kms)
return TRUE;
- if (ms->api) {
- ms->screen = ms->no3D ? NULL :
- ms->api->create_screen(ms->api, ms->fd);
-
- if (ms->screen)
- return TRUE;
-
- if (ms->api->destroy)
- ms->api->destroy(ms->api);
- ms->screen = driver_descriptor.create_screen(ms->fd);
++ if (!ms->no3D)
++ ms->screen = driver_descriptor.create_screen(ms->fd);
- ms->api = NULL;
- }
+ if (ms->screen)
+ return TRUE;
#ifdef HAVE_LIBKMS
if (!kms_create(ms->fd, &ms->kms))
include $(TOP)/configs/current
EGL_DRIVER_NAME = radeon
- EGL_DRIVER_SOURCES = dummy.c
+ EGL_DRIVER_SOURCES = target.c
EGL_DRIVER_LIBS = -ldrm_radeon
+ EGL_DRIVER_DEFINES = \
+ -DGALLIUM_RBUG -DGALLIUM_TRACE
+
EGL_DRIVER_PIPES = \
$(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
+ $(TOP)/src/gallium/drivers/galahad/libgalahad.a \
$(TOP)/src/gallium/drivers/trace/libtrace.a \
$(TOP)/src/gallium/drivers/rbug/librbug.a \
$(TOP)/src/gallium/drivers/r300/libr300.a
struct winsys_handle *whandle)
{
struct drm_gem_flink flink;
- struct r600_buffer* rbuffer;
- int r;
+ struct r600_buffer* rbuffer = (struct r600_buffer*)buf;
- rbuffer = (struct r600_buffer*)buf;
- if (!rbuffer->flink) {
- flink.handle = rbuffer->bo->handle;
- r = ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink);
- if (r) {
- return FALSE;
+ if (whandle->type == DRM_API_HANDLE_TYPE_SHARED) {
+ if (!rbuffer->flink) {
+ flink.handle = rbuffer->bo->handle;
+
+ if (ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink)) {
+ return FALSE;
+ }
+
+ rbuffer->flink = flink.name;
}
- rbuffer->flink = flink.name;
+ whandle->handle = rbuffer->flink;
+ } else if (whandle->type == DRM_API_HANDLE_TYPE_KMS) {
+ whandle->handle = rbuffer->bo->handle;
}
- whandle->handle = rbuffer->flink;
return TRUE;
}
-
- static void r600_drm_api_destroy(struct drm_api *api)
- {
- return;
- }
-
- struct drm_api drm_api_hooks = {
- .name = "r600",
- .driver_name = "r600",
- .create_screen = r600_drm_create_screen,
- .destroy = r600_drm_api_destroy,
- };
-
- struct drm_api* drm_api_create()
- {
- #ifdef DEBUG
- return trace_drm_create(&drm_api_hooks);
- #else
- return &drm_api_hooks;
- #endif
- }