Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
On Wed, Mar 27, 2013 at 3:09 AM, Jesse Barnes jbar...@virtuousgeek.org wrote: If for example the BIOS fb is too small for the dual pipe config we detect, we may have valid timings and such, but no fb. The pfit case also hits this path (though currently only fastboots if you hack your mode clock to match). But even when the BIOS fb is to small and the BIOS config uses the pfit, we /should/ have an fb around. Looking a bit closer I think the confusion stems from you reading out the adjusted mode, but treating it like the requested mode. I think it'd be much more solid if we store the read-out mode in the adjusted_mode (won't work otherwise with hw state cross-checking anyway), and then do two comparisons here: - Does the request mode (plus everything else) match? If so, just do an fb_set_base call. - Does the adjusted mode match (plus the entire output routing ofc)? That means there's either the vga plane or a pfit in-between which we don't like. If possible we can then play some tricks to avoid the full modeset. The reason that I'm a bit freaked about about your change here is that in a lot of places we treat crtc-fb == NULL as no mode set. So I fear we're breaking a few too many assumptions here with that hack, and it simply needs more thought about what we should actually check. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
On Wed, Mar 27, 2013 at 01:49:47PM +0100, Daniel Vetter wrote: On Wed, Mar 27, 2013 at 3:09 AM, Jesse Barnes jbar...@virtuousgeek.org wrote: If for example the BIOS fb is too small for the dual pipe config we detect, we may have valid timings and such, but no fb. The pfit case also hits this path (though currently only fastboots if you hack your mode clock to match). But even when the BIOS fb is to small and the BIOS config uses the pfit, we /should/ have an fb around. Looking a bit closer I think the confusion stems from you reading out the adjusted mode, but treating it like the requested mode. I think it'd be much more solid if we store the read-out mode in the adjusted_mode (won't work otherwise with hw state cross-checking anyway), and then do two comparisons here: - Does the request mode (plus everything else) match? If so, just do an fb_set_base call. - Does the adjusted mode match (plus the entire output routing ofc)? That means there's either the vga plane or a pfit in-between which we don't like. If possible we can then play some tricks to avoid the full modeset. The reason that I'm a bit freaked about about your change here is that in a lot of places we treat crtc-fb == NULL as no mode set. So I fear we're breaking a few too many assumptions here with that hack, and it simply needs more thought about what we should actually check. The check here is why we were so enthusiastic about moving to a pipe_config framework that could match up a configured pipe with an invalid fb and then just exchange the fb. -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
On Wed, 27 Mar 2013 13:49:47 +0100 Daniel Vetter dan...@ffwll.ch wrote: On Wed, Mar 27, 2013 at 3:09 AM, Jesse Barnes jbar...@virtuousgeek.org wrote: If for example the BIOS fb is too small for the dual pipe config we detect, we may have valid timings and such, but no fb. The pfit case also hits this path (though currently only fastboots if you hack your mode clock to match). But even when the BIOS fb is to small and the BIOS config uses the pfit, we /should/ have an fb around. Looking a bit closer I think the confusion stems from you reading out the adjusted mode, but treating it like the requested mode. I think it'd be much more solid if we store the read-out mode in the adjusted_mode (won't work otherwise with hw state cross-checking anyway), and then do two comparisons here: Yeah, there's an fb, but it may not be what we want. So we don't allocate it and thus crtc-fb is empty. - Does the request mode (plus everything else) match? If so, just do an fb_set_base call. - Does the adjusted mode match (plus the entire output routing ofc)? That means there's either the vga plane or a pfit in-between which we don't like. If possible we can then play some tricks to avoid the full modeset. Right, I'm trying to play tricks here for sure. The reason that I'm a bit freaked about about your change here is that in a lot of places we treat crtc-fb == NULL as no mode set. So I fear we're breaking a few too many assumptions here with that hack, and it simply needs more thought about what we should actually check. Yeah I was worried about that too. Maybe we should use crtc-active for that everywhere? With the modeset rework and pipe config stuff, we should be able to drop this in favor of something that looks at the pipe_config and figures out the minimal mode set sequence required. -- Jesse Barnes, Intel Open Source Technology Center ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
In case we don't get an fb from the BIOS, we may still be able to re-use existing state and flip a new buffer. Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- drivers/gpu/drm/i915/intel_display.c |4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0f3c036..f24da1a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8109,10 +8109,8 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set, /* We should be able to check here if the fb has the same properties * and then just flip_or_move it */ if (set-crtc-fb != set-fb) { - /* If we have no fb then treat it as a full mode set */ if (set-crtc-fb == NULL) { - DRM_DEBUG_KMS(crtc has no fb, full mode set\n); - config-mode_changed = true; + config-fb_changed = true; } else if (set-fb == NULL) { config-mode_changed = true; } else if (set-fb-depth != set-crtc-fb-depth) { -- 1.7.9.5 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
On Tue, Mar 26, 2013 at 04:33:11PM -0700, Jesse Barnes wrote: In case we don't get an fb from the BIOS, we may still be able to re-use existing state and flip a new buffer. Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org This hack here smells extremely fishy. Where do we come up with no fb, but a real mode and want to actually fastboot? -Daniel --- drivers/gpu/drm/i915/intel_display.c |4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0f3c036..f24da1a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8109,10 +8109,8 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set, /* We should be able to check here if the fb has the same properties * and then just flip_or_move it */ if (set-crtc-fb != set-fb) { - /* If we have no fb then treat it as a full mode set */ if (set-crtc-fb == NULL) { - DRM_DEBUG_KMS(crtc has no fb, full mode set\n); - config-mode_changed = true; + config-fb_changed = true; } else if (set-fb == NULL) { config-mode_changed = true; } else if (set-fb-depth != set-crtc-fb-depth) { -- 1.7.9.5 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set
If for example the BIOS fb is too small for the dual pipe config we detect, we may have valid timings and such, but no fb. The pfit case also hits this path (though currently only fastboots if you hack your mode clock to match). -- Jesse Barnes, Intel Open Source Technology Center Original message From: Daniel Vetter dan...@ffwll.ch Date: 03/26/2013 5:03 PM (GMT-08:00) To: Jesse Barnes jbar...@virtuousgeek.org Cc: intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH 8/9] drm/i915: treat no fb - fb as simple flip instead of full mode set On Tue, Mar 26, 2013 at 04:33:11PM -0700, Jesse Barnes wrote: In case we don't get an fb from the BIOS, we may still be able to re-use existing state and flip a new buffer. Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org This hack here smells extremely fishy. Where do we come up with no fb, but a real mode and want to actually fastboot? -Daniel --- drivers/gpu/drm/i915/intel_display.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0f3c036..f24da1a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8109,10 +8109,8 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set, /* We should be able to check here if the fb has the same properties * and then just flip_or_move it */ if (set-crtc-fb != set-fb) { - /* If we have no fb then treat it as a full mode set */ if (set-crtc-fb == NULL) { - DRM_DEBUG_KMS(crtc has no fb, full mode set\n); - config-mode_changed = true; + config-fb_changed = true; } else if (set-fb == NULL) { config-mode_changed = true; } else if (set-fb-depth != set-crtc-fb-depth) { -- 1.7.9.5 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx