OSDN Git Service

let drivers decide the fb format
authorChia-I Wu <olvaffe@gmail.com>
Sun, 10 Jul 2011 15:12:26 +0000 (23:12 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Mon, 11 Jul 2011 04:55:00 +0000 (12:55 +0800)
gralloc_drm_intel.c
gralloc_drm_kms.c
gralloc_drm_nouveau.c
gralloc_drm_pipe.c
gralloc_drm_priv.h
gralloc_drm_radeon.c

index e5ddcfc..182b2c8 100644 (file)
@@ -496,6 +496,8 @@ static void intel_init_kms_features(struct gralloc_drm_drv_t *drv,
        struct drm_i915_getparam gp;
        int pageflipping, id;
 
+       drm->fb_format = HAL_PIXEL_FORMAT_BGRA_8888;
+
        drm->mode_dirty_fb = 0;
        /* why? */
        drm->mode_sync_flip = 1;
index c64d4ad..c1035cd 100644 (file)
@@ -324,7 +324,7 @@ static void drm_kms_init_features(struct gralloc_drm_t *drm)
                front = gralloc_drm_bo_create(drm,
                                              drm->mode.hdisplay,
                                              drm->mode.vdisplay,
-                                             drm->format,
+                                             drm->fb_format,
                                              GRALLOC_USAGE_HW_FB);
                if (front && gralloc_drm_bo_add_fb(front)) {
                        gralloc_drm_bo_destroy(front);
@@ -408,13 +408,6 @@ static int drm_kms_init_with_connector(struct gralloc_drm_t *drm,
                drm->ydpi = 75;
        }
 
-       /* select between 32/16 bits */
-#if 1
-       drm->format = HAL_PIXEL_FORMAT_BGRA_8888;
-#else
-       drm->format = HAL_PIXEL_FORMAT_RGB_565;
-#endif
-
 #ifdef DRM_MODE_FEATURE_DIRTYFB
        drm->clip.x1 = 0;
        drm->clip.y1 = 0;
@@ -483,7 +476,7 @@ void gralloc_drm_get_kms_info(struct gralloc_drm_t *drm,
        *((int *)      &fb->stride) = drm->mode.hdisplay;
        *((float *)    &fb->fps) = drm->mode.vrefresh;
 
-       *((int *)      &fb->format) = drm->format;
+       *((int *)      &fb->format) = drm->fb_format;
        *((float *)    &fb->xdpi) = drm->xdpi;
        *((float *)    &fb->ydpi) = drm->ydpi;
        *((int *)      &fb->minSwapInterval) = drm->swap_interval;
index d5fce78..6f3af45 100644 (file)
@@ -269,6 +269,7 @@ static void nouveau_init_kms_features(struct gralloc_drm_drv_t *drv,
 {
        struct nouveau_info *info = (struct nouveau_info *) drv;
 
+       drm->fb_format = HAL_PIXEL_FORMAT_BGRA_8888;
        drm->mode_dirty_fb = 0;
        drm->swap_mode = (info->chan) ? DRM_SWAP_FLIP : DRM_SWAP_SETCRTC;
        drm->mode_sync_flip = 1;
index 7572d4d..65f2d35 100644 (file)
@@ -337,6 +337,7 @@ static void pipe_init_kms_features(struct gralloc_drm_drv_t *drv, struct gralloc
 {
        struct pipe_manager *pm = (struct pipe_manager *) drv;
 
+       drm->fb_format = HAL_PIXEL_FORMAT_BGRA_8888;
        drm->mode_dirty_fb = (strcmp(pm->name, "vmwgfx") == 0);
        drm->swap_mode = DRM_SWAP_FLIP;
        drm->mode_sync_flip = 1;
index 5890d5a..0838db7 100644 (file)
@@ -48,19 +48,20 @@ struct gralloc_drm_t {
        uint32_t connector_id;
        drmModeModeInfo mode;
        int xdpi, ydpi;
-       int format;
 #ifdef DRM_MODE_FEATURE_DIRTYFB
        drmModeClip clip;
 #endif
-       drmEventContext evctx;
 
        /* initialized by drv->init_kms_features */
+       int fb_format;
        enum drm_swap_mode swap_mode;
        int swap_interval;
        int mode_dirty_fb;
        int mode_sync_flip; /* page flip should block */
        int vblank_secondary;
 
+       drmEventContext evctx;
+
        int first_post;
        struct gralloc_drm_bo_t *current_front, *next_front;
        int waiting_flip;
index 59fb782..b17de99 100644 (file)
@@ -318,6 +318,7 @@ static void drm_gem_radeon_unmap(struct gralloc_drm_drv_t *drv,
 static void drm_gem_radeon_init_kms_features(struct gralloc_drm_drv_t *drv,
                struct gralloc_drm_t *drm)
 {
+       drm->fb_format = HAL_PIXEL_FORMAT_BGRA_8888;
        drm->mode_dirty_fb = 0;
        drm->swap_mode = DRM_SWAP_FLIP;
        drm->mode_sync_flip = 1;