i965/blorp: Add an is_render_target parameter to surface_info::set.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 7 Oct 2013 21:41:16 +0000 (14:41 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 9 Oct 2013 23:36:49 +0000 (16:36 -0700)
This allows us to determine whether we're setting up a format for
the source (as a texture) or destination (as a render target).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
src/mesa/drivers/dri/i965/brw_blorp.cpp
src/mesa/drivers/dri/i965/brw_blorp.h
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
src/mesa/drivers/dri/i965/brw_blorp_clear.cpp

index 1576ff2a3842c55ab12ab20b5bd4cc353b2d87d2..e519cd91d8ff8456f8f8ac10ea9d7bb85c0b4ec9 100644 (file)
@@ -66,7 +66,8 @@ brw_blorp_mip_info::set(struct intel_mipmap_tree *mt,
 void
 brw_blorp_surface_info::set(struct brw_context *brw,
                             struct intel_mipmap_tree *mt,
-                            unsigned int level, unsigned int layer)
+                            unsigned int level, unsigned int layer,
+                            bool is_render_target)
 {
    brw_blorp_mip_info::set(mt, level, layer);
    this->num_samples = mt->num_samples;
index dceb4fcc41d8e7ccbb0e846e0c9e07b117199441..07ab80521b12ec0b21696d5df2bc009b42edfa8b 100644 (file)
@@ -122,7 +122,8 @@ public:
 
    void set(struct brw_context *brw,
             struct intel_mipmap_tree *mt,
-            unsigned int level, unsigned int layer);
+            unsigned int level, unsigned int layer,
+            bool is_render_target);
 
    uint32_t compute_tile_offsets(uint32_t *tile_x, uint32_t *tile_y) const;
 
index 12e7698383339685d4b855761e3c698e608e6239..ec70217f2c67e275160005b6fd471c06ed81e746 100644 (file)
@@ -2063,8 +2063,8 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw,
    struct gl_context *ctx = &brw->ctx;
    const struct gl_framebuffer *read_fb = ctx->ReadBuffer;
 
-   src.set(brw, src_mt, src_level, src_layer);
-   dst.set(brw, dst_mt, dst_level, dst_layer);
+   src.set(brw, src_mt, src_level, src_layer, false);
+   dst.set(brw, dst_mt, dst_level, dst_layer, true);
 
    /* Even though we do multisample resolves at the time of the blit, OpenGL
     * specification defines them as if they happen at the time of rendering,
index 18a29fbc07c8ed5ebf40f96816b2add4f6d8147c..d1933ced7545ce7b731ae1bc0781ecff1d386146 100644 (file)
@@ -188,7 +188,7 @@ brw_blorp_clear_params::brw_blorp_clear_params(struct brw_context *brw,
    struct gl_context *ctx = &brw->ctx;
    struct intel_renderbuffer *irb = intel_renderbuffer(rb);
 
-   dst.set(brw, irb->mt, irb->mt_level, irb->mt_layer);
+   dst.set(brw, irb->mt, irb->mt_level, irb->mt_layer, true);
 
    /* Override the surface format according to the context's sRGB rules. */
    gl_format format = _mesa_get_render_format(ctx, irb->mt->format);
@@ -307,7 +307,7 @@ brw_blorp_rt_resolve_params::brw_blorp_rt_resolve_params(
       struct brw_context *brw,
       struct intel_mipmap_tree *mt)
 {
-   dst.set(brw, mt, 0 /* level */, 0 /* layer */);
+   dst.set(brw, mt, 0 /* level */, 0 /* layer */, true);
 
    /* From the Ivy Bridge PRM, Vol2 Part1 11.9 "Render Target Resolve":
     *