[Intel-xe] [PATCH 1/9] fixup! drm/xe/display: Implement display support
Jani Nikula
jani.nikula at intel.com
Mon Apr 24 11:41:38 UTC 2023
On Fri, 21 Apr 2023, Lucas De Marchi <lucas.demarchi at intel.com> wrote:
> On Thu, Apr 20, 2023 at 11:49:46AM +0300, Jani Nikula wrote:
>>On Wed, 19 Apr 2023, Lucas De Marchi <lucas.demarchi at intel.com> wrote:
>>> On Wed, Apr 19, 2023 at 03:39:39PM +0300, Jani Nikula wrote:
>>>>Build the i915 display object files in i915-display sub-directory, to
>>>>increase clarity over what's coming from i915, and to simplify the rule
>>>>to build the object files.
>>>>
>>>>Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>>>>---
>>>> drivers/gpu/drm/xe/Makefile | 165 +++++++++++++++++-------------------
>>>> 1 file changed, 78 insertions(+), 87 deletions(-)
>>>>
>>>>diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>>>>index aceca651de57..9fa4aaad6b8f 100644
>>>>--- a/drivers/gpu/drm/xe/Makefile
>>>>+++ b/drivers/gpu/drm/xe/Makefile
>>>>@@ -105,100 +105,20 @@ subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
>>>> -Ddrm_i915_gem_object=xe_bo \
>>>> -Ddrm_i915_private=xe_device
>>>
>>> by leaving them on the same dir I was actually thinking if it would not
>>> be possible to add a display/Makefile so these additional defines here
>>> are added as subdir-ccflags only there.
>>
>>This is my understanding, I may be wrong:
>>
>>* If you want subdir-ccflags-y to only apply within a subdirectory, you
>> need to descend to the subdirectory using "obj-y += subdir" and have a
>> standalone Makefile.
>>
>>* If you use "include $(src)/subdir/Makefile", subdir-ccflags-y
>> specified there applies to the parent directory.
>>
>>* If you descend to the subdirectory using "obj-y += subdir", I don't
>> think you can have the parent and subdirectory Makefiles add objects
>> to the same module.
>
> true, but the snippet below does the trick for me. The problem is: it
> doesn't work due to the include dep:
>
> xe_device_types.h -> intel_display_core.h -> {the-display-world}.h
That's basically the same problem as i915_drv.h -> intel_display_core.h
in i915 land, and the solution is pretty much the same also: make the
display substruct member a pointer opaque to non-display code, and
allocate it dynamically.
That's what all the display header and include refactoring have
gradually been leading up to, but this one's just massively disruptive.
BR,
Jani.
>
> Anyway, here is what I used to remove the cflags from the !display
> sources:
>
> -------------------8<-----------------
> Subject: [PATCH] WIP cflags display removal
>
> ---
> drivers/gpu/drm/xe/Makefile | 36 +++++++++++++++++++++---------------
> 1 file changed, 21 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index ee4a95beec20..fea31cfc3de6 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -96,24 +96,13 @@ xe-y += xe_bb.o \
> xe_wa.o \
> xe_wopcm.o
>
> -# i915 Display compat #defines and #includes
> -subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
> - -I$(srctree)/$(src)/display/ext \
> - -I$(srctree)/$(src)/compat-i915-headers \
> - -I$(srctree)/drivers/gpu/drm/xe/display/ \
> - -I$(srctree)/drivers/gpu/drm/i915/display/ \
> - -Ddrm_i915_gem_object=xe_bo \
> - -Ddrm_i915_private=xe_device
> -
> -CFLAGS_i915-display/intel_fbdev.o = $(call cc-disable-warning, override-init)
> -
> # Rule to build display code shared with i915
> $(obj)/i915-display/%.o: $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
> $(call cmd,force_checksrc)
> $(call if_changed_rule,cc_o_c)
>
> # Display code specific to xe
> -xe-$(CONFIG_DRM_XE_DISPLAY) += \
> +xe-display += \
> xe_display.o \
> display/xe_fb_pin.o \
> display/xe_hdcp_gsc.o \
> @@ -126,7 +115,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> display/ext/intel_pch.o
>
> # Display code shared with i915
> -xe-$(CONFIG_DRM_XE_DISPLAY) += \
> +xe-display += \
> i915-display/icl_dsi.o \
> i915-display/intel_atomic.o \
> i915-display/intel_atomic_plane.o \
> @@ -197,15 +186,32 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> i915-display/skl_watermark.o
>
> ifeq ($(CONFIG_ACPI),y)
> - xe-$(CONFIG_DRM_XE_DISPLAY) += \
> + xe-display += \
> i915-display/intel_acpi.o \
> i915-display/intel_opregion.o
> endif
>
> ifeq ($(CONFIG_DRM_FBDEV_EMULATION),y)
> - xe-$(CONFIG_DRM_XE_DISPLAY) += i915-display/intel_fbdev.o
> + xe-display += i915-display/intel_fbdev.o
> endif
>
> +# i915 Display compat #defines and #includes
> +xe-display-ccflags += \
> + -I$(srctree)/$(src)/display/ext \
> + -I$(srctree)/$(src)/compat-i915-headers \
> + -I$(srctree)/drivers/gpu/drm/xe/display/ \
> + -I$(srctree)/drivers/gpu/drm/i915/display/ \
> + -Ddrm_i915_gem_object=xe_bo \
> + -Ddrm_i915_private=xe_device
> +
> +CFLAGS_i915-display/intel_fbdev.o = $(call cc-disable-warning, override-init)
> +
> +# Apply CFAGS to all display sources
> +$(foreach d,$(xe-display), \
> + $(eval CFLAGS_$(d) += $(xe-display-ccflags)))
> +
> +xe-$(CONFIG_DRM_XE_DISPLAY) += $(xe-display)
> +
> obj-$(CONFIG_DRM_XE) += xe.o
> obj-$(CONFIG_DRM_XE_KUNIT_TEST) += tests/
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-xe
mailing list