mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 15:40:11 +01:00
i965/gen8+: Extract color clear surface state
On future generation platforms the color clear value is stored elsewhere in the surface state. By extracting this logic, we can cleanly implement the difference in an upcoming patch. Should have no functional impact. v2: Move hunk from the next patch into this patch (Matt) Whitespace fix (Ben) Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
parent
f3223ebd6c
commit
5d4b019d2a
1 changed files with 15 additions and 6 deletions
|
|
@ -182,6 +182,14 @@ gen8_emit_buffer_surface_state(struct brw_context *brw,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gen8_emit_fast_clear_color(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t *surf)
|
||||
{
|
||||
surf[7] |= mt->fast_clear_color_value;
|
||||
}
|
||||
|
||||
static void
|
||||
gen8_emit_texture_surface_state(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
|
|
@ -286,7 +294,8 @@ gen8_emit_texture_surface_state(struct brw_context *brw,
|
|||
aux_mode;
|
||||
}
|
||||
|
||||
surf[7] = mt->fast_clear_color_value |
|
||||
gen8_emit_fast_clear_color(brw, mt, surf);
|
||||
surf[7] |=
|
||||
SET_FIELD(swizzle_to_scs(GET_SWZ(swizzle, 0)), GEN7_SURFACE_SCS_R) |
|
||||
SET_FIELD(swizzle_to_scs(GET_SWZ(swizzle, 1)), GEN7_SURFACE_SCS_G) |
|
||||
SET_FIELD(swizzle_to_scs(GET_SWZ(swizzle, 2)), GEN7_SURFACE_SCS_B) |
|
||||
|
|
@ -510,11 +519,11 @@ gen8_update_renderbuffer_surface(struct brw_context *brw,
|
|||
aux_mode;
|
||||
}
|
||||
|
||||
surf[7] = mt->fast_clear_color_value |
|
||||
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) |
|
||||
SET_FIELD(HSW_SCS_ALPHA, GEN7_SURFACE_SCS_A);
|
||||
gen8_emit_fast_clear_color(brw, mt, surf);
|
||||
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) |
|
||||
SET_FIELD(HSW_SCS_ALPHA, GEN7_SURFACE_SCS_A);
|
||||
|
||||
assert(mt->offset % mt->cpp == 0);
|
||||
*((uint64_t *) &surf[8]) = mt->bo->offset64 + mt->offset; /* reloc */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue