GEN7+-specific hw-support. This can be copied over to GEN8/Broadwell with few modifications.
Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/gen7_blorp.cpp | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp b/src/mesa/drivers/dri/i965/gen7_blorp.cpp index 1af869b..94e4626 100644 --- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp +++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp @@ -142,15 +142,13 @@ gen7_blorp_emit_surface_state(struct brw_context *brw, bool is_render_target) { uint32_t wm_surf_offset; - uint32_t width = surface->width; - uint32_t height = surface->height; + bool is_source = (surface == ¶ms->src); /* Note: since gen7 uses INTEL_MSAA_LAYOUT_CMS or INTEL_MSAA_LAYOUT_UMS for * color surfaces, width and height are measured in pixels; we don't need * to divide them by 2 as we do for Gen6 (see * gen6_blorp_emit_surface_state). */ struct intel_region *region = surface->mt->region; - uint32_t tile_x, tile_y; const uint8_t mocs = GEN7_MOCS_L3; uint32_t tiling = surface->map_stencil_as_y_tiled @@ -175,20 +173,14 @@ gen7_blorp_emit_surface_state(struct brw_context *brw, surf[0] |= GEN7_SURFACE_ARYSPC_FULL; /* reloc */ - surf[1] = - surface->compute_tile_offsets(&tile_x, &tile_y) + region->bo->offset; + surf[1] = region->bo->offset; - /* Note that the low bits of these fields are missing, so - * there's the possibility of getting in trouble. - */ - assert(tile_x % 4 == 0); - assert(tile_y % 2 == 0); - surf[5] = SET_FIELD(tile_x / 4, BRW_SURFACE_X_OFFSET) | - SET_FIELD(tile_y / 2, BRW_SURFACE_Y_OFFSET) | - SET_FIELD(mocs, GEN7_SURFACE_MOCS); - - surf[2] = SET_FIELD(width - 1, GEN7_SURFACE_WIDTH) | - SET_FIELD(height - 1, GEN7_SURFACE_HEIGHT); + surf[5] = SET_FIELD(mocs, GEN7_SURFACE_MOCS) | + SET_FIELD(is_source? surface->level : 0, GEN7_SURFACE_MIN_LOD) | + (is_source ? 0 : surface->level); + + surf[2] = SET_FIELD(surface->mt->logical_width0 - 1, GEN7_SURFACE_WIDTH) | + SET_FIELD(surface->mt->logical_height0 - 1, GEN7_SURFACE_HEIGHT); uint32_t pitch_bytes = region->pitch; if (surface->map_stencil_as_y_tiled) -- 1.7.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev