diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2011-07-10 23:12:26 +0800 |
---|---|---|
committer | Chia-I Wu <olvaffe@gmail.com> | 2011-07-11 12:55:00 +0800 |
commit | e59db8f9ce30ab294d6d230c2e1802689abe815c (patch) | |
tree | 89e72e57de1dba0f27b56c095556175c9769b384 | |
parent | 59eb3d82102ecef9302424196bd665a67b937dc0 (diff) |
let drivers decide the fb format
-rw-r--r-- | gralloc_drm_intel.c | 2 | ||||
-rw-r--r-- | gralloc_drm_kms.c | 11 | ||||
-rw-r--r-- | gralloc_drm_nouveau.c | 1 | ||||
-rw-r--r-- | gralloc_drm_pipe.c | 1 | ||||
-rw-r--r-- | gralloc_drm_priv.h | 5 | ||||
-rw-r--r-- | gralloc_drm_radeon.c | 1 |
6 files changed, 10 insertions, 11 deletions
diff --git a/gralloc_drm_intel.c b/gralloc_drm_intel.c index e5ddcfc..182b2c8 100644 --- a/gralloc_drm_intel.c +++ b/gralloc_drm_intel.c @@ -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; diff --git a/gralloc_drm_kms.c b/gralloc_drm_kms.c index c64d4ad..c1035cd 100644 --- a/gralloc_drm_kms.c +++ b/gralloc_drm_kms.c @@ -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; diff --git a/gralloc_drm_nouveau.c b/gralloc_drm_nouveau.c index d5fce78..6f3af45 100644 --- a/gralloc_drm_nouveau.c +++ b/gralloc_drm_nouveau.c @@ -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; diff --git a/gralloc_drm_pipe.c b/gralloc_drm_pipe.c index 7572d4d..65f2d35 100644 --- a/gralloc_drm_pipe.c +++ b/gralloc_drm_pipe.c @@ -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; diff --git a/gralloc_drm_priv.h b/gralloc_drm_priv.h index 5890d5a..0838db7 100644 --- a/gralloc_drm_priv.h +++ b/gralloc_drm_priv.h @@ -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; diff --git a/gralloc_drm_radeon.c b/gralloc_drm_radeon.c index 59fb782..b17de99 100644 --- a/gralloc_drm_radeon.c +++ b/gralloc_drm_radeon.c @@ -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; |