* [master][RFC] Mesa recipie now provides GL frontend libs
@ 2019-09-14 13:51 Andrew F. Davis
2019-09-16 15:37 ` Robert Nelson
2019-09-16 15:43 ` Denys Dmytriyenko
0 siblings, 2 replies; 6+ messages in thread
From: Andrew F. Davis @ 2019-09-14 13:51 UTC (permalink / raw)
To: Denys Dmytriyenko, Gowtham Tammana, Eric Ruei; +Cc: meta-ti
Signed-off-by: Andrew F. Davis <afd@ti.com>
---
Hello all,
This is a preview change of our GPU driver stack. Mesa can now used to
provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
This greatly expands our supported extensions and improves compatibility
with software designed to work with Mesa and Mesa provided tooling. The
existing backend is now confined to just a DRI backend used to provide
the GLES1/2 functions. The extensions/compatibility on this part of the
stack will not change.
The Mesa-side-glue to interface with the SGX DRI blobs is currently
internal only until we can find the right way to distribute the patches
(recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
Currently they are on my internal only bitbucket, so those outside TI
will not be able to test just yet :( but can review this recipe patch
just the same.
What you need to do right now for this to have an effect is to change
your preferred provider of GL libs over in your distro layer to the
new mesa-pvr.
-PREFERRED_PROVIDER_virtual/egl = "ti-sgx-ddk-um"
-PREFERRED_PROVIDER_virtual/libgles1 = "ti-sgx-ddk-um"
-PREFERRED_PROVIDER_virtual/libgles2 = "ti-sgx-ddk-um"
-PREFERRED_PROVIDER_virtual/libgbm = "ti-sgx-ddk-um"
+PREFERRED_PROVIDER_virtual/egl = "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgles1 = "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgles2 = "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgbm = "mesa-pvr"
At some point I'd like this to just be "mesa" but with some bbappends to
change the repo and some per platform PACKAGECONFIG magic set so it
builds the same as this recipe.
All comments, opinions, and concerns welcome :)
Andrew
recipes-graphics/libgles/mesa-pvr_git.bb | 46 +++++++++++++++++++
.../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 28 ++---------
2 files changed, 49 insertions(+), 25 deletions(-)
create mode 100644 recipes-graphics/libgles/mesa-pvr_git.bb
diff --git a/recipes-graphics/libgles/mesa-pvr_git.bb b/recipes-graphics/libgles/mesa-pvr_git.bb
new file mode 100644
index 00000000..f66197c5
--- /dev/null
+++ b/recipes-graphics/libgles/mesa-pvr_git.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Mesa with IMG PVR DRI driver"
+
+HOMEPAGE = "http://mesa3d.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4"
+
+PV = "0.0+${PR}+gitr${SRCREV}"
+
+SRC_URI = "git://git@bitbucket.itg.ti.com/~a0226330/mesa.git;protocol=ssh;branch=${BRANCH}"
+BRANCH = "mesa-19.1.6-pvr-buildup"
+SRCREV = "ea27ae6fdaf9d813dc484113661afa6276cdd5da"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native wayland-native wayland libdrm wayland-protocols xorgproto libdrm ti-sgx-ddk-um"
+RDEPENDS_${PN} = "ti-sgx-ddk-um"
+EXTRANATIVEPATH += "chrpath-native"
+PROVIDES = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
+
+inherit meson pkgconfig python3native gettext distro_features_check
+
+BBCLASSEXTEND = "native nativesdk"
+
+ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan"
+
+EXTRA_OEMESON = " \
+ -Dshared-glapi=true \
+ -Dgallium-opencl=disabled \
+ -Dglx-read-only-text=true \
+ -Dplatforms=wayland,drm \
+ -Dglx=disabled \
+ -Ddri-drivers=pvr \
+ -Ddri3=false \
+ -Dgles1=true \
+ -Dgles2=true \
+ -Degl=true \
+ -Dgallium-drivers='' \
+ -Dvulkan-drivers='' \
+ -Dllvm=false \
+ -Dlibunwind=false \
+"
+
+# mesa tries to run cross-built gen_matypes on build machine to get struct size information
+EXTRA_OEMESON_append = " -Dasm=false"
+
+FILES_${PN} += " ${libdir}/dri/*"
diff --git a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
index 7a6f013e..f063e455 100644
--- a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
+++ b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
@@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://TI-Linux-Graphics-DDK-UM-Manifest.doc;md5=b17390502bc
PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "ti33x|ti43x|omap-a15|k3"
-PR = "r34"
+PR = "r35"
-BRANCH = "ti-img-sgx/thud/${PV}"
+BRANCH = "ti-img-sgx/thud/${PV}-mesa-experimental"
SRC_URI = "git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git;protocol=git;branch=${BRANCH}"
-SRCREV = "87d7e5c1e4db1bab048939c9719059d549c1e8dd"
+SRCREV = "a6c033f992d124cfc4ee1488b2565c20116f653c"
TARGET_PRODUCT_omap-a15 = "jacinto6evm"
TARGET_PRODUCT_ti33x = "ti335x"
@@ -23,23 +23,9 @@ INITSCRIPT_PARAMS = "defaults 8"
inherit update-rc.d
-PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm"
-
DEPENDS += "libdrm udev wayland wayland-protocols libffi expat"
RDEPENDS_${PN} += "libdrm libdrm-omap udev wayland wayland-protocols libffi expat"
-RPROVIDES_${PN} = "libegl libgles1 libgles2 libgbm"
-RPROVIDES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
-RPROVIDES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
-
-RREPLACES_${PN} = "libegl libgles1 libgles2 libgbm"
-RREPLACES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
-RREPLACES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
-
-RCONFLICTS_${PN} = "libegl libgles1 libgles2 libgbm"
-RCONFLICTS_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
-RCONFLICTS_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
-
# The actual SONAME is libGLESv2.so.2, so need to explicitly specify RPROVIDES for .so.1 here
RPROVIDES_${PN} += "libGLESv2.so.1"
@@ -54,20 +40,12 @@ do_install () {
FILES_${PN} = "${bindir}/*"
FILES_${PN} += " ${libdir}/*"
-FILES_${PN} += "${includedir}/*"
FILES_${PN} += "${sysconfdir}/*"
-PACKAGES =+ "${PN}-plugins"
-FILES_${PN}-plugins = "${libdir}/libsrv_init.so ${libdir}/libsrv_um.so ${libdir}/libglslcompiler.so ${libdir}/libPVRScopeServices.so ${libdir}/libGLESv2.so ${libdir}/libEGL.so ${libdir}/libGLES_CM.so ${libdir}/libpvrDRMWSEGL.so ${libdir}/libpvrGBMWSEGL.so ${libdir}/libpvrws_WAYLAND.so"
-RDEPENDS_${PN} += "${PN}-plugins"
-
-ALLOW_EMPTY_${PN}-plugins = "1"
-
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_SYSROOT_STRIP = "1"
INSANE_SKIP_${PN} += "dev-so ldflags useless-rpaths"
-INSANE_SKIP_${PN}-plugins = "dev-so"
INSANE_SKIP_${PN} += "already-stripped"
CLEANBROKEN = "1"
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [master][RFC] Mesa recipie now provides GL frontend libs
2019-09-14 13:51 [master][RFC] Mesa recipie now provides GL frontend libs Andrew F. Davis
@ 2019-09-16 15:37 ` Robert Nelson
2019-09-16 15:47 ` Andrew F. Davis
2019-09-16 15:43 ` Denys Dmytriyenko
1 sibling, 1 reply; 6+ messages in thread
From: Robert Nelson @ 2019-09-16 15:37 UTC (permalink / raw)
To: Andrew F. Davis; +Cc: meta-ti
On Sat, Sep 14, 2019 at 8:52 AM Andrew F. Davis <afd@ti.com> wrote:
>
> Signed-off-by: Andrew F. Davis <afd@ti.com>
> ---
>
> Hello all,
>
> This is a preview change of our GPU driver stack. Mesa can now used to
> provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
> This greatly expands our supported extensions and improves compatibility
> with software designed to work with Mesa and Mesa provided tooling. The
> existing backend is now confined to just a DRI backend used to provide
> the GLES1/2 functions. The extensions/compatibility on this part of the
> stack will not change.
>
> The Mesa-side-glue to interface with the SGX DRI blobs is currently
> internal only until we can find the right way to distribute the patches
> (recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
> Currently they are on my internal only bitbucket, so those outside TI
> will not be able to test just yet :( but can review this recipe patch
> just the same.
Count me in! This looks awesome, we'd like these for BeagleBoard asap
Pretty Please! ;)
Regards,
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [master][RFC] Mesa recipie now provides GL frontend libs
2019-09-14 13:51 [master][RFC] Mesa recipie now provides GL frontend libs Andrew F. Davis
2019-09-16 15:37 ` Robert Nelson
@ 2019-09-16 15:43 ` Denys Dmytriyenko
2019-09-16 15:52 ` Andrew F. Davis
1 sibling, 1 reply; 6+ messages in thread
From: Denys Dmytriyenko @ 2019-09-16 15:43 UTC (permalink / raw)
To: Andrew F. Davis; +Cc: meta-ti
Andrew,
Thanks for pushing this forward! I'll give it some thought and more thorough
review, but the first comment I had so far is that bbappend won't work for
this purpose, as it would modify Mesa recipe unconditionally and BSP layers
are not allowed to do that. Also, can the dependency between Mesa and DDK be
the other way around?
Denys
On Sat, Sep 14, 2019 at 09:51:51AM -0400, Andrew F. Davis wrote:
> Signed-off-by: Andrew F. Davis <afd@ti.com>
> ---
>
> Hello all,
>
> This is a preview change of our GPU driver stack. Mesa can now used to
> provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
> This greatly expands our supported extensions and improves compatibility
> with software designed to work with Mesa and Mesa provided tooling. The
> existing backend is now confined to just a DRI backend used to provide
> the GLES1/2 functions. The extensions/compatibility on this part of the
> stack will not change.
>
> The Mesa-side-glue to interface with the SGX DRI blobs is currently
> internal only until we can find the right way to distribute the patches
> (recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
> Currently they are on my internal only bitbucket, so those outside TI
> will not be able to test just yet :( but can review this recipe patch
> just the same.
>
> What you need to do right now for this to have an effect is to change
> your preferred provider of GL libs over in your distro layer to the
> new mesa-pvr.
>
> -PREFERRED_PROVIDER_virtual/egl = "ti-sgx-ddk-um"
> -PREFERRED_PROVIDER_virtual/libgles1 = "ti-sgx-ddk-um"
> -PREFERRED_PROVIDER_virtual/libgles2 = "ti-sgx-ddk-um"
> -PREFERRED_PROVIDER_virtual/libgbm = "ti-sgx-ddk-um"
> +PREFERRED_PROVIDER_virtual/egl = "mesa-pvr"
> +PREFERRED_PROVIDER_virtual/libgles1 = "mesa-pvr"
> +PREFERRED_PROVIDER_virtual/libgles2 = "mesa-pvr"
> +PREFERRED_PROVIDER_virtual/libgbm = "mesa-pvr"
>
> At some point I'd like this to just be "mesa" but with some bbappends to
> change the repo and some per platform PACKAGECONFIG magic set so it
> builds the same as this recipe.
>
> All comments, opinions, and concerns welcome :)
>
> Andrew
>
> recipes-graphics/libgles/mesa-pvr_git.bb | 46 +++++++++++++++++++
> .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 28 ++---------
> 2 files changed, 49 insertions(+), 25 deletions(-)
> create mode 100644 recipes-graphics/libgles/mesa-pvr_git.bb
>
> diff --git a/recipes-graphics/libgles/mesa-pvr_git.bb b/recipes-graphics/libgles/mesa-pvr_git.bb
> new file mode 100644
> index 00000000..f66197c5
> --- /dev/null
> +++ b/recipes-graphics/libgles/mesa-pvr_git.bb
> @@ -0,0 +1,46 @@
> +SUMMARY = "Mesa with IMG PVR DRI driver"
> +
> +HOMEPAGE = "http://mesa3d.org"
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4"
> +
> +PV = "0.0+${PR}+gitr${SRCREV}"
> +
> +SRC_URI = "git://git@bitbucket.itg.ti.com/~a0226330/mesa.git;protocol=ssh;branch=${BRANCH}"
> +BRANCH = "mesa-19.1.6-pvr-buildup"
> +SRCREV = "ea27ae6fdaf9d813dc484113661afa6276cdd5da"
> +
> +S = "${WORKDIR}/git"
> +
> +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native wayland-native wayland libdrm wayland-protocols xorgproto libdrm ti-sgx-ddk-um"
> +RDEPENDS_${PN} = "ti-sgx-ddk-um"
> +EXTRANATIVEPATH += "chrpath-native"
> +PROVIDES = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
> +
> +inherit meson pkgconfig python3native gettext distro_features_check
> +
> +BBCLASSEXTEND = "native nativesdk"
> +
> +ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan"
> +
> +EXTRA_OEMESON = " \
> + -Dshared-glapi=true \
> + -Dgallium-opencl=disabled \
> + -Dglx-read-only-text=true \
> + -Dplatforms=wayland,drm \
> + -Dglx=disabled \
> + -Ddri-drivers=pvr \
> + -Ddri3=false \
> + -Dgles1=true \
> + -Dgles2=true \
> + -Degl=true \
> + -Dgallium-drivers='' \
> + -Dvulkan-drivers='' \
> + -Dllvm=false \
> + -Dlibunwind=false \
> +"
> +
> +# mesa tries to run cross-built gen_matypes on build machine to get struct size information
> +EXTRA_OEMESON_append = " -Dasm=false"
> +
> +FILES_${PN} += " ${libdir}/dri/*"
> diff --git a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> index 7a6f013e..f063e455 100644
> --- a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> +++ b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> @@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://TI-Linux-Graphics-DDK-UM-Manifest.doc;md5=b17390502bc
> PACKAGE_ARCH = "${MACHINE_ARCH}"
> COMPATIBLE_MACHINE = "ti33x|ti43x|omap-a15|k3"
>
> -PR = "r34"
> +PR = "r35"
>
> -BRANCH = "ti-img-sgx/thud/${PV}"
> +BRANCH = "ti-img-sgx/thud/${PV}-mesa-experimental"
>
> SRC_URI = "git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git;protocol=git;branch=${BRANCH}"
> -SRCREV = "87d7e5c1e4db1bab048939c9719059d549c1e8dd"
> +SRCREV = "a6c033f992d124cfc4ee1488b2565c20116f653c"
>
> TARGET_PRODUCT_omap-a15 = "jacinto6evm"
> TARGET_PRODUCT_ti33x = "ti335x"
> @@ -23,23 +23,9 @@ INITSCRIPT_PARAMS = "defaults 8"
>
> inherit update-rc.d
>
> -PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm"
> -
> DEPENDS += "libdrm udev wayland wayland-protocols libffi expat"
> RDEPENDS_${PN} += "libdrm libdrm-omap udev wayland wayland-protocols libffi expat"
>
> -RPROVIDES_${PN} = "libegl libgles1 libgles2 libgbm"
> -RPROVIDES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> -RPROVIDES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> -
> -RREPLACES_${PN} = "libegl libgles1 libgles2 libgbm"
> -RREPLACES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> -RREPLACES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> -
> -RCONFLICTS_${PN} = "libegl libgles1 libgles2 libgbm"
> -RCONFLICTS_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> -RCONFLICTS_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> -
> # The actual SONAME is libGLESv2.so.2, so need to explicitly specify RPROVIDES for .so.1 here
> RPROVIDES_${PN} += "libGLESv2.so.1"
>
> @@ -54,20 +40,12 @@ do_install () {
>
> FILES_${PN} = "${bindir}/*"
> FILES_${PN} += " ${libdir}/*"
> -FILES_${PN} += "${includedir}/*"
> FILES_${PN} += "${sysconfdir}/*"
>
> -PACKAGES =+ "${PN}-plugins"
> -FILES_${PN}-plugins = "${libdir}/libsrv_init.so ${libdir}/libsrv_um.so ${libdir}/libglslcompiler.so ${libdir}/libPVRScopeServices.so ${libdir}/libGLESv2.so ${libdir}/libEGL.so ${libdir}/libGLES_CM.so ${libdir}/libpvrDRMWSEGL.so ${libdir}/libpvrGBMWSEGL.so ${libdir}/libpvrws_WAYLAND.so"
> -RDEPENDS_${PN} += "${PN}-plugins"
> -
> -ALLOW_EMPTY_${PN}-plugins = "1"
> -
> INHIBIT_PACKAGE_STRIP = "1"
> INHIBIT_SYSROOT_STRIP = "1"
>
> INSANE_SKIP_${PN} += "dev-so ldflags useless-rpaths"
> -INSANE_SKIP_${PN}-plugins = "dev-so"
> INSANE_SKIP_${PN} += "already-stripped"
>
> CLEANBROKEN = "1"
> --
> 2.17.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [master][RFC] Mesa recipie now provides GL frontend libs
2019-09-16 15:37 ` Robert Nelson
@ 2019-09-16 15:47 ` Andrew F. Davis
0 siblings, 0 replies; 6+ messages in thread
From: Andrew F. Davis @ 2019-09-16 15:47 UTC (permalink / raw)
To: Robert Nelson; +Cc: meta-ti
On 9/16/19 11:37 AM, Robert Nelson wrote:
> On Sat, Sep 14, 2019 at 8:52 AM Andrew F. Davis <afd@ti.com> wrote:
>>
>> Signed-off-by: Andrew F. Davis <afd@ti.com>
>> ---
>>
>> Hello all,
>>
>> This is a preview change of our GPU driver stack. Mesa can now used to
>> provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
>> This greatly expands our supported extensions and improves compatibility
>> with software designed to work with Mesa and Mesa provided tooling. The
>> existing backend is now confined to just a DRI backend used to provide
>> the GLES1/2 functions. The extensions/compatibility on this part of the
>> stack will not change.
>>
>> The Mesa-side-glue to interface with the SGX DRI blobs is currently
>> internal only until we can find the right way to distribute the patches
>> (recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
>> Currently they are on my internal only bitbucket, so those outside TI
>> will not be able to test just yet :( but can review this recipe patch
>> just the same.
>
> Count me in! This looks awesome, we'd like these for BeagleBoard asap
> Pretty Please! ;)
>
Can do! It's on it's way for all our supported SGX platforms, AM335x
included.
Andrew
> Regards,
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [master][RFC] Mesa recipie now provides GL frontend libs
2019-09-16 15:43 ` Denys Dmytriyenko
@ 2019-09-16 15:52 ` Andrew F. Davis
2019-09-16 16:20 ` Denys Dmytriyenko
0 siblings, 1 reply; 6+ messages in thread
From: Andrew F. Davis @ 2019-09-16 15:52 UTC (permalink / raw)
To: Denys Dmytriyenko; +Cc: meta-ti
On 9/16/19 11:43 AM, Denys Dmytriyenko wrote:
> Andrew,
>
> Thanks for pushing this forward! I'll give it some thought and more thorough
> review, but the first comment I had so far is that bbappend won't work for
> this purpose, as it would modify Mesa recipe unconditionally and BSP layers
> are not allowed to do that.
It wouldn't have to be unconditional would it, how do others change a
packages URL to a forked version?
> Also, can the dependency between Mesa and DDK be
> the other way around?
>
I'm not sure what you mean here, DDK depend on Mesa? If so I'm not sure
how that would work, Mesa provides the front-end libs, it has a link
time dependency on the backend driver (pvr_dri_support.so).
Well thinking a bit more I probably could make them build independently,
as Mesa dlopens the backend and relies on it exporting an interface that
Mesa defines, so really there is no built-time inter-dependency at all..
but what would that do for us?
Andrew
> Denys
>
>
> On Sat, Sep 14, 2019 at 09:51:51AM -0400, Andrew F. Davis wrote:
>> Signed-off-by: Andrew F. Davis <afd@ti.com>
>> ---
>>
>> Hello all,
>>
>> This is a preview change of our GPU driver stack. Mesa can now used to
>> provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
>> This greatly expands our supported extensions and improves compatibility
>> with software designed to work with Mesa and Mesa provided tooling. The
>> existing backend is now confined to just a DRI backend used to provide
>> the GLES1/2 functions. The extensions/compatibility on this part of the
>> stack will not change.
>>
>> The Mesa-side-glue to interface with the SGX DRI blobs is currently
>> internal only until we can find the right way to distribute the patches
>> (recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
>> Currently they are on my internal only bitbucket, so those outside TI
>> will not be able to test just yet :( but can review this recipe patch
>> just the same.
>>
>> What you need to do right now for this to have an effect is to change
>> your preferred provider of GL libs over in your distro layer to the
>> new mesa-pvr.
>>
>> -PREFERRED_PROVIDER_virtual/egl = "ti-sgx-ddk-um"
>> -PREFERRED_PROVIDER_virtual/libgles1 = "ti-sgx-ddk-um"
>> -PREFERRED_PROVIDER_virtual/libgles2 = "ti-sgx-ddk-um"
>> -PREFERRED_PROVIDER_virtual/libgbm = "ti-sgx-ddk-um"
>> +PREFERRED_PROVIDER_virtual/egl = "mesa-pvr"
>> +PREFERRED_PROVIDER_virtual/libgles1 = "mesa-pvr"
>> +PREFERRED_PROVIDER_virtual/libgles2 = "mesa-pvr"
>> +PREFERRED_PROVIDER_virtual/libgbm = "mesa-pvr"
>>
>> At some point I'd like this to just be "mesa" but with some bbappends to
>> change the repo and some per platform PACKAGECONFIG magic set so it
>> builds the same as this recipe.
>>
>> All comments, opinions, and concerns welcome :)
>>
>> Andrew
>>
>> recipes-graphics/libgles/mesa-pvr_git.bb | 46 +++++++++++++++++++
>> .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 28 ++---------
>> 2 files changed, 49 insertions(+), 25 deletions(-)
>> create mode 100644 recipes-graphics/libgles/mesa-pvr_git.bb
>>
>> diff --git a/recipes-graphics/libgles/mesa-pvr_git.bb b/recipes-graphics/libgles/mesa-pvr_git.bb
>> new file mode 100644
>> index 00000000..f66197c5
>> --- /dev/null
>> +++ b/recipes-graphics/libgles/mesa-pvr_git.bb
>> @@ -0,0 +1,46 @@
>> +SUMMARY = "Mesa with IMG PVR DRI driver"
>> +
>> +HOMEPAGE = "http://mesa3d.org"
>> +LICENSE = "MIT"
>> +LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4"
>> +
>> +PV = "0.0+${PR}+gitr${SRCREV}"
>> +
>> +SRC_URI = "git://git@bitbucket.itg.ti.com/~a0226330/mesa.git;protocol=ssh;branch=${BRANCH}"
>> +BRANCH = "mesa-19.1.6-pvr-buildup"
>> +SRCREV = "ea27ae6fdaf9d813dc484113661afa6276cdd5da"
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native wayland-native wayland libdrm wayland-protocols xorgproto libdrm ti-sgx-ddk-um"
>> +RDEPENDS_${PN} = "ti-sgx-ddk-um"
>> +EXTRANATIVEPATH += "chrpath-native"
>> +PROVIDES = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
>> +
>> +inherit meson pkgconfig python3native gettext distro_features_check
>> +
>> +BBCLASSEXTEND = "native nativesdk"
>> +
>> +ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan"
>> +
>> +EXTRA_OEMESON = " \
>> + -Dshared-glapi=true \
>> + -Dgallium-opencl=disabled \
>> + -Dglx-read-only-text=true \
>> + -Dplatforms=wayland,drm \
>> + -Dglx=disabled \
>> + -Ddri-drivers=pvr \
>> + -Ddri3=false \
>> + -Dgles1=true \
>> + -Dgles2=true \
>> + -Degl=true \
>> + -Dgallium-drivers='' \
>> + -Dvulkan-drivers='' \
>> + -Dllvm=false \
>> + -Dlibunwind=false \
>> +"
>> +
>> +# mesa tries to run cross-built gen_matypes on build machine to get struct size information
>> +EXTRA_OEMESON_append = " -Dasm=false"
>> +
>> +FILES_${PN} += " ${libdir}/dri/*"
>> diff --git a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
>> index 7a6f013e..f063e455 100644
>> --- a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
>> +++ b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
>> @@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://TI-Linux-Graphics-DDK-UM-Manifest.doc;md5=b17390502bc
>> PACKAGE_ARCH = "${MACHINE_ARCH}"
>> COMPATIBLE_MACHINE = "ti33x|ti43x|omap-a15|k3"
>>
>> -PR = "r34"
>> +PR = "r35"
>>
>> -BRANCH = "ti-img-sgx/thud/${PV}"
>> +BRANCH = "ti-img-sgx/thud/${PV}-mesa-experimental"
>>
>> SRC_URI = "git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git;protocol=git;branch=${BRANCH}"
>> -SRCREV = "87d7e5c1e4db1bab048939c9719059d549c1e8dd"
>> +SRCREV = "a6c033f992d124cfc4ee1488b2565c20116f653c"
>>
>> TARGET_PRODUCT_omap-a15 = "jacinto6evm"
>> TARGET_PRODUCT_ti33x = "ti335x"
>> @@ -23,23 +23,9 @@ INITSCRIPT_PARAMS = "defaults 8"
>>
>> inherit update-rc.d
>>
>> -PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm"
>> -
>> DEPENDS += "libdrm udev wayland wayland-protocols libffi expat"
>> RDEPENDS_${PN} += "libdrm libdrm-omap udev wayland wayland-protocols libffi expat"
>>
>> -RPROVIDES_${PN} = "libegl libgles1 libgles2 libgbm"
>> -RPROVIDES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
>> -RPROVIDES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
>> -
>> -RREPLACES_${PN} = "libegl libgles1 libgles2 libgbm"
>> -RREPLACES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
>> -RREPLACES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
>> -
>> -RCONFLICTS_${PN} = "libegl libgles1 libgles2 libgbm"
>> -RCONFLICTS_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
>> -RCONFLICTS_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
>> -
>> # The actual SONAME is libGLESv2.so.2, so need to explicitly specify RPROVIDES for .so.1 here
>> RPROVIDES_${PN} += "libGLESv2.so.1"
>>
>> @@ -54,20 +40,12 @@ do_install () {
>>
>> FILES_${PN} = "${bindir}/*"
>> FILES_${PN} += " ${libdir}/*"
>> -FILES_${PN} += "${includedir}/*"
>> FILES_${PN} += "${sysconfdir}/*"
>>
>> -PACKAGES =+ "${PN}-plugins"
>> -FILES_${PN}-plugins = "${libdir}/libsrv_init.so ${libdir}/libsrv_um.so ${libdir}/libglslcompiler.so ${libdir}/libPVRScopeServices.so ${libdir}/libGLESv2.so ${libdir}/libEGL.so ${libdir}/libGLES_CM.so ${libdir}/libpvrDRMWSEGL.so ${libdir}/libpvrGBMWSEGL.so ${libdir}/libpvrws_WAYLAND.so"
>> -RDEPENDS_${PN} += "${PN}-plugins"
>> -
>> -ALLOW_EMPTY_${PN}-plugins = "1"
>> -
>> INHIBIT_PACKAGE_STRIP = "1"
>> INHIBIT_SYSROOT_STRIP = "1"
>>
>> INSANE_SKIP_${PN} += "dev-so ldflags useless-rpaths"
>> -INSANE_SKIP_${PN}-plugins = "dev-so"
>> INSANE_SKIP_${PN} += "already-stripped"
>>
>> CLEANBROKEN = "1"
>> --
>> 2.17.1
>>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [master][RFC] Mesa recipie now provides GL frontend libs
2019-09-16 15:52 ` Andrew F. Davis
@ 2019-09-16 16:20 ` Denys Dmytriyenko
0 siblings, 0 replies; 6+ messages in thread
From: Denys Dmytriyenko @ 2019-09-16 16:20 UTC (permalink / raw)
To: Andrew F. Davis; +Cc: meta-ti
On Mon, Sep 16, 2019 at 11:52:42AM -0400, Andrew F. Davis wrote:
> On 9/16/19 11:43 AM, Denys Dmytriyenko wrote:
> > Andrew,
> >
> > Thanks for pushing this forward! I'll give it some thought and more thorough
> > review, but the first comment I had so far is that bbappend won't work for
> > this purpose, as it would modify Mesa recipe unconditionally and BSP layers
> > are not allowed to do that.
>
> It wouldn't have to be unconditional would it, how do others change a
> packages URL to a forked version?
It's harder to make bbappends unconditional. The Yocto Project Compatible
requirement states that a mere inclusion of a layer should not alter core
recipes in unconditional way. Any such changes should be explicitly enabled by
either a separate variable, or only applicable to those platforms defined by
the layer. This requirement was originally for BSP layers (which meta-ti is)
and later extended to other layers, including Distros. That's why a lot of
forking and customizations was done in meta-arago, and not in meta-ti. As an
example, here's a proper bbappend in meta-ti, that only makes alterations for
our platforms - note that every variable uses ti-soc override, which was added
to easily address all TI platforms:
http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-core/udev/eudev_%25.bbappend
This means that adding meta-ti layer into your setup, but building for non-TI
platform, won't change SRC_URI and PR variables, as well, as do_install() task
for core eudev recipe.
Actually, instead of using a bbappend, having a modified mesa-pvr recipe that
PROVIDES="mesa" is a better alternative, as setting PREFERRED_PROVIDER easily
satisfies the above requirement.
> > Also, can the dependency between Mesa and DDK be
> > the other way around?
> >
>
> I'm not sure what you mean here, DDK depend on Mesa? If so I'm not sure
> how that would work, Mesa provides the front-end libs, it has a link
> time dependency on the backend driver (pvr_dri_support.so).
>
> Well thinking a bit more I probably could make them build independently,
> as Mesa dlopens the backend and relies on it exporting an interface that
> Mesa defines, so really there is no built-time inter-dependency at all..
> but what would that do for us?
Are there any other precedents for Mesa to have a separate backend driver that
gets built on its own? Making generic Mesa (if we ever want to upstream this
support) build-depend on platform-specific component would be questionable.
--
Denys
> Andrew
>
> > Denys
> >
> >
> > On Sat, Sep 14, 2019 at 09:51:51AM -0400, Andrew F. Davis wrote:
> >> Signed-off-by: Andrew F. Davis <afd@ti.com>
> >> ---
> >>
> >> Hello all,
> >>
> >> This is a preview change of our GPU driver stack. Mesa can now used to
> >> provide the GL frontend libraries (EGL/GBM) for our SGX based systems.
> >> This greatly expands our supported extensions and improves compatibility
> >> with software designed to work with Mesa and Mesa provided tooling. The
> >> existing backend is now confined to just a DRI backend used to provide
> >> the GLES1/2 functions. The extensions/compatibility on this part of the
> >> stack will not change.
> >>
> >> The Mesa-side-glue to interface with the SGX DRI blobs is currently
> >> internal only until we can find the right way to distribute the patches
> >> (recipe patches in meta-ti or as a fork of Mesa hosted on git.ti.com).
> >> Currently they are on my internal only bitbucket, so those outside TI
> >> will not be able to test just yet :( but can review this recipe patch
> >> just the same.
> >>
> >> What you need to do right now for this to have an effect is to change
> >> your preferred provider of GL libs over in your distro layer to the
> >> new mesa-pvr.
> >>
> >> -PREFERRED_PROVIDER_virtual/egl = "ti-sgx-ddk-um"
> >> -PREFERRED_PROVIDER_virtual/libgles1 = "ti-sgx-ddk-um"
> >> -PREFERRED_PROVIDER_virtual/libgles2 = "ti-sgx-ddk-um"
> >> -PREFERRED_PROVIDER_virtual/libgbm = "ti-sgx-ddk-um"
> >> +PREFERRED_PROVIDER_virtual/egl = "mesa-pvr"
> >> +PREFERRED_PROVIDER_virtual/libgles1 = "mesa-pvr"
> >> +PREFERRED_PROVIDER_virtual/libgles2 = "mesa-pvr"
> >> +PREFERRED_PROVIDER_virtual/libgbm = "mesa-pvr"
> >>
> >> At some point I'd like this to just be "mesa" but with some bbappends to
> >> change the repo and some per platform PACKAGECONFIG magic set so it
> >> builds the same as this recipe.
> >>
> >> All comments, opinions, and concerns welcome :)
> >>
> >> Andrew
> >>
> >> recipes-graphics/libgles/mesa-pvr_git.bb | 46 +++++++++++++++++++
> >> .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 28 ++---------
> >> 2 files changed, 49 insertions(+), 25 deletions(-)
> >> create mode 100644 recipes-graphics/libgles/mesa-pvr_git.bb
> >>
> >> diff --git a/recipes-graphics/libgles/mesa-pvr_git.bb b/recipes-graphics/libgles/mesa-pvr_git.bb
> >> new file mode 100644
> >> index 00000000..f66197c5
> >> --- /dev/null
> >> +++ b/recipes-graphics/libgles/mesa-pvr_git.bb
> >> @@ -0,0 +1,46 @@
> >> +SUMMARY = "Mesa with IMG PVR DRI driver"
> >> +
> >> +HOMEPAGE = "http://mesa3d.org"
> >> +LICENSE = "MIT"
> >> +LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4"
> >> +
> >> +PV = "0.0+${PR}+gitr${SRCREV}"
> >> +
> >> +SRC_URI = "git://git@bitbucket.itg.ti.com/~a0226330/mesa.git;protocol=ssh;branch=${BRANCH}"
> >> +BRANCH = "mesa-19.1.6-pvr-buildup"
> >> +SRCREV = "ea27ae6fdaf9d813dc484113661afa6276cdd5da"
> >> +
> >> +S = "${WORKDIR}/git"
> >> +
> >> +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native wayland-native wayland libdrm wayland-protocols xorgproto libdrm ti-sgx-ddk-um"
> >> +RDEPENDS_${PN} = "ti-sgx-ddk-um"
> >> +EXTRANATIVEPATH += "chrpath-native"
> >> +PROVIDES = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
> >> +
> >> +inherit meson pkgconfig python3native gettext distro_features_check
> >> +
> >> +BBCLASSEXTEND = "native nativesdk"
> >> +
> >> +ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan"
> >> +
> >> +EXTRA_OEMESON = " \
> >> + -Dshared-glapi=true \
> >> + -Dgallium-opencl=disabled \
> >> + -Dglx-read-only-text=true \
> >> + -Dplatforms=wayland,drm \
> >> + -Dglx=disabled \
> >> + -Ddri-drivers=pvr \
> >> + -Ddri3=false \
> >> + -Dgles1=true \
> >> + -Dgles2=true \
> >> + -Degl=true \
> >> + -Dgallium-drivers='' \
> >> + -Dvulkan-drivers='' \
> >> + -Dllvm=false \
> >> + -Dlibunwind=false \
> >> +"
> >> +
> >> +# mesa tries to run cross-built gen_matypes on build machine to get struct size information
> >> +EXTRA_OEMESON_append = " -Dasm=false"
> >> +
> >> +FILES_${PN} += " ${libdir}/dri/*"
> >> diff --git a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> >> index 7a6f013e..f063e455 100644
> >> --- a/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> >> +++ b/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
> >> @@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://TI-Linux-Graphics-DDK-UM-Manifest.doc;md5=b17390502bc
> >> PACKAGE_ARCH = "${MACHINE_ARCH}"
> >> COMPATIBLE_MACHINE = "ti33x|ti43x|omap-a15|k3"
> >>
> >> -PR = "r34"
> >> +PR = "r35"
> >>
> >> -BRANCH = "ti-img-sgx/thud/${PV}"
> >> +BRANCH = "ti-img-sgx/thud/${PV}-mesa-experimental"
> >>
> >> SRC_URI = "git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git;protocol=git;branch=${BRANCH}"
> >> -SRCREV = "87d7e5c1e4db1bab048939c9719059d549c1e8dd"
> >> +SRCREV = "a6c033f992d124cfc4ee1488b2565c20116f653c"
> >>
> >> TARGET_PRODUCT_omap-a15 = "jacinto6evm"
> >> TARGET_PRODUCT_ti33x = "ti335x"
> >> @@ -23,23 +23,9 @@ INITSCRIPT_PARAMS = "defaults 8"
> >>
> >> inherit update-rc.d
> >>
> >> -PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm"
> >> -
> >> DEPENDS += "libdrm udev wayland wayland-protocols libffi expat"
> >> RDEPENDS_${PN} += "libdrm libdrm-omap udev wayland wayland-protocols libffi expat"
> >>
> >> -RPROVIDES_${PN} = "libegl libgles1 libgles2 libgbm"
> >> -RPROVIDES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> >> -RPROVIDES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> >> -
> >> -RREPLACES_${PN} = "libegl libgles1 libgles2 libgbm"
> >> -RREPLACES_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> >> -RREPLACES_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> >> -
> >> -RCONFLICTS_${PN} = "libegl libgles1 libgles2 libgbm"
> >> -RCONFLICTS_${PN}-dev = "libegl-dev libgles1-dev libgles2-dev libgbm-dev"
> >> -RCONFLICTS_${PN}-dbg = "libegl-dbg libgles1-dbg libgles2-dbg libgbm-dbg"
> >> -
> >> # The actual SONAME is libGLESv2.so.2, so need to explicitly specify RPROVIDES for .so.1 here
> >> RPROVIDES_${PN} += "libGLESv2.so.1"
> >>
> >> @@ -54,20 +40,12 @@ do_install () {
> >>
> >> FILES_${PN} = "${bindir}/*"
> >> FILES_${PN} += " ${libdir}/*"
> >> -FILES_${PN} += "${includedir}/*"
> >> FILES_${PN} += "${sysconfdir}/*"
> >>
> >> -PACKAGES =+ "${PN}-plugins"
> >> -FILES_${PN}-plugins = "${libdir}/libsrv_init.so ${libdir}/libsrv_um.so ${libdir}/libglslcompiler.so ${libdir}/libPVRScopeServices.so ${libdir}/libGLESv2.so ${libdir}/libEGL.so ${libdir}/libGLES_CM.so ${libdir}/libpvrDRMWSEGL.so ${libdir}/libpvrGBMWSEGL.so ${libdir}/libpvrws_WAYLAND.so"
> >> -RDEPENDS_${PN} += "${PN}-plugins"
> >> -
> >> -ALLOW_EMPTY_${PN}-plugins = "1"
> >> -
> >> INHIBIT_PACKAGE_STRIP = "1"
> >> INHIBIT_SYSROOT_STRIP = "1"
> >>
> >> INSANE_SKIP_${PN} += "dev-so ldflags useless-rpaths"
> >> -INSANE_SKIP_${PN}-plugins = "dev-so"
> >> INSANE_SKIP_${PN} += "already-stripped"
> >>
> >> CLEANBROKEN = "1"
> >> --
> >> 2.17.1
> >>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-09-16 16:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-09-14 13:51 [master][RFC] Mesa recipie now provides GL frontend libs Andrew F. Davis
2019-09-16 15:37 ` Robert Nelson
2019-09-16 15:47 ` Andrew F. Davis
2019-09-16 15:43 ` Denys Dmytriyenko
2019-09-16 15:52 ` Andrew F. Davis
2019-09-16 16:20 ` Denys Dmytriyenko
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.