From: Alex D. <ale...@gm...> - 2009-07-01 17:14:30
|
On Wed, Jul 1, 2009 at 1:04 PM, Jesse Barnes<jb...@vi...> wrote: > On Wed, 1 Jul 2009 12:22:17 -0400 > Alex Deucher <ale...@gm...> wrote: > >> On Wed, Jul 1, 2009 at 12:19 PM, Alex Deucher<ale...@gm...> >> wrote: >> > On Wed, Jul 1, 2009 at 12:11 PM, Jesse >> > Barnes<jb...@vi...> wrote: >> >> On Wed, 1 Jul 2009 11:23:50 +0200 >> >> Maarten Maathuis <mad...@gm...> wrote: >> >> >> >>> DRM_MODE_SCALE_NON_GPU was intended to let the monitor do the >> >>> scaling, in case you have a CRT or the monitors scalers are >> >>> better. I think your new name choice is less than ideal. >> >> >> >> If that's what it's supposed to be, then yes, it's not ideal. >> >> There was some debate on the IRC channel about what it meant... >> >> >> >> If it's a monitor thing, how is it different from "none" or >> >> "center"? Is there some way of telling the monitor to scale or not? >> > >> > "none" and "center" would send different mode timing to the monitor. >> > In the driver, you either send the actual mode timing to the monitor >> > (scale == none) or you send native mode timing (scale == center || >> > scale == full || scale == aspect). For example with DVI monitors >> > some users prefer to use the GPU's scaler over the monitor's and >> > vice versa. >> >> I.e., with "none", a monitor would get actual 800x600 timing for a >> mode, even if the monitor's native mode was 1024x768. The monitor >> would then to the scaling or centering, etc. > > Here's an updated patch. Thanks Alex and Maarten. > > -- > > Now that we're using the scaling property in the Intel driver I noticed > that the names were a bit confusing. I've corrected them according to > our discussion on IRC and the mailing list, though I've left out > potential new additions for a new scaling property with an integer (or > two) for the scaling factor. None of the drivers implement that today, > but if someone wants to do it, I think it could be done with the > addition of a single new type and a new property to describe the > scaling factor in the X and Y directions. > > Signed-off-by: Jesse Barnes <jb...@vi...> Acked-by: Alex Deucher <ale...@gm...> > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 8fab789..41ed5b8 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -68,10 +68,10 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list) > */ > static struct drm_prop_enum_list drm_scaling_mode_enum_list[] = > { > - { DRM_MODE_SCALE_NON_GPU, "Non-GPU" }, > - { DRM_MODE_SCALE_FULLSCREEN, "Fullscreen" }, > - { DRM_MODE_SCALE_NO_SCALE, "No scale" }, > - { DRM_MODE_SCALE_ASPECT, "Aspect" }, > + { DRM_MODE_SCALE_NONE, "None" }, > + { DRM_MODE_SCALE_FULLSCREEN, "Full" }, > + { DRM_MODE_SCALE_CENTER, "Center" }, > + { DRM_MODE_SCALE_ASPECT, "Full aspect" }, > }; > > static struct drm_prop_enum_list drm_dithering_mode_enum_list[] = > diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c > index 9564ca4..1e02ade 100644 > --- a/drivers/gpu/drm/i915/intel_lvds.c > +++ b/drivers/gpu/drm/i915/intel_lvds.c > @@ -335,7 +335,7 @@ static bool intel_lvds_mode_fixup(struct drm_encoder *encoder, > I915_WRITE(BCLRPAT_B, 0); > > switch (lvds_priv->fitting_mode) { > - case DRM_MODE_SCALE_NO_SCALE: > + case DRM_MODE_SCALE_CENTER: > /* > * For centered modes, we have to calculate border widths & > * heights and modify the values programmed into the CRTC. > @@ -671,9 +671,8 @@ static int intel_lvds_set_property(struct drm_connector *connector, > connector->encoder) { > struct drm_crtc *crtc = connector->encoder->crtc; > struct intel_lvds_priv *lvds_priv = intel_output->dev_priv; > - if (value == DRM_MODE_SCALE_NON_GPU) { > - DRM_DEBUG_KMS(I915_LVDS, > - "non_GPU property is unsupported\n"); > + if (value == DRM_MODE_SCALE_NONE) { > + DRM_DEBUG_KMS(I915_LVDS, "no scaling not supported\n"); > return 0; > } > if (lvds_priv->fitting_mode == value) { > diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h > index ae304cc..b56fc4b 100644 > --- a/include/drm/drm_mode.h > +++ b/include/drm/drm_mode.h > @@ -68,10 +68,11 @@ > #define DRM_MODE_DPMS_OFF 3 > > /* Scaling mode options */ > -#define DRM_MODE_SCALE_NON_GPU 0 > -#define DRM_MODE_SCALE_FULLSCREEN 1 > -#define DRM_MODE_SCALE_NO_SCALE 2 > -#define DRM_MODE_SCALE_ASPECT 3 > +#define DRM_MODE_SCALE_NONE 0 /* Unmodified timing (display or > + software can still scale) */ > +#define DRM_MODE_SCALE_FULLSCREEN 1 /* Full screen, ignore aspect */ > +#define DRM_MODE_SCALE_CENTER 2 /* Centered, no scaling */ > +#define DRM_MODE_SCALE_ASPECT 3 /* Full screen, preserve aspect */ > > /* Dithering mode options */ > #define DRM_MODE_DITHERING_OFF 0 > > |