mirror of
https://github.com/bylaws/libadrenotools
synced 2024-11-21 14:29:15 -07:00
2.7 KiB
2.7 KiB
Android Driver Package Format
Contents
meta.json
that followsSchema
<driver>.so
main driver shared library*.so
all libraries depended on by the main driver library, these must have their sonames altered if they wish to replace the system version of the library
Example
meta.json
:
{
"schemaVersion": 1,
"name": "Qualcomm v615 Vulkan driver",
"description": "Proprietary Vulkan driver for Adreno 6xx and Adreno 7xx",
"author": "ByLaws",
"packageVersion": "2",
"vendor": "Qualcomm",
"driverVersion": "0.615.0",
"minApi": 27,
"libraryName": "vulkan.ad0615.so"
}
vulkan.ad0615.so
: main patched drivernotadreno_utils.so
,notdmabufheap.so
,notgsl.so
,notllvm-glnext.so
,notllvm-qgl.so
: patched-soname versions of libraries specific to each driver versionandroid.hardware.graphics.mappershim.so
,vendor.qti.hardware.display.mapperextensionsshim.so
,vendor.qti.hardware.display.mappershim.so
: qtimapper-shim libs
Creation
I recommend running blob-patcher.py to patch a set of blobs from a device dump with mapper ver as 5, then copying in the qtimapper-shim files from the adrenotools releases page.
$ mkdir outpkg
$ patch.py <device dump> outpkg vulkan.adreno.so vulkan.ad0615.so 1
$ vim outpkg/meta.json
$ cp qtimapper-shim-rel/* outpkg
Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ADPKG Schema",
"type": "object",
"properties": {
"schemaVersion": {
"type": "number",
"example": 1
},
"name": {
"type": "string",
"example": "Qualcomm Adreno Driver"
},
"vendor": {
"enum": [
"Qualcomm",
"Mesa"
],
},
"driverVersion": {
"type": "string",
"pattern": "^[0-9]+.[0-9]+.[0-9]+(-.+)?$",
"example": "512.604.0"
},
"author": {
"type": "string",
"example": "Billy Laws"
},
"description": {
"type": "string",
"description": "Additional description of the driver, this shouldn't contain redundant information that is already covered by the other fields such as the version and only denote details important for the user"
},
"packageVersion": {
"type": "string",
"example": "3029-bylaws"
},
"minApi": {
"type": "number",
"description": "The minimum Android API version required by the driver to function correctly",
"example": 27
},
"libraryName": {
"type": "string",
"description": "The name of the main shared library object",
"example": "vulkan.adreno.so"
},
},
"required": [
"schemaVersion",
"name",
"author",
"packageVersion",
"vendor",
"driverVersion",
"minApi",
]
}