diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2011-12-19 17:06:49 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-12-20 05:06:27 -0500 |
commit | 01f2c7730e188077026c5f766f85f329c7000c54 (patch) | |
tree | 1b7ad10bd70c25ccaefa2a03aeedaeb20ac2c336 | |
parent | 935b59774012d11e3012c909cdd0c3cba0adf219 (diff) |
drm: Replace pitch with pitches[] in drm_framebuffer
Otherwise each driver would need to keep the information inside
their own framebuffer object structure. Also add offsets[]. BOs
on the other hand are driver specific, so those can be kept in
driver specific structures.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
22 files changed, 64 insertions, 58 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 07d78e27ec3d..0d1faa72e1ff 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -2292,7 +2292,7 @@ int drm_mode_getfb(struct drm_device *dev, | |||
2292 | r->width = fb->width; | 2292 | r->width = fb->width; |
2293 | r->depth = fb->depth; | 2293 | r->depth = fb->depth; |
2294 | r->bpp = fb->bits_per_pixel; | 2294 | r->bpp = fb->bits_per_pixel; |
2295 | r->pitch = fb->pitch; | 2295 | r->pitch = fb->pitches[0]; |
2296 | fb->funcs->create_handle(fb, file_priv, &r->handle); | 2296 | fb->funcs->create_handle(fb, file_priv, &r->handle); |
2297 | 2297 | ||
2298 | out: | 2298 | out: |
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index 2ce61d72d416..ccbdc0b5854c 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -814,9 +814,14 @@ EXPORT_SYMBOL(drm_helper_connector_dpms); | |||
814 | int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, | 814 | int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, |
815 | struct drm_mode_fb_cmd2 *mode_cmd) | 815 | struct drm_mode_fb_cmd2 *mode_cmd) |
816 | { | 816 | { |
817 | int i; | ||
818 | |||
817 | fb->width = mode_cmd->width; | 819 | fb->width = mode_cmd->width; |
818 | fb->height = mode_cmd->height; | 820 | fb->height = mode_cmd->height; |
819 | fb->pitch = mode_cmd->pitches[0]; | 821 | for (i = 0; i < 4; i++) { |
822 | fb->pitches[i] = mode_cmd->pitches[i]; | ||
823 | fb->offsets[i] = mode_cmd->offsets[i]; | ||
824 | } | ||
820 | drm_fb_get_bpp_depth(mode_cmd->pixel_format, &fb->depth, | 825 | drm_fb_get_bpp_depth(mode_cmd->pixel_format, &fb->depth, |
821 | &fb->bits_per_pixel); | 826 | &fb->bits_per_pixel); |
822 | fb->pixel_format = mode_cmd->pixel_format; | 827 | fb->pixel_format = mode_cmd->pixel_format; |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index 9337e5e2dbb6..73893e5068a4 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c | |||
@@ -119,7 +119,7 @@ static int exynos_drm_overlay_update(struct exynos_drm_overlay *overlay, | |||
119 | overlay->fb_width = fb->width; | 119 | overlay->fb_width = fb->width; |
120 | overlay->fb_height = fb->height; | 120 | overlay->fb_height = fb->height; |
121 | overlay->bpp = fb->bits_per_pixel; | 121 | overlay->bpp = fb->bits_per_pixel; |
122 | overlay->pitch = fb->pitch; | 122 | overlay->pitch = fb->pitches[0]; |
123 | 123 | ||
124 | /* set overlay range to be displayed. */ | 124 | /* set overlay range to be displayed. */ |
125 | overlay->crtc_x = pos->crtc_x; | 125 | overlay->crtc_x = pos->crtc_x; |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 1f4b3d1a7713..81fba29b696d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c | |||
@@ -100,7 +100,7 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper, | |||
100 | 100 | ||
101 | exynos_fb->fb = fb; | 101 | exynos_fb->fb = fb; |
102 | 102 | ||
103 | drm_fb_helper_fill_fix(fbi, fb->pitch, fb->depth); | 103 | drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth); |
104 | drm_fb_helper_fill_var(fbi, helper, fb_width, fb_height); | 104 | drm_fb_helper_fill_var(fbi, helper, fb_width, fb_height); |
105 | 105 | ||
106 | entry = exynos_drm_fb_get_buf(fb); | 106 | entry = exynos_drm_fb_get_buf(fb); |
@@ -110,7 +110,7 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper, | |||
110 | } | 110 | } |
111 | 111 | ||
112 | offset = fbi->var.xoffset * (fb->bits_per_pixel >> 3); | 112 | offset = fbi->var.xoffset * (fb->bits_per_pixel >> 3); |
113 | offset += fbi->var.yoffset * fb->pitch; | 113 | offset += fbi->var.yoffset * fb->pitches[0]; |
114 | 114 | ||
115 | dev->mode_config.fb_base = entry->paddr; | 115 | dev->mode_config.fb_base = entry->paddr; |
116 | fbi->screen_base = entry->vaddr + offset; | 116 | fbi->screen_base = entry->vaddr + offset; |
diff --git a/drivers/gpu/drm/gma500/accel_2d.c b/drivers/gpu/drm/gma500/accel_2d.c index f0ce82aed654..d5ef1a5793c8 100644 --- a/drivers/gpu/drm/gma500/accel_2d.c +++ b/drivers/gpu/drm/gma500/accel_2d.c | |||
@@ -253,7 +253,7 @@ static void psbfb_copyarea_accel(struct fb_info *info, | |||
253 | return; | 253 | return; |
254 | 254 | ||
255 | offset = psbfb->gtt->offset; | 255 | offset = psbfb->gtt->offset; |
256 | stride = fb->pitch; | 256 | stride = fb->pitches[0]; |
257 | 257 | ||
258 | switch (fb->depth) { | 258 | switch (fb->depth) { |
259 | case 8: | 259 | case 8: |
diff --git a/drivers/gpu/drm/gma500/cdv_intel_display.c b/drivers/gpu/drm/gma500/cdv_intel_display.c index 7b97c600eff0..c63a32776a9e 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_display.c +++ b/drivers/gpu/drm/gma500/cdv_intel_display.c | |||
@@ -507,9 +507,9 @@ int cdv_intel_pipe_set_base(struct drm_crtc *crtc, | |||
507 | if (ret < 0) | 507 | if (ret < 0) |
508 | goto psb_intel_pipe_set_base_exit; | 508 | goto psb_intel_pipe_set_base_exit; |
509 | start = psbfb->gtt->offset; | 509 | start = psbfb->gtt->offset; |
510 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 510 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
511 | 511 | ||
512 | REG_WRITE(dspstride, crtc->fb->pitch); | 512 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
513 | 513 | ||
514 | dspcntr = REG_READ(dspcntr_reg); | 514 | dspcntr = REG_READ(dspcntr_reg); |
515 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 515 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 9ec167600d04..75cfafe2ff81 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c | |||
@@ -500,7 +500,7 @@ static int psbfb_create(struct psb_fbdev *fbdev, | |||
500 | info->apertures->ranges[0].size = dev_priv->gtt.stolen_size; | 500 | info->apertures->ranges[0].size = dev_priv->gtt.stolen_size; |
501 | } | 501 | } |
502 | 502 | ||
503 | drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); | 503 | drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); |
504 | drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper, | 504 | drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper, |
505 | sizes->fb_width, sizes->fb_height); | 505 | sizes->fb_width, sizes->fb_height); |
506 | 506 | ||
diff --git a/drivers/gpu/drm/gma500/oaktrail_crtc.c b/drivers/gpu/drm/gma500/oaktrail_crtc.c index 8e15b5af1213..fe17e1f000bf 100644 --- a/drivers/gpu/drm/gma500/oaktrail_crtc.c +++ b/drivers/gpu/drm/gma500/oaktrail_crtc.c | |||
@@ -543,9 +543,9 @@ int oaktrail_pipe_set_base(struct drm_crtc *crtc, | |||
543 | return 0; | 543 | return 0; |
544 | 544 | ||
545 | start = psbfb->gtt->offset; | 545 | start = psbfb->gtt->offset; |
546 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 546 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
547 | 547 | ||
548 | REG_WRITE(dspstride, crtc->fb->pitch); | 548 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
549 | 549 | ||
550 | dspcntr = REG_READ(dspcntr_reg); | 550 | dspcntr = REG_READ(dspcntr_reg); |
551 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 551 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c index ab650765a647..7bc0edee9c0d 100644 --- a/drivers/gpu/drm/gma500/psb_intel_display.c +++ b/drivers/gpu/drm/gma500/psb_intel_display.c | |||
@@ -365,9 +365,9 @@ int psb_intel_pipe_set_base(struct drm_crtc *crtc, | |||
365 | goto psb_intel_pipe_set_base_exit; | 365 | goto psb_intel_pipe_set_base_exit; |
366 | start = psbfb->gtt->offset; | 366 | start = psbfb->gtt->offset; |
367 | 367 | ||
368 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 368 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
369 | 369 | ||
370 | REG_WRITE(dspstride, crtc->fb->pitch); | 370 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
371 | 371 | ||
372 | dspcntr = REG_READ(dspcntr_reg); | 372 | dspcntr = REG_READ(dspcntr_reg); |
373 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 373 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 9ee2729fe5c6..96643ee240da 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -1204,7 +1204,7 @@ static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) | |||
1204 | } else { | 1204 | } else { |
1205 | int dspaddr = DSPADDR(intel_crtc->plane); | 1205 | int dspaddr = DSPADDR(intel_crtc->plane); |
1206 | stall_detected = I915_READ(dspaddr) == (obj->gtt_offset + | 1206 | stall_detected = I915_READ(dspaddr) == (obj->gtt_offset + |
1207 | crtc->y * crtc->fb->pitch + | 1207 | crtc->y * crtc->fb->pitches[0] + |
1208 | crtc->x * crtc->fb->bits_per_pixel/8); | 1208 | crtc->x * crtc->fb->bits_per_pixel/8); |
1209 | } | 1209 | } |
1210 | 1210 | ||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 5dd9bf60bce0..8ecbc2f11633 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -1511,8 +1511,8 @@ static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval) | |||
1511 | u32 fbc_ctl, fbc_ctl2; | 1511 | u32 fbc_ctl, fbc_ctl2; |
1512 | 1512 | ||
1513 | cfb_pitch = dev_priv->cfb_size / FBC_LL_SIZE; | 1513 | cfb_pitch = dev_priv->cfb_size / FBC_LL_SIZE; |
1514 | if (fb->pitch < cfb_pitch) | 1514 | if (fb->pitches[0] < cfb_pitch) |
1515 | cfb_pitch = fb->pitch; | 1515 | cfb_pitch = fb->pitches[0]; |
1516 | 1516 | ||
1517 | /* FBC_CTL wants 64B units */ | 1517 | /* FBC_CTL wants 64B units */ |
1518 | cfb_pitch = (cfb_pitch / 64) - 1; | 1518 | cfb_pitch = (cfb_pitch / 64) - 1; |
@@ -2073,11 +2073,11 @@ static int i9xx_update_plane(struct drm_crtc *crtc, struct drm_framebuffer *fb, | |||
2073 | I915_WRITE(reg, dspcntr); | 2073 | I915_WRITE(reg, dspcntr); |
2074 | 2074 | ||
2075 | Start = obj->gtt_offset; | 2075 | Start = obj->gtt_offset; |
2076 | Offset = y * fb->pitch + x * (fb->bits_per_pixel / 8); | 2076 | Offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); |
2077 | 2077 | ||
2078 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", | 2078 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", |
2079 | Start, Offset, x, y, fb->pitch); | 2079 | Start, Offset, x, y, fb->pitches[0]); |
2080 | I915_WRITE(DSPSTRIDE(plane), fb->pitch); | 2080 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); |
2081 | if (INTEL_INFO(dev)->gen >= 4) { | 2081 | if (INTEL_INFO(dev)->gen >= 4) { |
2082 | I915_WRITE(DSPSURF(plane), Start); | 2082 | I915_WRITE(DSPSURF(plane), Start); |
2083 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); | 2083 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); |
@@ -2154,11 +2154,11 @@ static int ironlake_update_plane(struct drm_crtc *crtc, | |||
2154 | I915_WRITE(reg, dspcntr); | 2154 | I915_WRITE(reg, dspcntr); |
2155 | 2155 | ||
2156 | Start = obj->gtt_offset; | 2156 | Start = obj->gtt_offset; |
2157 | Offset = y * fb->pitch + x * (fb->bits_per_pixel / 8); | 2157 | Offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); |
2158 | 2158 | ||
2159 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", | 2159 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", |
2160 | Start, Offset, x, y, fb->pitch); | 2160 | Start, Offset, x, y, fb->pitches[0]); |
2161 | I915_WRITE(DSPSTRIDE(plane), fb->pitch); | 2161 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); |
2162 | I915_WRITE(DSPSURF(plane), Start); | 2162 | I915_WRITE(DSPSURF(plane), Start); |
2163 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); | 2163 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); |
2164 | I915_WRITE(DSPADDR(plane), Offset); | 2164 | I915_WRITE(DSPADDR(plane), Offset); |
@@ -6353,11 +6353,11 @@ mode_fits_in_fbdev(struct drm_device *dev, | |||
6353 | return NULL; | 6353 | return NULL; |
6354 | 6354 | ||
6355 | fb = &dev_priv->fbdev->ifb.base; | 6355 | fb = &dev_priv->fbdev->ifb.base; |
6356 | if (fb->pitch < intel_framebuffer_pitch_for_width(mode->hdisplay, | 6356 | if (fb->pitches[0] < intel_framebuffer_pitch_for_width(mode->hdisplay, |
6357 | fb->bits_per_pixel)) | 6357 | fb->bits_per_pixel)) |
6358 | return NULL; | 6358 | return NULL; |
6359 | 6359 | ||
6360 | if (obj->base.size < mode->vdisplay * fb->pitch) | 6360 | if (obj->base.size < mode->vdisplay * fb->pitches[0]) |
6361 | return NULL; | 6361 | return NULL; |
6362 | 6362 | ||
6363 | return fb; | 6363 | return fb; |
@@ -6990,7 +6990,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev, | |||
6990 | goto out; | 6990 | goto out; |
6991 | 6991 | ||
6992 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ | 6992 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ |
6993 | offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8; | 6993 | offset = crtc->y * fb->pitches[0] + crtc->x * fb->bits_per_pixel/8; |
6994 | 6994 | ||
6995 | ret = BEGIN_LP_RING(6); | 6995 | ret = BEGIN_LP_RING(6); |
6996 | if (ret) | 6996 | if (ret) |
@@ -7007,7 +7007,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev, | |||
7007 | OUT_RING(MI_NOOP); | 7007 | OUT_RING(MI_NOOP); |
7008 | OUT_RING(MI_DISPLAY_FLIP | | 7008 | OUT_RING(MI_DISPLAY_FLIP | |
7009 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7009 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7010 | OUT_RING(fb->pitch); | 7010 | OUT_RING(fb->pitches[0]); |
7011 | OUT_RING(obj->gtt_offset + offset); | 7011 | OUT_RING(obj->gtt_offset + offset); |
7012 | OUT_RING(MI_NOOP); | 7012 | OUT_RING(MI_NOOP); |
7013 | ADVANCE_LP_RING(); | 7013 | ADVANCE_LP_RING(); |
@@ -7031,7 +7031,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev, | |||
7031 | goto out; | 7031 | goto out; |
7032 | 7032 | ||
7033 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ | 7033 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ |
7034 | offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8; | 7034 | offset = crtc->y * fb->pitches[0] + crtc->x * fb->bits_per_pixel/8; |
7035 | 7035 | ||
7036 | ret = BEGIN_LP_RING(6); | 7036 | ret = BEGIN_LP_RING(6); |
7037 | if (ret) | 7037 | if (ret) |
@@ -7045,7 +7045,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev, | |||
7045 | OUT_RING(MI_NOOP); | 7045 | OUT_RING(MI_NOOP); |
7046 | OUT_RING(MI_DISPLAY_FLIP_I915 | | 7046 | OUT_RING(MI_DISPLAY_FLIP_I915 | |
7047 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7047 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7048 | OUT_RING(fb->pitch); | 7048 | OUT_RING(fb->pitches[0]); |
7049 | OUT_RING(obj->gtt_offset + offset); | 7049 | OUT_RING(obj->gtt_offset + offset); |
7050 | OUT_RING(MI_NOOP); | 7050 | OUT_RING(MI_NOOP); |
7051 | 7051 | ||
@@ -7078,7 +7078,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev, | |||
7078 | */ | 7078 | */ |
7079 | OUT_RING(MI_DISPLAY_FLIP | | 7079 | OUT_RING(MI_DISPLAY_FLIP | |
7080 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7080 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7081 | OUT_RING(fb->pitch); | 7081 | OUT_RING(fb->pitches[0]); |
7082 | OUT_RING(obj->gtt_offset | obj->tiling_mode); | 7082 | OUT_RING(obj->gtt_offset | obj->tiling_mode); |
7083 | 7083 | ||
7084 | /* XXX Enabling the panel-fitter across page-flip is so far | 7084 | /* XXX Enabling the panel-fitter across page-flip is so far |
@@ -7113,7 +7113,7 @@ static int intel_gen6_queue_flip(struct drm_device *dev, | |||
7113 | 7113 | ||
7114 | OUT_RING(MI_DISPLAY_FLIP | | 7114 | OUT_RING(MI_DISPLAY_FLIP | |
7115 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7115 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7116 | OUT_RING(fb->pitch | obj->tiling_mode); | 7116 | OUT_RING(fb->pitches[0] | obj->tiling_mode); |
7117 | OUT_RING(obj->gtt_offset); | 7117 | OUT_RING(obj->gtt_offset); |
7118 | 7118 | ||
7119 | pf = I915_READ(PF_CTL(intel_crtc->pipe)) & PF_ENABLE; | 7119 | pf = I915_READ(PF_CTL(intel_crtc->pipe)) & PF_ENABLE; |
@@ -7149,7 +7149,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, | |||
7149 | goto out; | 7149 | goto out; |
7150 | 7150 | ||
7151 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19)); | 7151 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19)); |
7152 | intel_ring_emit(ring, (fb->pitch | obj->tiling_mode)); | 7152 | intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); |
7153 | intel_ring_emit(ring, (obj->gtt_offset)); | 7153 | intel_ring_emit(ring, (obj->gtt_offset)); |
7154 | intel_ring_emit(ring, (MI_NOOP)); | 7154 | intel_ring_emit(ring, (MI_NOOP)); |
7155 | intel_ring_advance(ring); | 7155 | intel_ring_advance(ring); |
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index dc1db4ff4245..f02fc71a57a5 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
@@ -149,7 +149,7 @@ static int intelfb_create(struct intel_fbdev *ifbdev, | |||
149 | 149 | ||
150 | // memset(info->screen_base, 0, size); | 150 | // memset(info->screen_base, 0, size); |
151 | 151 | ||
152 | drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); | 152 | drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); |
153 | drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height); | 153 | drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height); |
154 | 154 | ||
155 | info->pixmap.size = 64*1024; | 155 | info->pixmap.size = 64*1024; |
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index 7687a77f01d1..2531ef54c3e9 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c | |||
@@ -107,14 +107,14 @@ nouveau_framebuffer_init(struct drm_device *dev, | |||
107 | 107 | ||
108 | if (!tile_flags) { | 108 | if (!tile_flags) { |
109 | if (dev_priv->card_type < NV_D0) | 109 | if (dev_priv->card_type < NV_D0) |
110 | nv_fb->r_pitch = 0x00100000 | fb->pitch; | 110 | nv_fb->r_pitch = 0x00100000 | fb->pitches[0]; |
111 | else | 111 | else |
112 | nv_fb->r_pitch = 0x01000000 | fb->pitch; | 112 | nv_fb->r_pitch = 0x01000000 | fb->pitches[0]; |
113 | } else { | 113 | } else { |
114 | u32 mode = nvbo->tile_mode; | 114 | u32 mode = nvbo->tile_mode; |
115 | if (dev_priv->card_type >= NV_C0) | 115 | if (dev_priv->card_type >= NV_C0) |
116 | mode >>= 4; | 116 | mode >>= 4; |
117 | nv_fb->r_pitch = ((fb->pitch / 4) << 4) | mode; | 117 | nv_fb->r_pitch = ((fb->pitches[0] / 4) << 4) | mode; |
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
@@ -294,7 +294,7 @@ nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, | |||
294 | /* Initialize a page flip struct */ | 294 | /* Initialize a page flip struct */ |
295 | *s = (struct nouveau_page_flip_state) | 295 | *s = (struct nouveau_page_flip_state) |
296 | { { }, event, nouveau_crtc(crtc)->index, | 296 | { { }, event, nouveau_crtc(crtc)->index, |
297 | fb->bits_per_pixel, fb->pitch, crtc->x, crtc->y, | 297 | fb->bits_per_pixel, fb->pitches[0], crtc->x, crtc->y, |
298 | new_bo->bo.offset }; | 298 | new_bo->bo.offset }; |
299 | 299 | ||
300 | /* Choose the channel the flip will be handled in */ | 300 | /* Choose the channel the flip will be handled in */ |
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c index d663065181bf..defffd140781 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c | |||
@@ -370,7 +370,7 @@ nouveau_fbcon_create(struct nouveau_fbdev *nfbdev, | |||
370 | info->screen_base = nvbo_kmap_obj_iovirtual(nouveau_fb->nvbo); | 370 | info->screen_base = nvbo_kmap_obj_iovirtual(nouveau_fb->nvbo); |
371 | info->screen_size = size; | 371 | info->screen_size = size; |
372 | 372 | ||
373 | drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); | 373 | drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); |
374 | drm_fb_helper_fill_var(info, &nfbdev->helper, sizes->fb_width, sizes->fb_height); | 374 | drm_fb_helper_fill_var(info, &nfbdev->helper, sizes->fb_width, sizes->fb_height); |
375 | 375 | ||
376 | /* Set aperture base/size for vesafb takeover */ | 376 | /* Set aperture base/size for vesafb takeover */ |
diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index 5e45398a9e2d..728d07584d39 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c | |||
@@ -364,7 +364,7 @@ nv_crtc_mode_set_vga(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
364 | regp->CRTC[NV_CIO_CR_VRE_INDEX] = 1 << 5 | XLATE(vertEnd, 0, NV_CIO_CR_VRE_3_0); | 364 | regp->CRTC[NV_CIO_CR_VRE_INDEX] = 1 << 5 | XLATE(vertEnd, 0, NV_CIO_CR_VRE_3_0); |
365 | regp->CRTC[NV_CIO_CR_VDE_INDEX] = vertDisplay; | 365 | regp->CRTC[NV_CIO_CR_VDE_INDEX] = vertDisplay; |
366 | /* framebuffer can be larger than crtc scanout area. */ | 366 | /* framebuffer can be larger than crtc scanout area. */ |
367 | regp->CRTC[NV_CIO_CR_OFFSET_INDEX] = fb->pitch / 8; | 367 | regp->CRTC[NV_CIO_CR_OFFSET_INDEX] = fb->pitches[0] / 8; |
368 | regp->CRTC[NV_CIO_CR_ULINE_INDEX] = 0x00; | 368 | regp->CRTC[NV_CIO_CR_ULINE_INDEX] = 0x00; |
369 | regp->CRTC[NV_CIO_CR_VBS_INDEX] = vertBlankStart; | 369 | regp->CRTC[NV_CIO_CR_VBS_INDEX] = vertBlankStart; |
370 | regp->CRTC[NV_CIO_CR_VBE_INDEX] = vertBlankEnd; | 370 | regp->CRTC[NV_CIO_CR_VBE_INDEX] = vertBlankEnd; |
@@ -377,9 +377,9 @@ nv_crtc_mode_set_vga(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
377 | 377 | ||
378 | /* framebuffer can be larger than crtc scanout area. */ | 378 | /* framebuffer can be larger than crtc scanout area. */ |
379 | regp->CRTC[NV_CIO_CRE_RPC0_INDEX] = | 379 | regp->CRTC[NV_CIO_CRE_RPC0_INDEX] = |
380 | XLATE(fb->pitch / 8, 8, NV_CIO_CRE_RPC0_OFFSET_10_8); | 380 | XLATE(fb->pitches[0] / 8, 8, NV_CIO_CRE_RPC0_OFFSET_10_8); |
381 | regp->CRTC[NV_CIO_CRE_42] = | 381 | regp->CRTC[NV_CIO_CRE_42] = |
382 | XLATE(fb->pitch / 8, 11, NV_CIO_CRE_42_OFFSET_11); | 382 | XLATE(fb->pitches[0] / 8, 11, NV_CIO_CRE_42_OFFSET_11); |
383 | regp->CRTC[NV_CIO_CRE_RPC1_INDEX] = mode->crtc_hdisplay < 1280 ? | 383 | regp->CRTC[NV_CIO_CRE_RPC1_INDEX] = mode->crtc_hdisplay < 1280 ? |
384 | MASK(NV_CIO_CRE_RPC1_LARGE) : 0x00; | 384 | MASK(NV_CIO_CRE_RPC1_LARGE) : 0x00; |
385 | regp->CRTC[NV_CIO_CRE_LSR_INDEX] = XLATE(horizBlankEnd, 6, NV_CIO_CRE_LSR_HBE_6) | | 385 | regp->CRTC[NV_CIO_CRE_LSR_INDEX] = XLATE(horizBlankEnd, 6, NV_CIO_CRE_LSR_HBE_6) | |
@@ -835,18 +835,18 @@ nv04_crtc_do_mode_set_base(struct drm_crtc *crtc, | |||
835 | NVWriteRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_GENERAL_CONTROL, | 835 | NVWriteRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_GENERAL_CONTROL, |
836 | regp->ramdac_gen_ctrl); | 836 | regp->ramdac_gen_ctrl); |
837 | 837 | ||
838 | regp->CRTC[NV_CIO_CR_OFFSET_INDEX] = drm_fb->pitch >> 3; | 838 | regp->CRTC[NV_CIO_CR_OFFSET_INDEX] = drm_fb->pitches[0] >> 3; |
839 | regp->CRTC[NV_CIO_CRE_RPC0_INDEX] = | 839 | regp->CRTC[NV_CIO_CRE_RPC0_INDEX] = |
840 | XLATE(drm_fb->pitch >> 3, 8, NV_CIO_CRE_RPC0_OFFSET_10_8); | 840 | XLATE(drm_fb->pitches[0] >> 3, 8, NV_CIO_CRE_RPC0_OFFSET_10_8); |
841 | regp->CRTC[NV_CIO_CRE_42] = | 841 | regp->CRTC[NV_CIO_CRE_42] = |
842 | XLATE(drm_fb->pitch / 8, 11, NV_CIO_CRE_42_OFFSET_11); | 842 | XLATE(drm_fb->pitches[0] / 8, 11, NV_CIO_CRE_42_OFFSET_11); |
843 | crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_RPC0_INDEX); | 843 | crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_RPC0_INDEX); |
844 | crtc_wr_cio_state(crtc, regp, NV_CIO_CR_OFFSET_INDEX); | 844 | crtc_wr_cio_state(crtc, regp, NV_CIO_CR_OFFSET_INDEX); |
845 | crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_42); | 845 | crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_42); |
846 | 846 | ||
847 | /* Update the framebuffer location. */ | 847 | /* Update the framebuffer location. */ |
848 | regp->fb_start = nv_crtc->fb.offset & ~3; | 848 | regp->fb_start = nv_crtc->fb.offset & ~3; |
849 | regp->fb_start += (y * drm_fb->pitch) + (x * drm_fb->bits_per_pixel / 8); | 849 | regp->fb_start += (y * drm_fb->pitches[0]) + (x * drm_fb->bits_per_pixel / 8); |
850 | nv_set_crtc_base(dev, nv_crtc->index, regp->fb_start); | 850 | nv_set_crtc_base(dev, nv_crtc->index, regp->fb_start); |
851 | 851 | ||
852 | /* Update the arbitration parameters. */ | 852 | /* Update the arbitration parameters. */ |
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 87921c88a95c..7567ff2510e0 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
@@ -1153,7 +1153,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, | |||
1153 | WREG32(EVERGREEN_GRPH_X_END + radeon_crtc->crtc_offset, target_fb->width); | 1153 | WREG32(EVERGREEN_GRPH_X_END + radeon_crtc->crtc_offset, target_fb->width); |
1154 | WREG32(EVERGREEN_GRPH_Y_END + radeon_crtc->crtc_offset, target_fb->height); | 1154 | WREG32(EVERGREEN_GRPH_Y_END + radeon_crtc->crtc_offset, target_fb->height); |
1155 | 1155 | ||
1156 | fb_pitch_pixels = target_fb->pitch / (target_fb->bits_per_pixel / 8); | 1156 | fb_pitch_pixels = target_fb->pitches[0] / (target_fb->bits_per_pixel / 8); |
1157 | WREG32(EVERGREEN_GRPH_PITCH + radeon_crtc->crtc_offset, fb_pitch_pixels); | 1157 | WREG32(EVERGREEN_GRPH_PITCH + radeon_crtc->crtc_offset, fb_pitch_pixels); |
1158 | WREG32(EVERGREEN_GRPH_ENABLE + radeon_crtc->crtc_offset, 1); | 1158 | WREG32(EVERGREEN_GRPH_ENABLE + radeon_crtc->crtc_offset, 1); |
1159 | 1159 | ||
@@ -1322,7 +1322,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, | |||
1322 | WREG32(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, target_fb->width); | 1322 | WREG32(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, target_fb->width); |
1323 | WREG32(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, target_fb->height); | 1323 | WREG32(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, target_fb->height); |
1324 | 1324 | ||
1325 | fb_pitch_pixels = target_fb->pitch / (target_fb->bits_per_pixel / 8); | 1325 | fb_pitch_pixels = target_fb->pitches[0] / (target_fb->bits_per_pixel / 8); |
1326 | WREG32(AVIVO_D1GRPH_PITCH + radeon_crtc->crtc_offset, fb_pitch_pixels); | 1326 | WREG32(AVIVO_D1GRPH_PITCH + radeon_crtc->crtc_offset, fb_pitch_pixels); |
1327 | WREG32(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1); | 1327 | WREG32(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1); |
1328 | 1328 | ||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 96d9ba96c87d..d3ffc18774a6 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c | |||
@@ -406,7 +406,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc, | |||
406 | if (!ASIC_IS_AVIVO(rdev)) { | 406 | if (!ASIC_IS_AVIVO(rdev)) { |
407 | /* crtc offset is from display base addr not FB location */ | 407 | /* crtc offset is from display base addr not FB location */ |
408 | base -= radeon_crtc->legacy_display_base_addr; | 408 | base -= radeon_crtc->legacy_display_base_addr; |
409 | pitch_pixels = fb->pitch / (fb->bits_per_pixel / 8); | 409 | pitch_pixels = fb->pitches[0] / (fb->bits_per_pixel / 8); |
410 | 410 | ||
411 | if (tiling_flags & RADEON_TILING_MACRO) { | 411 | if (tiling_flags & RADEON_TILING_MACRO) { |
412 | if (ASIC_IS_R300(rdev)) { | 412 | if (ASIC_IS_R300(rdev)) { |
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index 0dc749eb4222..cf2bf35b56b8 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c | |||
@@ -232,7 +232,7 @@ static int radeonfb_create(struct radeon_fbdev *rfbdev, | |||
232 | 232 | ||
233 | strcpy(info->fix.id, "radeondrmfb"); | 233 | strcpy(info->fix.id, "radeondrmfb"); |
234 | 234 | ||
235 | drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); | 235 | drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); |
236 | 236 | ||
237 | info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT; | 237 | info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT; |
238 | info->fbops = &radeonfb_ops; | 238 | info->fbops = &radeonfb_ops; |
@@ -275,7 +275,7 @@ static int radeonfb_create(struct radeon_fbdev *rfbdev, | |||
275 | DRM_INFO("vram apper at 0x%lX\n", (unsigned long)rdev->mc.aper_base); | 275 | DRM_INFO("vram apper at 0x%lX\n", (unsigned long)rdev->mc.aper_base); |
276 | DRM_INFO("size %lu\n", (unsigned long)radeon_bo_size(rbo)); | 276 | DRM_INFO("size %lu\n", (unsigned long)radeon_bo_size(rbo)); |
277 | DRM_INFO("fb depth is %d\n", fb->depth); | 277 | DRM_INFO("fb depth is %d\n", fb->depth); |
278 | DRM_INFO(" pitch is %d\n", fb->pitch); | 278 | DRM_INFO(" pitch is %d\n", fb->pitches[0]); |
279 | 279 | ||
280 | vga_switcheroo_client_fb_set(rdev->ddev->pdev, info); | 280 | vga_switcheroo_client_fb_set(rdev->ddev->pdev, info); |
281 | return 0; | 281 | return 0; |
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index 41a5d48e657b..95b93604b679 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c | |||
@@ -437,7 +437,7 @@ int radeon_crtc_do_set_base(struct drm_crtc *crtc, | |||
437 | 437 | ||
438 | crtc_offset_cntl = 0; | 438 | crtc_offset_cntl = 0; |
439 | 439 | ||
440 | pitch_pixels = target_fb->pitch / (target_fb->bits_per_pixel / 8); | 440 | pitch_pixels = target_fb->pitches[0] / (target_fb->bits_per_pixel / 8); |
441 | crtc_pitch = (((pitch_pixels * target_fb->bits_per_pixel) + | 441 | crtc_pitch = (((pitch_pixels * target_fb->bits_per_pixel) + |
442 | ((target_fb->bits_per_pixel * 8) - 1)) / | 442 | ((target_fb->bits_per_pixel * 8) - 1)) / |
443 | (target_fb->bits_per_pixel * 8)); | 443 | (target_fb->bits_per_pixel * 8)); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 760d04aee380..0585987f2945 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | |||
@@ -605,7 +605,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv, | |||
605 | 605 | ||
606 | /* XXX get the first 3 from the surface info */ | 606 | /* XXX get the first 3 from the surface info */ |
607 | vfbs->base.base.bits_per_pixel = mode_cmd->bpp; | 607 | vfbs->base.base.bits_per_pixel = mode_cmd->bpp; |
608 | vfbs->base.base.pitch = mode_cmd->pitch; | 608 | vfbs->base.base.pitches[0] = mode_cmd->pitch; |
609 | vfbs->base.base.depth = mode_cmd->depth; | 609 | vfbs->base.base.depth = mode_cmd->depth; |
610 | vfbs->base.base.width = mode_cmd->width; | 610 | vfbs->base.base.width = mode_cmd->width; |
611 | vfbs->base.base.height = mode_cmd->height; | 611 | vfbs->base.base.height = mode_cmd->height; |
@@ -719,7 +719,7 @@ static int do_dmabuf_define_gmrfb(struct drm_file *file_priv, | |||
719 | cmd->body.format.bitsPerPixel = framebuffer->base.bits_per_pixel; | 719 | cmd->body.format.bitsPerPixel = framebuffer->base.bits_per_pixel; |
720 | cmd->body.format.colorDepth = depth; | 720 | cmd->body.format.colorDepth = depth; |
721 | cmd->body.format.reserved = 0; | 721 | cmd->body.format.reserved = 0; |
722 | cmd->body.bytesPerLine = framebuffer->base.pitch; | 722 | cmd->body.bytesPerLine = framebuffer->base.pitches[0]; |
723 | cmd->body.ptr.gmrId = framebuffer->user_handle; | 723 | cmd->body.ptr.gmrId = framebuffer->user_handle; |
724 | cmd->body.ptr.offset = 0; | 724 | cmd->body.ptr.offset = 0; |
725 | 725 | ||
@@ -961,7 +961,7 @@ static int vmw_kms_new_framebuffer_dmabuf(struct vmw_private *dev_priv, | |||
961 | } | 961 | } |
962 | 962 | ||
963 | vfbd->base.base.bits_per_pixel = mode_cmd->bpp; | 963 | vfbd->base.base.bits_per_pixel = mode_cmd->bpp; |
964 | vfbd->base.base.pitch = mode_cmd->pitch; | 964 | vfbd->base.base.pitches[0] = mode_cmd->pitch; |
965 | vfbd->base.base.depth = mode_cmd->depth; | 965 | vfbd->base.base.depth = mode_cmd->depth; |
966 | vfbd->base.base.width = mode_cmd->width; | 966 | vfbd->base.base.width = mode_cmd->width; |
967 | vfbd->base.base.height = mode_cmd->height; | 967 | vfbd->base.base.height = mode_cmd->height; |
@@ -1243,7 +1243,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv, | |||
1243 | cmd->body.format.bitsPerPixel = vfb->base.bits_per_pixel; | 1243 | cmd->body.format.bitsPerPixel = vfb->base.bits_per_pixel; |
1244 | cmd->body.format.colorDepth = vfb->base.depth; | 1244 | cmd->body.format.colorDepth = vfb->base.depth; |
1245 | cmd->body.format.reserved = 0; | 1245 | cmd->body.format.reserved = 0; |
1246 | cmd->body.bytesPerLine = vfb->base.pitch; | 1246 | cmd->body.bytesPerLine = vfb->base.pitches[0]; |
1247 | cmd->body.ptr.gmrId = vfb->user_handle; | 1247 | cmd->body.ptr.gmrId = vfb->user_handle; |
1248 | cmd->body.ptr.offset = 0; | 1248 | cmd->body.ptr.offset = 0; |
1249 | 1249 | ||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c index 90c5e3928491..15a6805e48b0 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | |||
@@ -94,7 +94,7 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv) | |||
94 | return 0; | 94 | return 0; |
95 | fb = entry->base.crtc.fb; | 95 | fb = entry->base.crtc.fb; |
96 | 96 | ||
97 | return vmw_kms_write_svga(dev_priv, w, h, fb->pitch, | 97 | return vmw_kms_write_svga(dev_priv, w, h, fb->pitches[0], |
98 | fb->bits_per_pixel, fb->depth); | 98 | fb->bits_per_pixel, fb->depth); |
99 | } | 99 | } |
100 | 100 | ||
@@ -102,7 +102,7 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv) | |||
102 | entry = list_entry(lds->active.next, typeof(*entry), active); | 102 | entry = list_entry(lds->active.next, typeof(*entry), active); |
103 | fb = entry->base.crtc.fb; | 103 | fb = entry->base.crtc.fb; |
104 | 104 | ||
105 | vmw_kms_write_svga(dev_priv, fb->width, fb->height, fb->pitch, | 105 | vmw_kms_write_svga(dev_priv, fb->width, fb->height, fb->pitches[0], |
106 | fb->bits_per_pixel, fb->depth); | 106 | fb->bits_per_pixel, fb->depth); |
107 | } | 107 | } |
108 | 108 | ||
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 42c89b201ffd..2deb6f99f950 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -239,7 +239,8 @@ struct drm_framebuffer { | |||
239 | struct list_head head; | 239 | struct list_head head; |
240 | struct drm_mode_object base; | 240 | struct drm_mode_object base; |
241 | const struct drm_framebuffer_funcs *funcs; | 241 | const struct drm_framebuffer_funcs *funcs; |
242 | unsigned int pitch; | 242 | unsigned int pitches[4]; |
243 | unsigned int offsets[4]; | ||
243 | unsigned int width; | 244 | unsigned int width; |
244 | unsigned int height; | 245 | unsigned int height; |
245 | /* depth can be 15 or 16 */ | 246 | /* depth can be 15 or 16 */ |