nvfx: rework state_fb code to get rid of render temps
[mesa.git] / src / gallium / drivers / nvfx / nvfx_surface.c
index 04b0304b44f827089aca4ae6bad75eb23f200b31..73a5260ac0f34dedddad628fb5331dea9086015e 100644 (file)
@@ -102,7 +102,7 @@ nvfx_region_init_for_surface(struct nv04_region* rgn, struct nvfx_surface* surf,
                rgn->bo = ((struct nvfx_resource*)surf->base.base.texture)->bo;
                rgn->offset = surf->offset;
 
-               if(surf->base.base.texture->flags & NVFX_RESOURCE_FLAG_LINEAR)
+               if(surf->base.base.texture->flags & NOUVEAU_RESOURCE_FLAG_LINEAR)
                        rgn->pitch = surf->pitch;
                else
                {
@@ -137,7 +137,7 @@ nvfx_region_init_for_subresource(struct nv04_region* rgn, struct pipe_resource*
        rgn->x = x;
        rgn->y = y;
 
-       if(pt->flags & NVFX_RESOURCE_FLAG_LINEAR)
+       if(pt->flags & NOUVEAU_RESOURCE_FLAG_LINEAR)
        {
                rgn->pitch = nvfx_subresource_pitch(pt, level);
                rgn->z = 0;
@@ -187,7 +187,6 @@ nvfx_get_blitter(struct pipe_context* pipe, int copy)
        util_blitter_save_vertex_shader(blitter, nvfx->vertprog);
        util_blitter_save_viewport(blitter, &nvfx->viewport);
        util_blitter_save_framebuffer(blitter, &nvfx->framebuffer);
-       util_blitter_save_clip(blitter, &nvfx->clip);
        util_blitter_save_vertex_elements(blitter, nvfx->vtxelt);
        util_blitter_save_vertex_buffers(blitter, nvfx->vtxbuf_nr, nvfx->vtxbuf);
 
@@ -429,6 +428,8 @@ nvfx_surface_copy_temp(struct pipe_context* pipe, struct pipe_surface* surf, int
 void
 nvfx_surface_create_temp(struct pipe_context* pipe, struct pipe_surface* surf)
 {
+       assert (0);
+
        struct nvfx_surface* ns = (struct nvfx_surface*)surf;
        struct pipe_resource template;
        memset(&template, 0, sizeof(struct pipe_resource));
@@ -438,7 +439,7 @@ nvfx_surface_create_temp(struct pipe_context* pipe, struct pipe_surface* surf)
        template.height0 = surf->height;
        template.depth0 = 1;
        template.nr_samples = surf->texture->nr_samples;
-       template.flags = NVFX_RESOURCE_FLAG_LINEAR;
+       template.flags = NOUVEAU_RESOURCE_FLAG_LINEAR;
 
        assert(!ns->temp && !util_dirty_surface_is_dirty(&ns->base));
 
@@ -478,19 +479,19 @@ nvfx_surface_flush(struct pipe_context* pipe, struct pipe_surface* surf)
 static void
 nvfx_clear_render_target(struct pipe_context *pipe,
                         struct pipe_surface *dst,
-                        const float *rgba,
+                        const union pipe_color_union *color,
                         unsigned dstx, unsigned dsty,
                         unsigned width, unsigned height)
 {
        union util_color uc;
-       util_pack_color(rgba, dst->format, &uc);
+       util_pack_color(color->f, dst->format, &uc);
 
        if(util_format_get_blocksizebits(dst->format) > 32
                || nvfx_surface_fill(pipe, dst, dstx, dsty, width, height, uc.ui))
        {
                // TODO: probably should use hardware clear here instead if possible
                struct blitter_context* blitter = nvfx_get_blitter(pipe, 0);
-               util_blitter_clear_render_target(blitter, dst, rgba, dstx, dsty, width, height);
+               util_blitter_clear_render_target(blitter, dst, color, dstx, dsty, width, height);
                nvfx_put_blitter(pipe, blitter);
        }
 }