summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/glide
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/glide')
-rw-r--r--src/mesa/drivers/glide/fxdd.c36
-rw-r--r--src/mesa/drivers/glide/fxdrv.h1
2 files changed, 34 insertions, 3 deletions
diff --git a/src/mesa/drivers/glide/fxdd.c b/src/mesa/drivers/glide/fxdd.c
index 08285f67e8c..fe918a7eac3 100644
--- a/src/mesa/drivers/glide/fxdd.c
+++ b/src/mesa/drivers/glide/fxdd.c
@@ -1028,10 +1028,40 @@ static void fxDDUpdateDDPointers(GLcontext *ctx, GLuint new_state)
static void fxDDRenderPrimitive( GLcontext *ctx, GLenum mode )
{
- (void) ctx; (void) mode;
+ fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
+
+ if (!fxMesa->is_in_hardware) {
+ _swsetup_RenderPrimitive( ctx, mode );
+ }
+ else {
+ fxMesa->render_prim = mode;
+ }
+}
+
+
+static void fxDDRenderStart( GLcontext *ctx )
+{
+ fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
+
+ if (!fxMesa->is_in_hardware) {
+ _swsetup_RenderStart( ctx );
+ }
+ else if (fxMesa->new_state) {
+ fxSetupFXUnits( ctx );
+ }
+}
+
+static void fxDDRenderFinish( GLcontext *ctx )
+{
+ fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
+
+ if (!fxMesa->is_in_hardware) {
+ _swsetup_RenderFinish( ctx );
+ }
}
+
void fxSetupDDPointers(GLcontext *ctx)
{
if (MESA_VERBOSE&VERBOSE_DRIVER) {
@@ -1062,8 +1092,8 @@ void fxSetupDDPointers(GLcontext *ctx)
ctx->Driver.Finish=fxDDFinish;
ctx->Driver.Flush=NULL;
- ctx->Driver.RenderStart=fxSetupFXUnits;
- ctx->Driver.RenderFinish=_swrast_flush;
+ ctx->Driver.RenderStart=fxDDRenderStart;
+ ctx->Driver.RenderFinish=fxDDRenderFinish;
ctx->Driver.ResetLineStipple=_swrast_ResetLineStipple;
ctx->Driver.RenderPrimitive=fxDDRenderPrimitive;
diff --git a/src/mesa/drivers/glide/fxdrv.h b/src/mesa/drivers/glide/fxdrv.h
index cefd6d0e1a9..6861160c1a6 100644
--- a/src/mesa/drivers/glide/fxdrv.h
+++ b/src/mesa/drivers/glide/fxdrv.h
@@ -424,6 +424,7 @@ struct tfxMesaContext {
GLuint render_index;
GLuint passes, multipass;
GLuint is_in_hardware;
+ GLenum render_prim;
/* Current rasterization functions
*/