mirror of
				https://git.eden-emu.dev/eden-emu/eden.git
				synced 2025-10-25 19:03:17 +00:00 
			
		
		
		
	
		
			
				
	
	
	
	
		
			2.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.7 KiB
		
	
	
	
	
	
	
	
Android Driver Package Format
Contents
- meta.jsonthat follows- Schema
- <driver>.somain driver shared library
- *.soall 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 driver
- notadreno_utils.so,- notdmabufheap.so,- notgsl.so,- notllvm-glnext.so,- notllvm-qgl.so: patched-soname versions of libraries specific to each driver version
- android.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",
  ]
}