]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/i915: Nuke INTEL_OUTPUT_FORMAT_INVALID
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 5 Feb 2021 20:23:22 +0000 (22:23 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 18 Feb 2021 16:13:49 +0000 (18:13 +0200)
We tend to use output_format!=RGB as a shorthand for YCbCr, but
this fails if we have a disabled crtc where output_format==INVALID.
We're now getting some fail from intel_color_check() when we have:
 hw.enable==false
 hw.ctm!=NULL
 output_format==INVALID

Let's avoid that by throwing INTEL_OUTPUT_FORMAT_INVALID to the
dumpster, and thus everything defaults to RGB when the crtc
is disabled.

This does beg the deeper question of how much of the state
should we in fact be validating when hw/uapi.enable==false.
And should we even be doing the uapi->hw copy when
uapi.enable==false? So far I've not been able to come up with
satisfactory answers for myself, so I'm putting it off for the
moment.

Cc: Lee Shawn C <shawn.c.lee@intel.com>
Fixes: 0aa5c3835c8a ("drm/i915: support two CSC module on gen11 and later")
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2964
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210205202322.27608-1-ville.syrjala@linux.intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
drivers/gpu/drm/i915/display/intel_crtc.c
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display_types.h

index 8bfa8fc2efdbb75f28f8b0ea389174e7330d62ae..88b44ac50aae10bfe56802f0114e177c28f15dde 100644 (file)
@@ -116,7 +116,6 @@ void intel_crtc_state_reset(struct intel_crtc_state *crtc_state,
        crtc_state->cpu_transcoder = INVALID_TRANSCODER;
        crtc_state->master_transcoder = INVALID_TRANSCODER;
        crtc_state->hsw_workaround_pipe = INVALID_PIPE;
-       crtc_state->output_format = INTEL_OUTPUT_FORMAT_INVALID;
        crtc_state->scaler_state.scaler_id = -1;
        crtc_state->mst_master_transcoder = INVALID_TRANSCODER;
 }
index 0b5bc18c4076efba96317a10a12c307fa2bb19fd..8c5e75265226079ab38784158d02378a774a380e 100644 (file)
@@ -8179,7 +8179,6 @@ static void snprintf_output_types(char *buf, size_t len,
 }
 
 static const char * const output_format_str[] = {
-       [INTEL_OUTPUT_FORMAT_INVALID] = "Invalid",
        [INTEL_OUTPUT_FORMAT_RGB] = "RGB",
        [INTEL_OUTPUT_FORMAT_YCBCR420] = "YCBCR4:2:0",
        [INTEL_OUTPUT_FORMAT_YCBCR444] = "YCBCR4:4:4",
@@ -8188,7 +8187,7 @@ static const char * const output_format_str[] = {
 static const char *output_formats(enum intel_output_format format)
 {
        if (format >= ARRAY_SIZE(output_format_str))
-               format = INTEL_OUTPUT_FORMAT_INVALID;
+               return "invalid";
        return output_format_str[format];
 }
 
index 07b7f5eae5877dfc783740c4395925c6f792f1b8..f3acc5a3c8145d754af4525deece1346e05887dc 100644 (file)
@@ -837,7 +837,6 @@ struct intel_crtc_wm_state {
 };
 
 enum intel_output_format {
-       INTEL_OUTPUT_FORMAT_INVALID,
        INTEL_OUTPUT_FORMAT_RGB,
        INTEL_OUTPUT_FORMAT_YCBCR420,
        INTEL_OUTPUT_FORMAT_YCBCR444,