Rev 6088 | Rev 6296 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6088 | Rev 6283 | ||
---|---|---|---|
Line 163... | Line 163... | ||
163 | mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, |
163 | mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, |
164 | sizes->surface_depth); |
164 | sizes->surface_depth); |
Line 165... | Line 165... | ||
165 | 165 | ||
166 | size = mode_cmd.pitches[0] * mode_cmd.height; |
166 | size = mode_cmd.pitches[0] * mode_cmd.height; |
- | 167 | size = PAGE_ALIGN(size); |
|
- | 168 | ||
- | 169 | /* If the FB is too big, just don't use it since fbdev is not very |
|
167 | size = PAGE_ALIGN(size); |
170 | * important and we should probably use that space with FBC or other |
- | 171 | * features. */ |
|
- | 172 | if (size * 2 < dev_priv->gtt.stolen_usable_size) |
|
- | 173 | obj = i915_gem_object_create_stolen(dev, size); |
|
168 | obj = main_fb_obj; |
174 | if (obj == NULL) |
169 | obj->map_and_fenceable=true; |
175 | obj = i915_gem_alloc_object(dev, size); |
170 | if (!obj) { |
176 | if (!obj) { |
171 | DRM_ERROR("failed to allocate framebuffer\n"); |
177 | DRM_ERROR("failed to allocate framebuffer\n"); |
172 | ret = -ENOMEM; |
178 | ret = -ENOMEM; |
173 | goto out; |
179 | goto out; |
Line 212... | Line 218... | ||
212 | int size, ret; |
218 | int size, ret; |
213 | bool prealloc = false; |
219 | bool prealloc = false; |
Line 214... | Line 220... | ||
214 | 220 | ||
Line 215... | Line -... | ||
215 | mutex_lock(&dev->struct_mutex); |
- | |
216 | 221 | mutex_lock(&dev->struct_mutex); |
|
217 | #if 0 |
222 | |
218 | if (intel_fb && |
223 | if (intel_fb && |
219 | (sizes->fb_width > intel_fb->base.width || |
224 | (sizes->fb_width > intel_fb->base.width || |
220 | sizes->fb_height > intel_fb->base.height)) { |
225 | sizes->fb_height > intel_fb->base.height)) { |
221 | DRM_DEBUG_KMS("BIOS fb too small (%dx%d), we require (%dx%d)," |
226 | DRM_DEBUG_KMS("BIOS fb too small (%dx%d), we require (%dx%d)," |
222 | " releasing it\n", |
227 | " releasing it\n", |
223 | intel_fb->base.width, intel_fb->base.height, |
228 | intel_fb->base.width, intel_fb->base.height, |
224 | sizes->fb_width, sizes->fb_height); |
229 | sizes->fb_width, sizes->fb_height); |
225 | drm_framebuffer_unreference(&intel_fb->base); |
230 | drm_framebuffer_unreference(&intel_fb->base); |
226 | intel_fb = ifbdev->fb = NULL; |
- | |
227 | } |
- | |
228 | #endif |
231 | intel_fb = ifbdev->fb = NULL; |
229 | 232 | } |
|
230 | if (!intel_fb || WARN_ON(!intel_fb->obj)) { |
233 | if (!intel_fb || WARN_ON(!intel_fb->obj)) { |
231 | DRM_DEBUG_KMS("no BIOS fb, allocating a new one\n"); |
234 | DRM_DEBUG_KMS("no BIOS fb, allocating a new one\n"); |
232 | ret = intelfb_alloc(helper, sizes); |
235 | ret = intelfb_alloc(helper, sizes); |
Line 251... | Line 254... | ||
251 | 254 | ||
Line 252... | Line 255... | ||
252 | info->par = helper; |
255 | info->par = helper; |
Line 253... | Line -... | ||
253 | - | ||
254 | fb = &ifbdev->fb->base; |
- | |
255 | - | ||
256 | if(main_framebuffer == NULL) |
256 | |
Line 257... | Line 257... | ||
257 | main_framebuffer = fb; |
257 | fb = &ifbdev->fb->base; |
Line 258... | Line 258... | ||
258 | 258 |