[Mesa-dev] RFC about anv change that should be applicable to radv

Tapani Pälli tapani.palli at intel.com
Fri Jun 29 05:46:57 UTC 2018



On 06/27/2018 06:25 PM, Mauro Rossi wrote:
> Hi,
> 
> Il giorno mer 27 giu 2018 alle ore 10:41 Tapani Pälli 
> <tapani.palli at intel.com <mailto:tapani.palli at intel.com>> ha scritto:
> 
>     Hi;
> 
>     On 06/13/2018 09:32 AM, Mauro Rossi wrote:
>      > +Samuel Pitoiset
>      >
>      >
>      > 2018-06-11 22:31 GMT+02:00 Mauro Rossi <issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>
>      > <mailto:issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>>>:
>      >
>      >     Hi Bas,
>      >
>      >     commit [1] removed a check on 'supported' attribute in
>      >     src/intel/vulkan/anv_entrypoints_gen.py
>      >
>      >     Should the check on 'supported' attribute be removed also in
>      >     src/amd/vulkan/radv_entrypoints_gen.py ?
> 
>     Yes
> 
> 
> Infact with that change the vulkan.radv module works with amdgpu (dc=1) 
> on HD7790,
> I'm going to submit the patch to mesa-dev.
> 
> 
>      >     Thanks for your feedback
>      >     Mauro
>      >
>      >     [1]
>      >
>     https://cgit.freedesktop.org/mesa/mesa/commit/?id=63525ba730e3d8a466d7f6382a2b91f4c75dd171
>      >   
>       <https://cgit.freedesktop.org/mesa/mesa/commit/?id=63525ba730e3d8a466d7f6382a2b91f4c75dd171>
>      >
>      >
>      >
>      > Hi Sam, Bas,
>      >
>      > there is an important matter regarding Android builds (android-x86)
>      >
>      > I have a series of patches for Android makefiles to build radv
>     for that
>      > platform,
>      > they are building but they require the change in
>      > src/amd/vulkan/radv_entrypoints_gen.py
>      > to have the necessary entrypoints and vulkan apps starting to work.
>      >
>      > What I forgot to say is that I have the Android building rules
>     ready to
>      > submit to mesa-dev,
>      > but they require to build libLLVM with a different name e.g
>     libLLVM60 or
>      > libLLVM_mesa and set the correct HAVE_LLVM properly
>      >
>      > The patches themselves would break the Android build for Intel,
>     because
>      > amd tree is built unconditionally,
>      > but the libLLVM"for mesa" shared library is not in place in AOSP,
>     Intel
>      > builds and not even in android-x86 oreo,
> 
>     This *should* not be a problem for us since it's the dependencies
>     set in
>     product.mk <http://product.mk> that define what libraries will be
>     built. Android-IA
>     (nowadays "Celadon") should just not then list the library name built
>     for radv.
> 
> 
> If vulkan.radv is not added to PRODUCT_PACKAGES list then it should not 
> be a problem for Android-IA
> 
> The problem I'm referring to is the libLLVM shared dependency in itself
> 
> AOSP builds libLLVM from external/llvm for its own purposes, version 3.9 
> is bundled with for Oreo branches,
> recent mesa have ceased support for that version, so we cannot avoid 
> building the bundled libLLVM and for mesa we need to build libLLVM50 
> (different shared library module name)
> because Android Build system does not allow for duplicated shared 
> libraries module names.
> 
> If this is not a problem I will submit the patches with Android building 
> rules assuming that llvm shared library can be the current i.e. libLLVM,
> but in reality to build vulkan.radv for Android, libLLVM must be version 
> 5.0 or later and requires "the trick" to side-build another 
> external/llvm50 project.

Hmm that sucks but I guess there is no other way around it :/

> This setup does not have many users, but upstream the Android radv 
> patches could make sense, if it's not disruptive for other users.
> If someone know a different way or view please let me know.
> 
> 
> 
>     One issue is that anv currently builds as
>     'vulkan.$(TARGET_BOARD_PLATFORM)' which is very generic, we should
>     probably have something like vulkan.anv.$(TARGET_BOARD_PLATFORM)
>     instead
>     and then use ro.hardware.vulkan=vulkan.anv.$(TARGET_BOARD_PLATFORM) in
>     device.mk <http://device.mk> so that Android finds it (?)
> 
> 
> vulkan.anv should be ok, as the vulkan HAL module name should not need 
> to depend on the $(TARGET_BOARD_PLATFORM) label
> 
> If I recall correctly for a 'vulkan.anv' named module the property is 
> set as:
> 
> setpropro.hardware.vulkan anv
> 
> if set as ro.hardware.vulkan vulkan.anv the module may not be found.
> 
> In android-x86 we plan to set  the property in init.sh, according to the 
> loaded drmfb module, for available vulkan hals:
> 
> for inteldrmfb setprop ro.hardware.vulkan anv
> for amdgpudrmfb setprop ro.hardware.vulkan radv
> [in the future as example] forvirtiodrmfbsetpropro.hardware.vulkan virgl

I chose to include product platform there because "preferred paths" for 
Vulkan HAL module [1] are:

/vendor/lib/hw/vulkan.<ro.product.platform>.so
/vendor/lib64/hw/vulkan.<ro.product.platform>.so

Celadon sets name in device.mk like this:
PRODUCT_PROPERTY_OVERRIDES += ro.hardware.vulkan=project-celadon

I don't think product name is explicitly required but maybe it would be 
good to be there if it is "preferred".

[1] https://source.android.com/devices/graphics/implement-vulkan


> Mauro
> 
> 
> 
>      > so I wanted to start discussing about how to integrate ravd for
>     Android
>      > in a way that does not break other drivers builds,
>      > if there are other interested users.
>      >
>      > Mauro
> 
>     // Tapani
> 


More information about the mesa-dev mailing list