finish up some missing code
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 3 Oct 2005 16:11:21 +0000 (16:11 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 3 Oct 2005 16:11:21 +0000 (16:11 +0000)
src/mesa/main/texrender.c

index f7f3fdb..ae4a2a5 100644 (file)
@@ -27,14 +27,29 @@ static void
 texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
                 GLint x, GLint y, void *values)
 {
-   /* XXX unfinished */
+   const struct texture_renderbuffer *trb
+      = (const struct texture_renderbuffer *) rb;
+   const GLint z = trb->Zoffset;
+   GLchan *rgbaOut = (GLchan *) values;
+   GLuint i;
+   for (i = 0; i < count; i++) {
+      trb->TexImage->FetchTexelc(trb->TexImage, x + i, y, z, rgbaOut + 4 * i);
+   }
 }
 
 static void
 texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
                    const GLint x[], const GLint y[], void *values)
 {
-   /* XXX unfinished */
+   const struct texture_renderbuffer *trb
+      = (const struct texture_renderbuffer *) rb;
+   const GLint z = trb->Zoffset;
+   GLchan *rgbaOut = (GLchan *) values;
+   GLuint i;
+   for (i = 0; i < count; i++) {
+      trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i], z,
+                                 rgbaOut + 4 * i);
+   }
 }
 
 static void
@@ -170,6 +185,13 @@ wrap_texture(GLcontext *ctx, struct gl_renderbuffer_attachment *att)
    trb->Base.Delete = delete_texture_wrapper;
    trb->Base.AllocStorage = NULL; /* illegal! */
 
+   /* XXX fix these */
+   trb->Base.RedBits = trb->TexImage->TexFormat->RedBits;
+   trb->Base.GreenBits = trb->TexImage->TexFormat->GreenBits;
+   trb->Base.BlueBits = trb->TexImage->TexFormat->BlueBits;
+   trb->Base.AlphaBits = trb->TexImage->TexFormat->AlphaBits;
+   trb->Base.DepthBits = trb->TexImage->TexFormat->DepthBits;
+
    att->Renderbuffer = &(trb->Base);
 }