Module: Mesa Branch: master Commit: eb51c6d55ff8b91497bd81f48f95e6bbe863a3e0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb51c6d55ff8b91497bd81f48f95e6bbe863a3e0
Author: Zhenyu Wang <[email protected]> Date: Tue Apr 7 13:48:38 2015 +0800 i965: Fix depth field setting in surface state for raw buffer on Gen7/8 On Gen7/8 for RAW surface format, the depth field (surf[3]) in surface state means [30:21] bits of number of entries which is different from other surface format which uses [26:21] bits field. Signed-off-by: Zhenyu Wang <[email protected]> Reviewed-by: Kristian Høgsberg <[email protected]> Reviewed-by: Anuj Phogat <[email protected]> --- src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 7 +++++-- src/mesa/drivers/dri/i965/gen8_surface_state.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c index d9361d3..18bcb8a 100644 --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c @@ -238,8 +238,11 @@ gen7_emit_buffer_surface_state(struct brw_context *brw, surf[1] = (bo ? bo->offset64 : 0) + buffer_offset; /* reloc */ surf[2] = SET_FIELD((buffer_size - 1) & 0x7f, GEN7_SURFACE_WIDTH) | SET_FIELD(((buffer_size - 1) >> 7) & 0x3fff, GEN7_SURFACE_HEIGHT); - surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3f, BRW_SURFACE_DEPTH) | - (pitch - 1); + if (surface_format == BRW_SURFACEFORMAT_RAW) + surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3ff, BRW_SURFACE_DEPTH); + else + surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3f, BRW_SURFACE_DEPTH); + surf[3] |= (pitch - 1); surf[5] = SET_FIELD(GEN7_MOCS_L3, GEN7_SURFACE_MOCS); diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c b/src/mesa/drivers/dri/i965/gen8_surface_state.c index 0007c95..ba59b05 100644 --- a/src/mesa/drivers/dri/i965/gen8_surface_state.c +++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c @@ -129,8 +129,11 @@ gen8_emit_buffer_surface_state(struct brw_context *brw, surf[2] = SET_FIELD((buffer_size - 1) & 0x7f, GEN7_SURFACE_WIDTH) | SET_FIELD(((buffer_size - 1) >> 7) & 0x3fff, GEN7_SURFACE_HEIGHT); - surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3f, BRW_SURFACE_DEPTH) | - (pitch - 1); + if (surface_format == BRW_SURFACEFORMAT_RAW) + surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3ff, BRW_SURFACE_DEPTH); + else + surf[3] = SET_FIELD(((buffer_size - 1) >> 21) & 0x3f, BRW_SURFACE_DEPTH); + surf[3] |= (pitch - 1); surf[7] = SET_FIELD(HSW_SCS_RED, GEN7_SURFACE_SCS_R) | SET_FIELD(HSW_SCS_GREEN, GEN7_SURFACE_SCS_G) | SET_FIELD(HSW_SCS_BLUE, GEN7_SURFACE_SCS_B) | _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
