mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 11:10:10 +01:00
intel/blorp: Only copy clear color when doing a resolve.
We only need to copy the clear color from the state buffer to the inlined surface state when doing a resolve. Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
188a473b9a
commit
92eb5bbc68
1 changed files with 9 additions and 4 deletions
|
|
@ -1283,6 +1283,7 @@ blorp_emit_memcpy(struct blorp_batch *batch,
|
||||||
static void
|
static void
|
||||||
blorp_emit_surface_state(struct blorp_batch *batch,
|
blorp_emit_surface_state(struct blorp_batch *batch,
|
||||||
const struct brw_blorp_surface_info *surface,
|
const struct brw_blorp_surface_info *surface,
|
||||||
|
enum isl_aux_op op,
|
||||||
void *state, uint32_t state_offset,
|
void *state, uint32_t state_offset,
|
||||||
const bool color_write_disables[4],
|
const bool color_write_disables[4],
|
||||||
bool is_render_target)
|
bool is_render_target)
|
||||||
|
|
@ -1346,10 +1347,12 @@ blorp_emit_surface_state(struct blorp_batch *batch,
|
||||||
isl_dev->ss.clear_color_state_offset,
|
isl_dev->ss.clear_color_state_offset,
|
||||||
surface->clear_color_addr, *clear_addr);
|
surface->clear_color_addr, *clear_addr);
|
||||||
#elif GEN_GEN >= 7
|
#elif GEN_GEN >= 7
|
||||||
|
if (op == ISL_AUX_OP_FULL_RESOLVE || op == ISL_AUX_OP_PARTIAL_RESOLVE) {
|
||||||
struct blorp_address dst_addr = blorp_get_surface_base_address(batch);
|
struct blorp_address dst_addr = blorp_get_surface_base_address(batch);
|
||||||
dst_addr.offset += state_offset + isl_dev->ss.clear_value_offset;
|
dst_addr.offset += state_offset + isl_dev->ss.clear_value_offset;
|
||||||
blorp_emit_memcpy(batch, dst_addr, surface->clear_color_addr,
|
blorp_emit_memcpy(batch, dst_addr, surface->clear_color_addr,
|
||||||
isl_dev->ss.clear_value_size);
|
isl_dev->ss.clear_value_size);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
unreachable("Fast clears are only supported on gen7+");
|
unreachable("Fast clears are only supported on gen7+");
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1411,6 +1414,7 @@ blorp_emit_surface_states(struct blorp_batch *batch,
|
||||||
|
|
||||||
if (params->dst.enabled) {
|
if (params->dst.enabled) {
|
||||||
blorp_emit_surface_state(batch, ¶ms->dst,
|
blorp_emit_surface_state(batch, ¶ms->dst,
|
||||||
|
params->fast_clear_op,
|
||||||
surface_maps[BLORP_RENDERBUFFER_BT_INDEX],
|
surface_maps[BLORP_RENDERBUFFER_BT_INDEX],
|
||||||
surface_offsets[BLORP_RENDERBUFFER_BT_INDEX],
|
surface_offsets[BLORP_RENDERBUFFER_BT_INDEX],
|
||||||
params->color_write_disable, true);
|
params->color_write_disable, true);
|
||||||
|
|
@ -1426,6 +1430,7 @@ blorp_emit_surface_states(struct blorp_batch *batch,
|
||||||
|
|
||||||
if (params->src.enabled) {
|
if (params->src.enabled) {
|
||||||
blorp_emit_surface_state(batch, ¶ms->src,
|
blorp_emit_surface_state(batch, ¶ms->src,
|
||||||
|
params->fast_clear_op,
|
||||||
surface_maps[BLORP_TEXTURE_BT_INDEX],
|
surface_maps[BLORP_TEXTURE_BT_INDEX],
|
||||||
surface_offsets[BLORP_TEXTURE_BT_INDEX],
|
surface_offsets[BLORP_TEXTURE_BT_INDEX],
|
||||||
NULL, false);
|
NULL, false);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue