summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2011-07-10 23:12:26 +0800
committerChia-I Wu <olvaffe@gmail.com>2011-07-11 12:55:00 +0800
commite59db8f9ce30ab294d6d230c2e1802689abe815c (patch)
tree89e72e57de1dba0f27b56c095556175c9769b384
parent59eb3d82102ecef9302424196bd665a67b937dc0 (diff)
let drivers decide the fb format
-rw-r--r--gralloc_drm_intel.c2
-rw-r--r--gralloc_drm_kms.c11
-rw-r--r--gralloc_drm_nouveau.c1
-rw-r--r--gralloc_drm_pipe.c1
-rw-r--r--gralloc_drm_priv.h5
-rw-r--r--gralloc_drm_radeon.c1
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;