projects
/
profile
/
ivi
/
libdrm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
967bd21
)
modesetting: add surface width/heights
author
Dave Airlie
<airlied@redhat.com>
Thu, 5 Jun 2008 01:20:52 +0000
(11:20 +1000)
committer
Dave Airlie
<airlied@redhat.com>
Thu, 5 Jun 2008 01:20:52 +0000
(11:20 +1000)
linux-core/intel_fb.c
patch
|
blob
|
history
diff --git
a/linux-core/intel_fb.c
b/linux-core/intel_fb.c
index
2f28ca1
..
a87672d
100644
(file)
--- a/
linux-core/intel_fb.c
+++ b/
linux-core/intel_fb.c
@@
-544,7
+544,9
@@
int intelfb_resize(struct drm_device *dev, struct drm_crtc *crtc)
}
EXPORT_SYMBOL(intelfb_resize);
}
EXPORT_SYMBOL(intelfb_resize);
-int intelfb_create(struct drm_device *dev, uint32_t fb_width, uint32_t fb_height, struct intel_framebuffer **intel_fb_p)
+int intelfb_create(struct drm_device *dev, uint32_t fb_width, uint32_t fb_height,
+ uint32_t surface_width, uint32_t surface_height,
+ struct intel_framebuffer **intel_fb_p)
{
struct fb_info *info;
struct intelfb_par *par;
{
struct fb_info *info;
struct intelfb_par *par;
@@
-622,8
+624,8
@@
int intelfb_create(struct drm_device *dev, uint32_t fb_width, uint32_t fb_height
info->screen_base = intel_fb->kmap.virtual;
info->screen_size = info->fix.smem_len; /* FIXME */
info->pseudo_palette = fb->pseudo_palette;
info->screen_base = intel_fb->kmap.virtual;
info->screen_size = info->fix.smem_len; /* FIXME */
info->pseudo_palette = fb->pseudo_palette;
- info->var.xres_virtual =
fb->
width;
- info->var.yres_virtual =
fb->
height;
+ info->var.xres_virtual =
surface_
width;
+ info->var.yres_virtual =
surface_
height;
info->var.bits_per_pixel = fb->bits_per_pixel;
info->var.xoffset = 0;
info->var.yoffset = 0;
info->var.bits_per_pixel = fb->bits_per_pixel;
info->var.xoffset = 0;
info->var.yoffset = 0;
@@
-729,6
+731,7
@@
int intelfb_probe(struct drm_device *dev)
int ret;
int crtc_count = 0, i;
unsigned int fb_width = (unsigned)-1, fb_height = (unsigned)-1;
int ret;
int crtc_count = 0, i;
unsigned int fb_width = (unsigned)-1, fb_height = (unsigned)-1;
+ unsigned int surface_width = 0, surface_height = 0;
DRM_DEBUG("\n");
DRM_DEBUG("\n");
@@
-739,6
+742,12
@@
int intelfb_probe(struct drm_device *dev)
if (crtc->desired_mode->vdisplay < fb_height)
fb_height = crtc->desired_mode->vdisplay;
if (crtc->desired_mode->vdisplay < fb_height)
fb_height = crtc->desired_mode->vdisplay;
+
+ if (crtc->desired_mode->hdisplay > surface_width)
+ surface_width = crtc->desired_mode->hdisplay;
+
+ if (crtc->desired_mode->vdisplay > surface_height)
+ surface_height = crtc->desired_mode->vdisplay;
}
crtc_count++;
}
}
crtc_count++;
}
@@
-747,8
+756,8
@@
int intelfb_probe(struct drm_device *dev)
return -EINVAL;
}
return -EINVAL;
}
- DRM_DEBUG("here %d %d
\n", fb_width, fb
_height);
- ret = intelfb_create(dev, fb_width, fb_height, &intel_fb);
+ DRM_DEBUG("here %d %d
%d %d\n", fb_width, fb_height, surface_width, surface
_height);
+ ret = intelfb_create(dev, fb_width, fb_height,
surface_width, surface_height,
&intel_fb);
if (ret)
return -EINVAL;
if (ret)
return -EINVAL;