OSDN Git Service

i965/blorp/gen8: Use the correct max level and layer in emit_surface_states
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 4 Jun 2016 06:25:19 +0000 (23:25 -0700)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 24 Jun 2016 19:29:03 +0000 (20:29 +0100)
We were adding in the base which is wrong because the values given in the
miptree are relative to zero and not the base layer/level.

Reviewed-by: Chad Versace <chad.versace@intel.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Cc: "11.1 11.2 12.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 620f81d2edb20ffd9803ee318f60845441459fac)

src/mesa/drivers/dri/i965/gen8_blorp.c

index a9a400d..fcf5a53 100644 (file)
@@ -627,13 +627,12 @@ gen8_blorp_emit_surface_states(struct brw_context *brw,
                            mt->target == GL_TEXTURE_CUBE_MAP;
       const unsigned depth = (is_cube ? 6 : 1) * mt->logical_depth0;
       const GLenum target = is_cube ? GL_TEXTURE_2D_ARRAY : mt->target;
-      const unsigned max_level = surface->level + mt->last_level + 1;
       const unsigned layer = mt->target != GL_TEXTURE_3D ?
                                 surface->layer / layer_divider : 0;
 
       brw->vtbl.emit_texture_surface_state(brw, mt, target,
-                                           layer, layer + depth,
-                                           surface->level, max_level,
+                                           layer, depth,
+                                           surface->level, mt->last_level + 1,
                                            surface->brw_surfaceformat,
                                            surface->swizzle,
                                            &wm_surf_offset_texture,