-/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_span.c,v 1.2 2002/02/22 21:32:59 dawes Exp $
+/*
*
* GLX Hardware Device Driver for Sun Creator/Creator3D
* Copyright (C) 2000 David S. Miller
* David S. Miller <davem@redhat.com>
*/
-#include "mtypes.h"
+#include "main/mtypes.h"
#include "ffb_dd.h"
#include "ffb_span.h"
#include "ffb_context.h"
#include "ffb_lock.h"
-#include "swrast/swrast.h"
-
#define DBG 0
#define HW_LOCK() \
UNLOCK_HARDWARE(fmesa); \
#define LOCAL_VARS \
- __DRIdrawablePrivate *dPriv = fmesa->driDrawable; \
+ __DRIdrawable *dPriv = fmesa->driDrawable; \
GLuint height = dPriv->h; \
GLuint p; \
char *buf; \
fmesa->ffbScreen->rp_active = 1; \
} while(0)
-#define Y_FLIP(__y) (height - __y)
+#define Y_FLIP(__y) (height - __y - 1)
#define READ_RGBA(rgba,__x,__y) \
do { GLuint p = *(GLuint *)(buf + ((__x)<<2) + ((__y)<<13)); \
#define TAG(x) ffb##x##_888
-#include <spantmp.h>
+#include "spantmp.h"
-void ffbDDInitSpanFuncs(GLcontext *ctx)
+/**
+ * Plug in the Get/Put routines for the given driRenderbuffer.
+ */
+void
+ffbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
{
- struct swrast_device_driver *swdd =
- _swrast_GetDeviceDriverReference(ctx);
-
- swdd->WriteRGBASpan = ffbWriteRGBASpan_888;
- swdd->WriteRGBSpan = ffbWriteRGBSpan_888;
- swdd->WriteRGBAPixels = ffbWriteRGBAPixels_888;
- swdd->WriteMonoRGBASpan = ffbWriteMonoRGBASpan_888;
- swdd->WriteMonoRGBAPixels = ffbWriteMonoRGBAPixels_888;
- swdd->ReadRGBASpan = ffbReadRGBASpan_888;
- swdd->ReadRGBAPixels = ffbReadRGBAPixels_888;
-
- /* We don't support color index mode yet, but it will be
- * very easy to do. -DaveM
- */
- swdd->WriteCI8Span = NULL;
- swdd->WriteCI32Span = NULL;
- swdd->WriteMonoCISpan = NULL;
- swdd->WriteCI32Pixels = NULL;
- swdd->WriteMonoCIPixels = NULL;
- swdd->ReadCI32Span = NULL;
- swdd->ReadCI32Pixels = NULL;
+ assert(vis->redBits == 8);
+ assert(vis->greenBits == 8);
+ assert(vis->blueBits == 8);
+ ffbInitPointers_888(&drb->Base);
}