bool dce110_transform_get_next_lower_pixel_storage_depth(
	struct dce110_transform *xfm110,
	uint32_t display_bpp,
	enum lb_pixel_depth depth,
	enum lb_pixel_depth *lower_depth)
{
	enum lb_pixel_depth depth_req_by_display =
		translate_display_bpp_to_lb_depth(display_bpp);
	uint32_t current_required_depth = depth_req_by_display;
	uint32_t current_depth = depth;

	/* if required display depth < current we could go down, for example
	 * from LB_PIXEL_DEPTH_30BPP to LB_PIXEL_DEPTH_24BPP
	 */
	if (current_required_depth < current_depth) {
		current_depth = current_depth >> 1;
		if (xfm110->lb_pixel_depth_supported & current_depth) {
			*lower_depth = current_depth;
			return true;
		}
	}
コード例 #2
0
static bool get_next_lower_pixel_storage_depth(
	struct line_buffer *base,
	uint32_t display_bpp,
	enum lb_pixel_depth depth,
	enum lb_pixel_depth *lower_depth)
{
	struct line_buffer_dce110 *lb = LB110_FROM_BASE(base);
	enum lb_pixel_depth depth_req_by_display =
		translate_display_bpp_to_lb_depth(display_bpp);
	uint32_t current_required_depth = depth_req_by_display;
	uint32_t current_depth = depth;

	/* if required display depth < current we could go down, for example
	 * from LB_PIXEL_DEPTH_30BPP to LB_PIXEL_DEPTH_24BPP
	 */
	if (current_required_depth < current_depth) {
		current_depth = current_depth >> 1;
		if (lb->caps & current_depth) {
			*lower_depth = current_depth;
			return true;
		}
	}