From: Brian Date: Sun, 14 Oct 2007 18:32:39 +0000 (-0600) Subject: implement put_tile() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7611dce40e532f6c768ed7011725fcfb6424883;p=mesa.git implement put_tile() --- diff --git a/src/mesa/drivers/x11/xm_surface.c b/src/mesa/drivers/x11/xm_surface.c index 70fa97b3395..75ad4503606 100644 --- a/src/mesa/drivers/x11/xm_surface.c +++ b/src/mesa/drivers/x11/xm_surface.c @@ -192,7 +192,18 @@ static void put_tile(struct pipe_surface *ps, GLuint x, GLuint y, GLuint w, GLuint h, const GLfloat *p) { - assert(0); + struct xmesa_renderbuffer *xrb = xmesa_rb((struct softpipe_surface *) ps); + GLubyte tmp[MAX_WIDTH * 4]; + GLuint i, j; + GET_CURRENT_CONTEXT(ctx); + FLIP(y); + for (i = 0; i < h; i++) { + for (j = 0; j < w * 4; j++) { + CLAMPED_FLOAT_TO_UBYTE(tmp[j], p[j]); + } + xrb->St.Base.PutRow(ctx, &xrb->St.Base, w, x, y - i, tmp, NULL); + p += w * 4; + } }