[OnePlus 9 Pro] JohnTheFarm3r:
First, a small "introduction":

Would you like to gain up to 10-15% more performance in GPU-based tasks just by replacing the GPU drivers with something newer?

Sadly, Qualcomm doesn't seem to care about updating the GPU drivers on older devices or generally updating drivers at all after the initial release of the device.

Both OpenGL and Vulkan APIs are mostly outdated on our devices, and thanks to some folks, they extracted the GPU drivers from newer devices/GPUs, added some tweaks, and made it flashable to any device using XY compatible GPU.

Now, the issue with this device (The OnePlus 9 Pro) is that it doesn't have an A12 compatible TWRP, and these drivers REQUIRE TWRP, otherwise they can't be flashed. The other problem is that most of the Custom A12 ROMs come with their Vendor partitions being only RO (Read Only). In order to flash the custom drivers, Vendor partitions need to be mounted as RW (Read-Write) and it requires a certain amount of free space so that the drivers can be replaced by the custom ones (GPU drivers are located in the Vendor partition).

So, let's start with the tutorial...It might get a bit lengthy, and the process is a bit time-consuming and requires patience and careful execution. (I'm not gonna write about basics like how to use Fastboot and ALL of the commands, you should be familiar with some basics, otherwise, maybe you should skip the tutorial and stay on the old drivers, I don't have much free time to explain the basics, sorry).

WARNING: This tutorial requires FORMATING your DATA during the process. BACKUP YOUR DATA BEFORE ATTEMPTING ANYTHING, I'M NOT RESPONSIBLE FOR YOUR FILES OR WHATEVER HAPPENS TO YOUR PHONE.

This tutorial is tested on BOTH OOS11 and OOS12 based CUSTOM ROMs. This tutorial doesn't apply to STOCK OOS ROMs and I don't support STOCK ROMs in this case.

There are two parts to this process, one concerning only people who are on OOS11-based CUSTOM ROMs, and the other part is an addition to the first part for people who are on OOS12-based custom ROMs. (I'll upload most of the needed files)

So, let us begin (bruh...I'm already tired):

PART ONE: Users of OOS11-based CUSTOM ROMs:

In order to boot TWRP, you need to replace the Boot.img, dtbo.img and Vendor_boot.img with a stock one from OOS11 ROM.

Extract the "OOS11 boot,dtbo, vendor_boot.zip" file and use those IMGs.

So, boot to Fastboot, and execute the following commands:

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

Restart the bootloader once (DON'T attempt to boot into the system, you're gonna end up in Bootloop or crashdump)

Now you're in bootloader again, do the following command to boot the TWRP.

Fastboot boot twrp.img

This will boot into TWRP. Now you're inside the TWRP, go and FORMAT DATA (wipe internal storage), when it's done, go back to Bootloader, and boot TWRP again, remember, BOOT TWRP with the previous command I shared, don't attempt to FLASH it.

Now, FLASH the systemrw_1.32-MOD-Edit.zip file. This is a bit "lengthy" process, it takes a few minutes. When the process is done, reboot again to the bootloader and boot back to TWRP.

After this, mount the vendor partitions inside TWRP, and FLASH the drivers "sm8xxx_v@0615_twrp_v3.zip".

When you're done doing that, we need to flash the BOOT, DTBO and the Vendor_boot IMG's from the ROM you're currently using. (You can extract the IMG's from your ROM.zip by using Payload dumper-GO from Github.)

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

After you're done flashing these stock partitions, you should be able to boot inside the system without any issues. (tested, working, on multiple ROMs, the process is universal).

You can check if the drivers are updated with AIDA64 (Playstore) by going to the Display option. Drivers should be revisioned as 615_V3. (Old drivers are either 530 or 525)

PART TWO: Users of OOS12-based CUSTOM ROMs:

This is the "tricky" part now since TWRP WON'T boot on these ROMS just by replacing the stock (OOS11) dtbo and vendor_boot IMGs. We need to flash the OOS11 FIRMWARE first and later on, we need to go BACK to OOS12 firmware otherwise the ROM won't boot since the blobs are based on the OOS12 firmware.

First, we need to flash a recovery that supports FastbootD mode so that the following script can flash all the necessary firmware files.

Extract PEX Recovery.zip, and flash the partitions using the following commands:

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

After this is done, restart once to bootloader.

Now we need first to flash the OOS11 firmware. Flashing this is kind of one-click, it's a script that is kind of automated.

Extract the "OP9Poos11.2.10.10(GL)-FIRMWARE-fastboot.zip" file, and click on "Update firmware.bat" file. It will start the process automatically, and it will reboot to fastbootD once by itself.

Once the flashing process is completed, reboot once to bootloader, and proceed to flash the OOS11 stock partitions by extracting the file "OOS11 boot,dtbo, vendor_boot.zip", commands as follows:

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

When you're done, reboot once to bootloader and boot the TWRP:

Fastboot boot twrp.img

This will boot into TWRP. Now you're inside the TWRP, go and FORMAT DATA (wipe internal storage), when it's done, go back to Bootloader, and boot TWRP again, remember, BOOT TWRP with the previous command I shared, don't attempt to FLASH it.

Now, FLASH the systemrw_1.32-MOD-Edit.zip file. This is a bit "lengthy" process, it takes a few minutes. When the process is done, reboot again to the bootloader and boot back to TWRP.

After this, mount the vendor partitions inside TWRP, and FLASH the drivers "sm8xxx_v@0615_twrp_v3.zip".

Now, we need to go back to OOS12 FIRMWARE so that our ROM can boot (once again, OOS12 based ROMs require OOS12 firmware as a base in order to work/boot).

We need to repeat again this step:

We need to flash a recovery that supports FastbootD mode so that the following script can flash all the necessary firmware files.

Extract PEX-Recovery.zip, and flash the partitions using the following commands:

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

After this is done, restart once to bootloader.

Extract the "OP9Poos12(LE2125_11.C.48(GL))-FIRMWARE-fastboot.zip" file, and click on "Update firmware.bat" file. It will start the process automatically, and it will reboot to fastbootD once by itself.

When it's done doing that, we need to flash the BOOT, DTBO and the Vendor_boot IMG's from the ROM you're currently using. (You can extract the IMG's from your ROM.zip by using Payload dumper-GO from Github.)

The commands are the same, as follows:

Fastboot flash boot_a boot.img

Fastboot flash boot_b boot.img

Fastboot flash dtbo_a dtbo.img

Fastboot flash dtbo_b dtbo.img

Fastboot flash vendor_boot_a vendor_boot.img

Fastboot flash vendor_boot_b vendor_boot.img

After you're done flashing these stock partitions, you should be able to boot inside the system without any issues. (tested, working, on multiple ROMs, the process is universal).

So, that should be all, If I made a mistake somewhere, I'll keep editing the thread on the go if I find something wrong.

I attached 2 screenshots from 3DMark Wildfire test, before and after the score increase. Keep in mind, that the score might differ a bit, different CHIP quality might yield worse or better scores regardless of which drivers are used.

Vulkan API based games will gain more than OpenGL games, FYI. If you're playing some less demanding games, you won't obviously need more performance, but the GPU, in this case, will work "less", you'll have lower GPU usage considering the overall increase of the GPU performance.

View attachment 5667115 View attachment 5667117

Once again, I'm not trying to be rude, but people with questions like "Fastboot not detected, how to extract payload.bin, how to format DATA in TWRP" will be totally ignored, this is a more "advanced" tutorial, I don't have time explaining absolute basics. Use Google for that, there is plenty of information for your "basic" issues/questions.

You can thank me later, once your OS booted with the new drivers.