r300g: Finish resolve function.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Wed, 16 Jun 2010 17:50:37 +0000 (10:50 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Wed, 16 Jun 2010 17:54:08 +0000 (10:54 -0700)
src/gallium/drivers/r300/r300_render.c

index c5a4406a921ddf0e4b373b0d4b735585c5aad845..16add416a4fe3220a25e13c5ddb61d0288ac8e58 100644 (file)
@@ -1024,24 +1024,32 @@ static void r300_resource_resolve(struct pipe_context* pipe,
                                   struct pipe_subresource subsrc)
 {
     struct r300_context* r300 = r300_context(pipe);
-    struct r300_texture* tex;
+    struct r300_texture* tex = r300_texture(dest);
+    struct pipe_surface* surf = dest->screen->get_tex_surface(dest->screen,
+        dest, subdest.face, subdest.level, 0, 0);
+    float color[] = {0, 0, 0, 0};
     CS_LOCALS(r300);
 
+    DBG(r300, DBG_DRAW, "r300: Resolving resource...\n");
+
     assert(tex && tex->buffer && "resolvebuf is marked, but NULL!");
 
     OUT_CS_REG_SEQ(R300_RB3D_AARESOLVE_OFFSET, 1);
-    OUT_CS_TEX_RELOC(tex, tex->offset, 0, RADEON_GEM_DOMAIN_VRAM, 0);
+    OUT_CS_TEX_RELOC(tex, surf->offset, 0, tex->domain, 0);
 
     OUT_CS_REG_SEQ(R300_RB3D_AARESOLVE_PITCH, 1);
-    OUT_CS_TEX_RELOC(tex, tex->fb_state.colorpitch[tex->level],
-        0, RADEON_GEM_DOMAIN_VRAM, 0);
+    OUT_CS_TEX_RELOC(tex, tex->fb_state.colorpitch[surf->level],
+        0, tex->domain, 0);
 
     OUT_CS_REG(R300_RB3D_AARESOLVE_CTL,
         R300_RB3D_AARESOLVE_CTL_AARESOLVE_MODE_RESOLVE |
         R300_RB3D_AARESOLVE_CTL_AARESOLVE_ALPHA_AVERAGE);
 
-    r300->context.resource_fill_region(pipe,
-        src, subsrc, 0, 0, 0, src->width0, src->height0, 0x0);
+    surf = src->screen->get_tex_surface(src->screen,
+        src, subsrc.face, subsrc.level, 0, 0);
+
+    r300->context.clear_render_target(pipe,
+        surf, color, 0, 0, src->width0, src->height0);
 
     OUT_CS_REG(R300_RB3D_AARESOLVE_CTL, 0x0);
 }