summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/glamo/glamo_state.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-09-16 20:30:34 +0100
committerMartin Jansa <Martin.Jansa@gmail.com>2010-02-18 15:39:23 +0100
commit46e078280eaa911866e82d8c93b9be79ceca8584 (patch)
treecaf50791a18d5694b327e92cf0149430f073e191 /src/mesa/drivers/dri/glamo/glamo_state.c
parent4802835ca5a20ac7c5dfc808b6b21989d912024c (diff)
Add register header and implement glClear() (sort of)
Diffstat (limited to 'src/mesa/drivers/dri/glamo/glamo_state.c')
-rw-r--r--src/mesa/drivers/dri/glamo/glamo_state.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/glamo/glamo_state.c b/src/mesa/drivers/dri/glamo/glamo_state.c
index 2cb15887f9..2190fbeee7 100644
--- a/src/mesa/drivers/dri/glamo/glamo_state.c
+++ b/src/mesa/drivers/dri/glamo/glamo_state.c
@@ -54,6 +54,9 @@
#include "glamo_fbo.h"
#include "glamo_state.h"
+#include "glamo_context.h"
+#include "glamo_cmdq.h"
+#include "glamo_regs.h"
static void glamoResizeBuffers(GLcontext *ctx, struct gl_framebuffer *fb,
@@ -85,9 +88,39 @@ static void glamoResizeBuffers(GLcontext *ctx, struct gl_framebuffer *fb,
static void glamoClear(GLcontext *ctx, GLbitfield mask)
{
+ glamoContext *gCtx;
+ struct gl_framebuffer *fb;
+ int i;
+
+ gCtx = GLAMO_CONTEXT(ctx);
+ fb = ctx->DrawBuffer;
+
printf("glamoClear (%f %f %f %f)\n", ctx->Color.ClearColor[0],
ctx->Color.ClearColor[1], ctx->Color.ClearColor[2],
ctx->Color.ClearColor[3]); fflush(stdout);
+
+ for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
+
+ struct glamo_renderbuffer *grb;
+
+ grb = glamo_renderbuffer(fb->_ColorDrawBuffers[i]);
+
+ GlamoDRMAddCommandBO(gCtx, GLAMO_REG_2D_DST_ADDRL, grb->bo);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_DST_PITCH,
+ grb->width & 0x7ff);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_DST_HEIGHT,
+ grb->height);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_PAT_FG, 0xabcd);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_COMMAND2, 0xff); /* set */
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_DST_X, fb->_Xmin);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_DST_Y, fb->_Ymin);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_RECT_WIDTH,
+ fb->_Xmax-fb->_Xmin);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_RECT_HEIGHT,
+ fb->_Ymax-fb->_Ymin);
+ GlamoDRMAddCommand(gCtx, GLAMO_REG_2D_COMMAND3, 0);
+
+ }
}