|
@@ -1254,6 +1254,16 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
|
|
/* Greater 8 bpc fb needs to bypass hw-lut to retain precision */
|
|
/* Greater 8 bpc fb needs to bypass hw-lut to retain precision */
|
|
bypass_lut = true;
|
|
bypass_lut = true;
|
|
break;
|
|
break;
|
|
|
|
+ case DRM_FORMAT_XBGR8888:
|
|
|
|
+ case DRM_FORMAT_ABGR8888:
|
|
|
|
+ fb_format = (EVERGREEN_GRPH_DEPTH(EVERGREEN_GRPH_DEPTH_32BPP) |
|
|
|
|
+ EVERGREEN_GRPH_FORMAT(EVERGREEN_GRPH_FORMAT_ARGB8888));
|
|
|
|
+ fb_swap = (EVERGREEN_GRPH_RED_CROSSBAR(EVERGREEN_GRPH_RED_SEL_B) |
|
|
|
|
+ EVERGREEN_GRPH_BLUE_CROSSBAR(EVERGREEN_GRPH_BLUE_SEL_R));
|
|
|
|
+#ifdef __BIG_ENDIAN
|
|
|
|
+ fb_swap |= EVERGREEN_GRPH_ENDIAN_SWAP(EVERGREEN_GRPH_ENDIAN_8IN32);
|
|
|
|
+#endif
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
DRM_ERROR("Unsupported screen format %s\n",
|
|
DRM_ERROR("Unsupported screen format %s\n",
|
|
drm_get_format_name(target_fb->format->format, &format_name));
|
|
drm_get_format_name(target_fb->format->format, &format_name));
|
|
@@ -1551,6 +1561,21 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
|
|
/* Greater 8 bpc fb needs to bypass hw-lut to retain precision */
|
|
/* Greater 8 bpc fb needs to bypass hw-lut to retain precision */
|
|
bypass_lut = true;
|
|
bypass_lut = true;
|
|
break;
|
|
break;
|
|
|
|
+ case DRM_FORMAT_XBGR8888:
|
|
|
|
+ case DRM_FORMAT_ABGR8888:
|
|
|
|
+ fb_format =
|
|
|
|
+ AVIVO_D1GRPH_CONTROL_DEPTH_32BPP |
|
|
|
|
+ AVIVO_D1GRPH_CONTROL_32BPP_ARGB8888;
|
|
|
|
+ if (rdev->family >= CHIP_R600)
|
|
|
|
+ fb_swap =
|
|
|
|
+ (R600_D1GRPH_RED_CROSSBAR(R600_D1GRPH_RED_SEL_B) |
|
|
|
|
+ R600_D1GRPH_BLUE_CROSSBAR(R600_D1GRPH_BLUE_SEL_R));
|
|
|
|
+ else /* DCE1 (R5xx) */
|
|
|
|
+ fb_format |= AVIVO_D1GRPH_SWAP_RB;
|
|
|
|
+#ifdef __BIG_ENDIAN
|
|
|
|
+ fb_swap |= R600_D1GRPH_SWAP_ENDIAN_32BIT;
|
|
|
|
+#endif
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
DRM_ERROR("Unsupported screen format %s\n",
|
|
DRM_ERROR("Unsupported screen format %s\n",
|
|
drm_get_format_name(target_fb->format->format, &format_name));
|
|
drm_get_format_name(target_fb->format->format, &format_name));
|