[Mesa-dev] [PATCH 11/15] intel: Downsample during glReadPixels

Chad Versace chad.versace at linux.intel.com
Sat Jul 21 17:36:50 PDT 2012


Actually, this patch forces an automatic downsample during
intel_miptree_map.  And this should occur only due to glReadPixels.

CC: Eric Anholt <eric at anholt.net>
CC: Paul Berry <stereotype441 at gmail.com>
Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
---
 src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index c4496ea..26002c2 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -1339,6 +1339,15 @@ intel_miptree_map(struct intel_context *intel,
 {
    struct intel_miptree_map *map;
 
+   if (mt->num_samples > 0 && (mode & GL_MAP_WRITE_BIT)) {
+      /* We choose not support swrast on multisample buffers because
+       * it would require an upsample on unmap. As of 2012-07-20, this
+       * warning occurs only on glDrawPixels(GL_STENCIL_INDEX).
+       */
+      _mesa_warning(&intel->ctx, "unsupported fallback to software "
+                    "rasterization on a multisample buffer");
+   }
+
    map = calloc(1, sizeof(struct intel_miptree_map));
    if (!map){
       *out_ptr = NULL;
@@ -1354,6 +1363,7 @@ intel_miptree_map(struct intel_context *intel,
    map->w = w;
    map->h = h;
 
+   intel_miptree_downsample(intel, mt);
    intel_miptree_slice_resolve_depth(intel, mt, level, slice);
    if (map->mode & GL_MAP_WRITE_BIT) {
       intel_miptree_slice_set_needs_hiz_resolve(mt, level, slice);
-- 
1.7.11.2



More information about the mesa-dev mailing list