summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
add23b5)
TS tiles map to a fixed amount of bytes in the color/depth surface,
so the blocksize of the format needs to be taken into account when
calculating the number of tiles to fill.
The simplest fix is to just use the layer stride, which is the surface
size in bytes.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
!rs->swap_rb && !rs->flip &&
!rs->clear_mode && rs->source_padded_width) {
/* Total number of tiles (same as for autodisable) */
!rs->swap_rb && !rs->flip &&
!rs->clear_mode && rs->source_padded_width) {
/* Total number of tiles (same as for autodisable) */
- cs->RS_KICKER_INPLACE = rs->source_padded_width * rs->source_padded_height / 16;
+ cs->RS_KICKER_INPLACE = rs->tile_count;
}
cs->source_ts_valid = rs->source_ts_valid;
}
}
cs->source_ts_valid = rs->source_ts_valid;
}
.dither = {0xffffffff, 0xffffffff}, // XXX dither when going from 24 to 16 bit?
.clear_mode = VIVS_RS_CLEAR_CONTROL_MODE_DISABLED,
.width = width,
.dither = {0xffffffff, 0xffffffff}, // XXX dither when going from 24 to 16 bit?
.clear_mode = VIVS_RS_CLEAR_CONTROL_MODE_DISABLED,
.width = width,
+ .height = height,
+ .tile_count = src_lev->layer_stride / 64
});
etna_submit_rs_state(ctx, ©_to_screen);
});
etna_submit_rs_state(ctx, ©_to_screen);
uint32_t clear_bits;
uint32_t clear_mode; /* VIVS_RS_CLEAR_CONTROL_MODE_XXX */
uint32_t clear_value[4];
uint32_t clear_bits;
uint32_t clear_mode; /* VIVS_RS_CLEAR_CONTROL_MODE_XXX */
uint32_t clear_value[4];
uint8_t aa;
uint8_t endian_mode; /* ENDIAN_MODE_XXX */
};
uint8_t aa;
uint8_t endian_mode; /* ENDIAN_MODE_XXX */
};