From: Jani Nikula <jani.nikula@intel.com> To: dri-devel@lists.freedesktop.org Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org Subject: [PATCH 13/25] drm/edid: convert drm_mode_std() and children to drm_edid Date: Fri, 6 May 2022 13:10:20 +0300 [thread overview] Message-ID: <f56ff5831c2c8cbfb9c575c32020a84c3b09db87.1651830938.git.jani.nikula@intel.com> (raw) In-Reply-To: <cover.1651830938.git.jani.nikula@intel.com> We'll need to propagate drm_edid everywhere. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/drm_edid.c | 52 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 27655da6ef9c..4b2d3453fc5c 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2655,11 +2655,11 @@ find_gtf2(const struct detailed_timing *descriptor, void *data) /* Secondary GTF curve kicks in above some break frequency */ static int -drm_gtf2_hbreak(const struct edid *edid) +drm_gtf2_hbreak(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.hfreq_start_khz) != 12); @@ -2667,11 +2667,11 @@ drm_gtf2_hbreak(const struct edid *edid) } static int -drm_gtf2_2c(const struct edid *edid) +drm_gtf2_2c(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.c) != 13); @@ -2679,11 +2679,11 @@ drm_gtf2_2c(const struct edid *edid) } static int -drm_gtf2_m(const struct edid *edid) +drm_gtf2_m(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.m) != 14); @@ -2691,11 +2691,11 @@ drm_gtf2_m(const struct edid *edid) } static int -drm_gtf2_k(const struct edid *edid) +drm_gtf2_k(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.k) != 16); @@ -2703,11 +2703,11 @@ drm_gtf2_k(const struct edid *edid) } static int -drm_gtf2_2j(const struct edid *edid) +drm_gtf2_2j(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.j) != 17); @@ -2715,12 +2715,14 @@ drm_gtf2_2j(const struct edid *edid) } /* Get standard timing level (CVT/GTF/DMT). */ -static int standard_timing_level(const struct edid *edid) +static int standard_timing_level(const struct drm_edid *drm_edid) { + const struct edid *edid = drm_edid->edid; + if (edid->revision >= 2) { if (edid->revision >= 4 && (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF)) return LEVEL_CVT; - if (drm_gtf2_hbreak(edid)) + if (drm_gtf2_hbreak(drm_edid)) return LEVEL_GTF2; if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) return LEVEL_GTF; @@ -2752,9 +2754,9 @@ static int drm_mode_hsync(const struct drm_display_mode *mode) * Take the standard timing params (in this case width, aspect, and refresh) * and convert them into a real mode using CVT/GTF/DMT. */ -static struct drm_display_mode * -drm_mode_std(struct drm_connector *connector, const struct edid *edid, - const struct std_timing *t) +static struct drm_display_mode *drm_mode_std(struct drm_connector *connector, + const struct drm_edid *drm_edid, + const struct std_timing *t) { struct drm_device *dev = connector->dev; struct drm_display_mode *m, *mode = NULL; @@ -2764,7 +2766,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, >> EDID_TIMING_ASPECT_SHIFT; unsigned vfreq = (t->vfreq_aspect & EDID_TIMING_VFREQ_MASK) >> EDID_TIMING_VFREQ_SHIFT; - int timing_level = standard_timing_level(edid); + int timing_level = standard_timing_level(drm_edid); if (bad_std_timing(t->hsize, t->vfreq_aspect)) return NULL; @@ -2775,7 +2777,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, vrefresh_rate = vfreq + 60; /* the vdisplay is calculated based on the aspect ratio */ if (aspect_ratio == 0) { - if (edid->revision < 3) + if (drm_edid->edid->revision < 3) vsize = hsize; else vsize = (hsize * 10) / 16; @@ -2818,7 +2820,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, } /* check whether it can be found in default mode table */ - if (drm_monitor_supports_rb(edid)) { + if (drm_monitor_supports_rb(drm_edid->edid)) { mode = drm_mode_find_dmt(dev, hsize, vsize, vrefresh_rate, true); if (mode) @@ -2844,14 +2846,14 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); if (!mode) return NULL; - if (drm_mode_hsync(mode) > drm_gtf2_hbreak(edid)) { + if (drm_mode_hsync(mode) > drm_gtf2_hbreak(drm_edid)) { drm_mode_destroy(dev, mode); mode = drm_gtf_mode_complex(dev, hsize, vsize, vrefresh_rate, 0, 0, - drm_gtf2_m(edid), - drm_gtf2_2c(edid), - drm_gtf2_k(edid), - drm_gtf2_2j(edid)); + drm_gtf2_m(drm_edid), + drm_gtf2_2c(drm_edid), + drm_gtf2_k(drm_edid), + drm_gtf2_2j(drm_edid)); } break; case LEVEL_CVT: @@ -3342,7 +3344,7 @@ do_standard_modes(const struct detailed_timing *timing, void *c) const struct std_timing *std = &data->data.timings[i]; struct drm_display_mode *newmode; - newmode = drm_mode_std(connector, closure->drm_edid->edid, std); + newmode = drm_mode_std(connector, closure->drm_edid, std); if (newmode) { drm_mode_probed_add(connector, newmode); closure->modes++; @@ -3367,7 +3369,7 @@ static int add_standard_modes(struct drm_connector *connector, for (i = 0; i < EDID_STD_TIMINGS; i++) { struct drm_display_mode *newmode; - newmode = drm_mode_std(connector, drm_edid->edid, + newmode = drm_mode_std(connector, drm_edid, &drm_edid->edid->standard_timings[i]); if (newmode) { drm_mode_probed_add(connector, newmode); -- 2.30.2
WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@intel.com> To: dri-devel@lists.freedesktop.org Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org Subject: [Intel-gfx] [PATCH 13/25] drm/edid: convert drm_mode_std() and children to drm_edid Date: Fri, 6 May 2022 13:10:20 +0300 [thread overview] Message-ID: <f56ff5831c2c8cbfb9c575c32020a84c3b09db87.1651830938.git.jani.nikula@intel.com> (raw) In-Reply-To: <cover.1651830938.git.jani.nikula@intel.com> We'll need to propagate drm_edid everywhere. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/drm_edid.c | 52 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 27655da6ef9c..4b2d3453fc5c 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2655,11 +2655,11 @@ find_gtf2(const struct detailed_timing *descriptor, void *data) /* Secondary GTF curve kicks in above some break frequency */ static int -drm_gtf2_hbreak(const struct edid *edid) +drm_gtf2_hbreak(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.hfreq_start_khz) != 12); @@ -2667,11 +2667,11 @@ drm_gtf2_hbreak(const struct edid *edid) } static int -drm_gtf2_2c(const struct edid *edid) +drm_gtf2_2c(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.c) != 13); @@ -2679,11 +2679,11 @@ drm_gtf2_2c(const struct edid *edid) } static int -drm_gtf2_m(const struct edid *edid) +drm_gtf2_m(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.m) != 14); @@ -2691,11 +2691,11 @@ drm_gtf2_m(const struct edid *edid) } static int -drm_gtf2_k(const struct edid *edid) +drm_gtf2_k(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.k) != 16); @@ -2703,11 +2703,11 @@ drm_gtf2_k(const struct edid *edid) } static int -drm_gtf2_2j(const struct edid *edid) +drm_gtf2_2j(const struct drm_edid *drm_edid) { const struct detailed_timing *descriptor = NULL; - drm_for_each_detailed_block(edid, find_gtf2, &descriptor); + drm_for_each_detailed_block(drm_edid->edid, find_gtf2, &descriptor); BUILD_BUG_ON(offsetof(typeof(*descriptor), data.other_data.data.range.formula.gtf2.j) != 17); @@ -2715,12 +2715,14 @@ drm_gtf2_2j(const struct edid *edid) } /* Get standard timing level (CVT/GTF/DMT). */ -static int standard_timing_level(const struct edid *edid) +static int standard_timing_level(const struct drm_edid *drm_edid) { + const struct edid *edid = drm_edid->edid; + if (edid->revision >= 2) { if (edid->revision >= 4 && (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF)) return LEVEL_CVT; - if (drm_gtf2_hbreak(edid)) + if (drm_gtf2_hbreak(drm_edid)) return LEVEL_GTF2; if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) return LEVEL_GTF; @@ -2752,9 +2754,9 @@ static int drm_mode_hsync(const struct drm_display_mode *mode) * Take the standard timing params (in this case width, aspect, and refresh) * and convert them into a real mode using CVT/GTF/DMT. */ -static struct drm_display_mode * -drm_mode_std(struct drm_connector *connector, const struct edid *edid, - const struct std_timing *t) +static struct drm_display_mode *drm_mode_std(struct drm_connector *connector, + const struct drm_edid *drm_edid, + const struct std_timing *t) { struct drm_device *dev = connector->dev; struct drm_display_mode *m, *mode = NULL; @@ -2764,7 +2766,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, >> EDID_TIMING_ASPECT_SHIFT; unsigned vfreq = (t->vfreq_aspect & EDID_TIMING_VFREQ_MASK) >> EDID_TIMING_VFREQ_SHIFT; - int timing_level = standard_timing_level(edid); + int timing_level = standard_timing_level(drm_edid); if (bad_std_timing(t->hsize, t->vfreq_aspect)) return NULL; @@ -2775,7 +2777,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, vrefresh_rate = vfreq + 60; /* the vdisplay is calculated based on the aspect ratio */ if (aspect_ratio == 0) { - if (edid->revision < 3) + if (drm_edid->edid->revision < 3) vsize = hsize; else vsize = (hsize * 10) / 16; @@ -2818,7 +2820,7 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, } /* check whether it can be found in default mode table */ - if (drm_monitor_supports_rb(edid)) { + if (drm_monitor_supports_rb(drm_edid->edid)) { mode = drm_mode_find_dmt(dev, hsize, vsize, vrefresh_rate, true); if (mode) @@ -2844,14 +2846,14 @@ drm_mode_std(struct drm_connector *connector, const struct edid *edid, mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); if (!mode) return NULL; - if (drm_mode_hsync(mode) > drm_gtf2_hbreak(edid)) { + if (drm_mode_hsync(mode) > drm_gtf2_hbreak(drm_edid)) { drm_mode_destroy(dev, mode); mode = drm_gtf_mode_complex(dev, hsize, vsize, vrefresh_rate, 0, 0, - drm_gtf2_m(edid), - drm_gtf2_2c(edid), - drm_gtf2_k(edid), - drm_gtf2_2j(edid)); + drm_gtf2_m(drm_edid), + drm_gtf2_2c(drm_edid), + drm_gtf2_k(drm_edid), + drm_gtf2_2j(drm_edid)); } break; case LEVEL_CVT: @@ -3342,7 +3344,7 @@ do_standard_modes(const struct detailed_timing *timing, void *c) const struct std_timing *std = &data->data.timings[i]; struct drm_display_mode *newmode; - newmode = drm_mode_std(connector, closure->drm_edid->edid, std); + newmode = drm_mode_std(connector, closure->drm_edid, std); if (newmode) { drm_mode_probed_add(connector, newmode); closure->modes++; @@ -3367,7 +3369,7 @@ static int add_standard_modes(struct drm_connector *connector, for (i = 0; i < EDID_STD_TIMINGS; i++) { struct drm_display_mode *newmode; - newmode = drm_mode_std(connector, drm_edid->edid, + newmode = drm_mode_std(connector, drm_edid, &drm_edid->edid->standard_timings[i]); if (newmode) { drm_mode_probed_add(connector, newmode); -- 2.30.2
next prev parent reply other threads:[~2022-05-06 10:11 UTC|newest] Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-06 10:10 [PATCH 00/25] drm/edid: introduce struct drm_edid Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 01/25] drm/edid: use else-if in CTA extension parsing Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 17:47 ` Ville Syrjälä 2022-05-06 17:47 ` [Intel-gfx] " Ville Syrjälä 2022-05-06 10:10 ` [PATCH 02/25] drm/edid: convert drm_for_each_detailed_block() to edid iter Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 17:50 ` Ville Syrjälä 2022-05-06 17:50 ` [Intel-gfx] " Ville Syrjälä 2022-05-06 10:10 ` [PATCH 03/25] drm/edid: add struct drm_edid container Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-10 6:10 ` Nautiyal, Ankit K 2022-05-10 6:10 ` [Intel-gfx] " Nautiyal, Ankit K 2022-05-06 10:10 ` [PATCH 04/25] drm/edid: start propagating drm_edid to lower levels Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 05/25] drm/edid: keep propagating drm_edid to display info Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:16 ` Jani Nikula 2022-05-06 10:16 ` [Intel-gfx] " Jani Nikula 2022-05-10 6:08 ` Nautiyal, Ankit K 2022-05-10 6:08 ` [Intel-gfx] " Nautiyal, Ankit K 2022-05-06 10:10 ` [PATCH 06/25] drm/edid: propagate drm_edid to drm_edid_to_eld() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 07/25] drm/edid: convert drm_edid_connector_update() to drm_edid fully Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 08/25] drm/edid: convert struct detailed_mode_closure to drm_edid Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 09/25] drm/edid: convert drm_mode_detailed() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 10/25] drm/edid: convert drm_dmt_modes_for_range() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 11/25] drm/edid: convert drm_gtf_modes_for_range() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 12/25] drm/edid: convert drm_cvt_modes_for_range() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` Jani Nikula [this message] 2022-05-06 10:10 ` [Intel-gfx] [PATCH 13/25] drm/edid: convert drm_mode_std() and children " Jani Nikula 2022-05-06 10:10 ` [PATCH 14/25] drm/edid: convert mode_in_range() and drm_monitor_supports_rb() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 15/25] drm/edid: convert get_monitor_name() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 16/25] drm/edid: convert drm_for_each_detailed_block() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 17/25] drm/edid: add drm_edid helper for drm_edid_to_sad() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 18:05 ` Ville Syrjälä 2022-05-06 18:05 ` [Intel-gfx] " Ville Syrjälä 2022-05-07 10:21 ` Jani Nikula 2022-05-07 10:21 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 18/25] drm/edid: add drm_edid helper for drm_edid_to_speaker_allocation() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 19/25] drm/edid: add drm_edid helper for drm_detect_hdmi_monitor() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 20/25] drm/edid: add drm_edid helper for drm_detect_monitor_audio() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 21/25] drm/edid: convert cea_db_iter_edid_begin() to drm_edid Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 22/25] drm/edid: convert drm_edid_iter_begin() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 23/25] drm/edid: add drm_edid helper for drm_update_tile_info() Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 24/25] drm/displayid: convert to drm_edid Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 10:10 ` [PATCH 25/25] drm/edid: convert version_greater() " Jani Nikula 2022-05-06 10:10 ` [Intel-gfx] " Jani Nikula 2022-05-06 11:12 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/edid: introduce struct drm_edid Patchwork 2022-05-06 11:12 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2022-05-06 11:42 ` amdgpu sparse warnings (was: Re: ✗ Fi.CI.SPARSE: warning for drm/edid: introduce struct drm_edid) Jani Nikula 2022-05-06 11:42 ` Jani Nikula 2022-05-06 11:42 ` [Intel-gfx] " Jani Nikula 2022-05-06 14:15 ` Deucher, Alexander 2022-05-06 14:15 ` Deucher, Alexander 2022-05-06 14:15 ` [Intel-gfx] " Deucher, Alexander 2022-05-06 11:38 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/edid: introduce struct drm_edid Patchwork 2022-05-06 12:23 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/edid: introduce struct drm_edid (rev2) Patchwork 2022-05-06 12:23 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2022-05-06 12:47 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=f56ff5831c2c8cbfb9c575c32020a84c3b09db87.1651830938.git.jani.nikula@intel.com \ --to=jani.nikula@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.