Releases: leegao/bionic-vulkan-wrapper
BCn -> ETC2 Transcoding Prototype
Enable ETC2 transcoding (lower quality, significantly lower vram heap usage), set the following environment variable:
USE_IMAGE_VIEW=0
Doc: https://docs.google.com/document/d/1lyu7vRDGmXe3G0DedLf9aiBVK9pElZ9lzdGqAUd0B8o/edit?usp=sharing
Test Results - see https://photos.app.goo.gl/forSrmjpWwfHkSrW8
DOG WITCH
Full Quality - RGBA8:
2046MB of vram used, the stars on the hat and the particle effects are all full quality
ETC2 Transcoding (w/ T-mode search):
only 700MB of vram used (1/3 of full quality, the floor is 1/4 if all textures in the game are texture compressed), the stars on the hat are still sharp, but the particle effects are blurry now (small textures blown up are poorly compressed by ETC2)
Machick 2
Full Quality - RGBA8:
786MB of vram used, full quality
ETC2 Transcoding (w/ T-mode search):
only 374MB of vram used (1/2 of full quality), mostly good quality relative to full quality, with exception of sunglasses and the statues. There are some ditheresque compression artifacts, but not too noticeable unless you do a side-by-side comparison
Test Sample
See https://github.com/leegao/etc2_encode
Original
Fast ETC1 Mode
PSNR: 24.0406
Quality ETC2 Mode
PSNR: 26.1997 (~ 64% higher quality than ETC1, 4x slower)
v0.0.5r5
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
For Mali devices, be sure to:
- Try using dxvk 1.5.5 if 1.10.3 doesn't work
Note: in Winlator CMOD, the terminal moved. You can either start the container and then find the terminal on the left-hand side menu, or you can copy libvulkan_wrapper.so to Z:\usr\lib within the windows explorer.
See https://github.com/user-attachments/assets/2c78d8a7-da65-48c5-a295-69fcf45f1b07 for a video tutorial (courtesy of kylinzang)
New Features in v0.0.5r4 and 0.0.5r5
- Depth Format Reduction: reduce the depth buffer format, may improve performance/memory usage for some games
- Geometry Shader Faking: for PowerVR devices
- Mali SPIRV/Shader Fixes:
- Adds a pass for spec composite constants that causes dxvk 1.7.3 to black screen
- Adds optimization barriers to prevent aggressive driver optimizations leading to buggy compiled shaders
- Striped Texture Detection: Fixes striped textures in Dead Space due to dynamic BC1/3 packing in their game engine (enable with
CHECK_FOR_STRIPING) - Driver-Specific Workarounds:
- Automatically disable
VK_EXT_extended_dynamic_stateon Mali for DXVK < 2. - Only disable
VK_KHR_shader_float_controlson Qualcomm
- Automatically disable
VK_POLYGON_MODE_LINEfaking - on Mali devices that do not support it to fall back toVK_POLYGON_MODE_FILL- Advanced Artifact Dumping: dump BCn textures and decoding artifacts new environment variables (
DUMP_BCN,DUMP_SRC_BCN) - BCn Validation System:
VALIDATE_BCNadded to compare the output of the GPU-based BCn decoder against a reference CPU decoder - BC4-5 Fixes for USE_CPU_BCN: Fixed a stride problem that causes banding on BC4 and BC5 textures when decoded by USE_CPU_BCN
Current staging build:
[v0.0.5r5] - Fix shader BCn decoding glitch in Factorio due to using the wrong bounds checking - #142
[v0.0.5r4] - Added BCn texture/decoding artifact dumping, depth-buffer reduction mode, geometry shader faking, rewrite passes for FixMaliSpecCompositeConstants and MaliAddOptimizationBarriers, option to detect and fix texture striping in Dead Space, auto disable VK_EXT_extended_dynamic_state on Mali, fix for BC4-5 causing texture banding
[v0.0.5r3] - Fixes a WSI validation error on Mali (and other) devices due to blitting
[v0.0.5r2] - Fix USE_VVL for newer Android devices, add DUMP_BCN_ARTIFACTS for debugging purposes that dumps all processed BCn objects
[v0.0.5r1] - Add vulkan validation layer integration (and ability to add new layers between the wrapper and libvulkan.so)
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_BY_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problemsUSE_VVL- make sure you also download and copy libVkLayer_khronos_validation.so into usr/lib as well, this will toggle on the Vulkan Validation layerDUMP_BCN_ARTIFACTS- dumps every decoded texture to a/sdcard/Documents/Wrapper/artifacts_...directory. This is extremely slow and creates lots of really large files. Use only when asked to.
(new)
DUMP_BCN- Dump artifacts for successfully decoded BCn textures to/sdcard/Documents/Wrapper/artifacts.... This can be a list ofall,bc1, ...,bc7. This is very slow and generates large files.VALIDATE_BCN- Enables validation of GPU vs. CPU BCn decoding. Dumps artifacts only on a mismatch. Accepts the same format list asDUMP_BCN.DUMP_SRC_BCN- Dumps the original, compressed source buffer and region info before any decoding is attempted. Useful for debugging corrupted source textures.WRAPPER_REDUCE_DEPTH_FORMAT- Reduces the precision of depth/stencil formats to improve compatibility.safe: Reduces D24/D32 formats to D16 variants while preserving the stencil buffer if possible.aggressive: Reduces all D24/D32/D16S8 formats to D16, discarding the stencil buffer.disabled: Blocks the creation of depth/stencil images entirely for debugging purposes.
DISABLE_SPEC_COMPOSITE_CONSTANTS/FORCE_SPEC_COMPOSITE_CONSTANTS- Disables/forces the SPIR-V pass that fixes specialization composite constant issues on Mali GPUs that causes 1.7.3 to black screen.DISABLE_OPTIMIZATION_BARRIERS/FORCE_OPTIMIZATION_BARRIERS- Disables/forces the SPIR-V pass that adds optimization barriers for Mali/Adreno drivers.CHECK_FOR_STRIPING- Set to1to enable the detection of striped BCn textures (for Dead Space for e.g.), note that this forces a CPU decoding path.
Logging Instructions:
Validation Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Download libVkLayer_khronos_validation.so.zip
- Extract the library, and in Winlator, copy it to the same directory that libvulkan_wrapper.so is in
- Go to the Environment Variables view in your container settings
- Add an entry for
USE_VVL(upper case) to1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/vvl_*.txtand upload them here
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/wrapper_*.txtand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
BCn Artifacts:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
DUMP_BCN_ARTIFACTS(upper case) to1 - Rerun the game
- Zip the newest artifacts at the
/sdcard/Documents/Wrapper/artifacts_...directory and upload it
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
What's Changed
Full Changelog: https://github.com/...
v0.0.5r4 (Respin)
Note: if you downloaded this build before 12:32pm UTC+0, please download the build again, this fixes an issue in #165
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
For Mali devices, be sure to:
- Try using dxvk 1.5.5 if 1.10.3 doesn't work
Note: in Winlator CMOD, the terminal moved. You can either start the container and then find the terminal on the left-hand side menu, or you can copy libvulkan_wrapper.so to Z:\usr\lib within the windows explorer.
See https://github.com/user-attachments/assets/2c78d8a7-da65-48c5-a295-69fcf45f1b07 for a video tutorial (courtesy of kylinzang)
New Features in v0.0.5r4
- Depth Format Reduction: reduce the depth buffer format, may improve performance/memory usage for some games
- Geometry Shader Faking: for PowerVR devices
- Mali SPIRV/Shader Fixes:
- Adds a pass for spec composite constants that causes dxvk 1.7.3 to black screen
- Adds optimization barriers to prevent aggressive driver optimizations leading to buggy compiled shaders
- Striped Texture Detection: Fixes striped textures in Dead Space due to dynamic BC1/3 packing in their game engine (enable with
CHECK_FOR_STRIPING) - Driver-Specific Workarounds:
- Automatically disable
VK_EXT_extended_dynamic_stateon Mali for DXVK < 2. - Only disable
VK_KHR_shader_float_controlson Qualcomm
- Automatically disable
VK_POLYGON_MODE_LINEfaking - on Mali devices that do not support it to fall back toVK_POLYGON_MODE_FILL- Advanced Artifact Dumping: dump BCn textures and decoding artifacts new environment variables (
DUMP_BCN,DUMP_SRC_BCN) - BCn Validation System:
VALIDATE_BCNadded to compare the output of the GPU-based BCn decoder against a reference CPU decoder - BC4-5 Fixes for USE_CPU_BCN: Fixed a stride problem that causes banding on BC4 and BC5 textures when decoded by USE_CPU_BCN
Current staging build:
[v0.0.5r4] - Added BCn texture/decoding artifact dumping, depth-buffer reduction mode, geometry shader faking, rewrite passes for FixMaliSpecCompositeConstants and MaliAddOptimizationBarriers, option to detect and fix texture striping in Dead Space, auto disable VK_EXT_extended_dynamic_state on Mali, fix for BC4-5 causing texture banding
[v0.0.5r3] - Fixes a WSI validation error on Mali (and other) devices due to blitting
[v0.0.5r2] - Fix USE_VVL for newer Android devices, add DUMP_BCN_ARTIFACTS for debugging purposes that dumps all processed BCn objects
[v0.0.5r1] - Add vulkan validation layer integration (and ability to add new layers between the wrapper and libvulkan.so)
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_BY_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problemsUSE_VVL- make sure you also download and copy libVkLayer_khronos_validation.so into usr/lib as well, this will toggle on the Vulkan Validation layerDUMP_BCN_ARTIFACTS- dumps every decoded texture to a/sdcard/Documents/Wrapper/artifacts_...directory. This is extremely slow and creates lots of really large files. Use only when asked to.
(new)
DUMP_BCN- Dump artifacts for successfully decoded BCn textures to/sdcard/Documents/Wrapper/artifacts.... This can be a list ofall,bc1, ...,bc7. This is very slow and generates large files.VALIDATE_BCN- Enables validation of GPU vs. CPU BCn decoding. Dumps artifacts only on a mismatch. Accepts the same format list asDUMP_BCN.DUMP_SRC_BCN- Dumps the original, compressed source buffer and region info before any decoding is attempted. Useful for debugging corrupted source textures.WRAPPER_REDUCE_DEPTH_FORMAT- Reduces the precision of depth/stencil formats to improve compatibility.safe: Reduces D24/D32 formats to D16 variants while preserving the stencil buffer if possible.aggressive: Reduces all D24/D32/D16S8 formats to D16, discarding the stencil buffer.disabled: Blocks the creation of depth/stencil images entirely for debugging purposes.
DISABLE_SPEC_COMPOSITE_CONSTANTS/FORCE_SPEC_COMPOSITE_CONSTANTS- Disables/forces the SPIR-V pass that fixes specialization composite constant issues on Mali GPUs that causes 1.7.3 to black screen.DISABLE_OPTIMIZATION_BARRIERS/FORCE_OPTIMIZATION_BARRIERS- Disables/forces the SPIR-V pass that adds optimization barriers for Mali/Adreno drivers.CHECK_FOR_STRIPING- Set to1to enable the detection of striped BCn textures (for Dead Space for e.g.), note that this forces a CPU decoding path.
Logging Instructions:
Validation Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Download libVkLayer_khronos_validation.so.zip
- Extract the library, and in Winlator, copy it to the same directory that libvulkan_wrapper.so is in
- Go to the Environment Variables view in your container settings
- Add an entry for
USE_VVL(upper case) to1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/vvl_*.txtand upload them here
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/wrapper_*.txtand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
BCn Artifacts:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
DUMP_BCN_ARTIFACTS(upper case) to1 - Rerun the game
- Zip the newest artifacts at the
/sdcard/Documents/Wrapper/artifacts_...directory and upload it
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
What's Changed
- Add VALIDATE_BCN mode to compare against reference impl, and also fix stride issues by @leegao in https://github.com/leegao/bion...
v0.0.5r3
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
For Mali devices, be sure to:
Note: in Winlator CMOD, the terminal moved. You can either start the container and then find the terminal on the left-hand side menu, or you can copy libvulkan_wrapper.so to Z:\usr\lib within the windows explorer.
See https://github.com/user-attachments/assets/2c78d8a7-da65-48c5-a295-69fcf45f1b07 for a video tutorial (courtesy of kylinzang)
Current staging build:
[v0.0.5r3] - Fixes a WSI validation error on Mali (and other) devices due to blitting
[v0.0.5r2] - Fix USE_VVL for newer Android devices, add DUMP_BCN_ARTIFACTS for debugging purposes that dumps all processed BCn objects
[v0.0.5r1] - Add vulkan validation layer integration (and ability to add new layers between the wrapper and libvulkan.so)
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_By_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problemsUSE_VVL- make sure you also download and copy libVkLayer_khronos_validation.so into usr/lib as well, this will toggle on the Vulkan Validation layerDUMP_BCN_ARTIFACTS- dumps every decoded texture to a/sdcard/Documents/Wrapper/artifacts_...directory. This is extremely slow and creates lots of really large files. Use only when asked to.
Logging Instructions:
Validation Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Download libVkLayer_khronos_validation.so.zip
- Extract the library, and in Winlator, copy it to the same directory that libvulkan_wrapper.so is in
- Go to the Environment Variables view in your container settings
- Add an entry for
USE_VVL(upper case) to1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/vvl_*.txtand upload them here
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Add another entry for
LOG_DISASSEMBLYto1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/wrapper_*.txtand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
BCn Artifacts:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
DUMP_BCN_ARTIFACTS(upper case) to1 - Rerun the game
- Zip the newest artifacts at the
/sdcard/Documents/Wrapper/artifacts_...directory and upload it
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
What's Changed
- Initial harness for artifact recording by @leegao in #128
- Finish DUMP_BCN_ARTIFACTS implementation by @leegao in #130
- Fix BC6h staging buffer size calculation to use the correct texel str… by @leegao in #132
- Fix Validation error in blit path that fails for Mali devices by @leegao in #134
Full Changelog: v0.0.5r1...v0.0.5r3
v0.0.5r2
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
Current staging build:
[v0.0.5r2] - Fix USE_VVL for newer Android devices, add DUMP_BCN_ARTIFACTS for debugging purposes that dumps all processed BCn objects
[v0.0.5r1] - Add vulkan validation layer integration (and ability to add new layers between the wrapper and libvulkan.so)
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_By_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problemsUSE_VVL- make sure you also download and copy libVkLayer_khronos_validation.so into usr/lib as well, this will toggle on the Vulkan Validation layerDUMP_BCN_ARTIFACTS- dumps every decoded texture to a/sdcard/Documents/Wrapper/artifacts_...directory
Logging Instructions:
Validation Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Download libVkLayer_khronos_validation.so.zip
- Extract the library, and in Winlator, copy it to the same directory that libvulkan_wrapper.so is in
- Go to the Environment Variables view in your container settings
- Add an entry for
USE_VVL(upper case) to1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/vvl_*.txtand upload them here
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Add another entry for
LOG_DISASSEMBLYto1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/wrapper_*.txtand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
BCn Artifacts:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
DUMP_BCN_ARTIFACTS(upper case) to1 - Rerun the game
- Zip the newest artifacts at the
/sdcard/Documents/Wrapper/artifacts_...directory and upload it
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
What's Changed
- Initial harness for artifact recording by @leegao in #128
- Finish DUMP_BCN_ARTIFACTS implementation by @leegao in #130
- Fix BC6h staging buffer size calculation to use the correct texel str… by @leegao in #132
Full Changelog: v0.0.5r1...v0.0.5r2
v0.0.5r1
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
Current staging build:
[v0.0.5r1] - Add vulkan validation layer integration (and ability to add new layers between the wrapper and libvulkan.so)
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_By_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problemsUSE_VVL- make sure you also download and copy libVkLayer_khronos_validation.so into usr/lib as well, this will toggle on the Vulkan Validation layer
Logging Instructions:
Validation Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Download libVkLayer_khronos_validation.so.zip
- Extract the library, and in Winlator, copy it to the same directory that libvulkan_wrapper.so is in
- Go to the Environment Variables view in your container settings
- Add an entry for
USE_VVL(upper case) to1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/vvl_*.txtand upload them here
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Add another entry for
LOG_DISASSEMBLYto1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapper/wrapper_*.txtand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
Full Changelog: v0.0.5r0...v0.0.5r1
What's Changed
- Gate aggressive DCE behind a flag, and add bounds check for src buffer in shaders by @leegao in #120
- Fix addr_place mmap bug where the AHB query sometimes returns a sync-fence fd first instead of the memory fd, also add log wrapping to all wrapper functions. by @leegao in #121
- Add integration for validation layer via libgraphicsenv.so hijacking by @leegao in #125
v0.0.5r0
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Missing Feature/Extension emulation for Winlator Bionic on:
- Adreno 6XX stuck on 512.502 (BCn)
- Some Mali devices (e.g. Pixel 8)
- Some Xclipse devices
Release Notes - v0.0.5r0
SPIRV Lowering Passes
Integrates SPIRV-Tools library to enable on-the-fly modification of SPIR-V shaders.
- [Mali] Clip/Cull Distance Emulation: stubbing of
ClipDistanceandCullDistance. Remove all OpDecorate and OpMemberDecorates using these built-ins and transitively eliminates all associated dead code. This allows applications and games requiring these features to run correctly on Mali hw that lacks native support.- Early testing: this feature isn't fully baked yet and may cause problems, file bugs if you encounter new regressions.
BCn Texture Decompression
- Format Support:
- Host-side (CPU) decompression now supports the BC6H format.
- GPU-side (Compute Shader) decompression has been fixed for correct BC7 SRGB handling.
- Performance and Stability:
- A new "1-by-1 submission mode" (
WRAPPER_ONE_BY_ONE=1) for debugging - Fixed buffer indexing bug in the compute decompression path.
- A new "1-by-1 submission mode" (
- Debugging Tools:
WATERMARK_BCNnow works with cpu decompression- Use
WATERMARK_SIZEto control the size of the watermark. - Added
DISABLE_BCNflag to selectively disable emulation for specific formats
Logging and Debugging
- SPIR-V Disassembly: You can now log full SPIR-V disassembly for shaders that are modified by our SPIRV passes. Enable with
LOG_DISASSEMBLY=1orWRAPPER_LOG_LEVEL=all. - Timestamped Logs: All wrapper logs are now timestamped
Build and System Improvements
- The build system is now more deterministic
- Added integration with the external SPIRV-Tools
Current staging build:
[v0.0.5r0] - Initial ClipDistance emulation, more complete cpu/gpu side decompression format support, more debugging tools
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)DISABLE_BCN- disable BCn emulation for specific texture formats (all,bc1...bc7, ...)WATERMARK_SIZE- how big the WATERMARK_BCN mark should be, fromXXS...S,M,L, ...XXLNO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completelyLOG_DISASSEMBLY- Enables logging of transformed spirv codeDISABLE_EXTERNAL_FD- For some games that tries to import external fd, it may fail on Proton for certain underlying drivers. This flag will disable this path in dxvk.FORCE_CLIP_DISTANCE- enable ClipDistance emulation even when the underlying driver supports itDISABLE_CLIP_DISTANCE- disable ClipDistance emulation even when the underlying driver does not support itWRAPPER_ONE_By_ONE- submits bcn tasks to the GPU one by one instead of inlined into the application's command buffer. Helps isolate which specific shader causes problems
Logging Instructions:
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Add another entry for
LOG_DISASSEMBLYto1 - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapperand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
Full Changelog: v0.0.4r9...v0.0.5r0
v0.0.4r9
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Current staging build:
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
[v0.0.4r9] - Fixes a compute shader bug for some Mali drivers (can use bcn decoding without USE_CPU_BCN), thanks to Ahmed for helping debug #99
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)NO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completely
Logging Instructions:
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapperand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
Full Changelog: v0.0.4r8...v0.0.4r9
v0.0.4r8
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Current staging build:
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r7] - Adds GPU fault reporting dumps
[v0.0.4r8] - Fixes USE_CPU_BCN problem in 4r7
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)NO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completely
Logging Instructions:
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapperand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
Full Changelog: v0.0.4r7...v0.0.4r8
v0.0.4r7 (Buggy USE_CPU_BCN)
See https://github.com/leegao/bionic-vulkan-wrapper/releases/tag/v0.0.4 for instructions on how to use it
Current staging build:
[v0.0.4r1] - Fix for GPU faults on BC7 due to register pressure, and add dualSrcBlend as a faked feature for Mali G715 on r38p1. See #43
[v0.0.4r2] - Make untracked buffers a non-fatal error, we may be leaking internal/staging vkBuffers out (e.g. WSI did have issues with incomplete buffer tracking too in the past) See #45
[v0.0.4r3] - Reworked temporary object tracking to be tracked by the image, should reduce memory usage slightly, will change this to a thread soon. Also added debug color for buffer overflows in the shader (bright pixel), and fixed GPU faults for BC6 as well
[v0.0.4r4] - Reworked temporary object tracking to be tracked by a secondary command buffer, should reduce memory usage. Added watermarker and mask coloring for debugging. Added more feature faking for G57 r32p1.
[v0.0.4r5] - Fixes a race condition, exposes more error logs from vulkan trace failures
[v0.0.4r6] - Reverts a buggy implementation of the inter-buffer GC, and various other improvements / refactorings
[v0.0.4r7] - Adds GPU fault reporting dumps
New Environment Variables:
MASK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- skip BCn compute for select BC texture types (to debug GPU faults/hangs)WATERMARK_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- mark the bottom 32x32 block of pixels for every texture of this type with a solid color (to debug texture faults)USE_CPU_BCN- can be a list ofall,bc1, ...,bc7,131, ...,146- use CPU decoding for the selected formats instead of compute (if your game is hanging, try this)NO_BCN_EMULATION- Disable the BCn emulation path completelyNO_BC123_EMULATION- Disable the BC1-BC3 emulation path completely
Logging Instructions:
Wrapper Logs:
- Create a directory (if it doesn't already exist) at
/sdcard/Documents/Wrapper - Go to the Environment Variables view in your container settings
- Add an entry for
WRAPPER_LOG_LEVEL(upper case) todebug(small case - NOTE: do not set toallas this can generate several gbs of logs) - Rerun the game
- Grab the logs at
/sdcard/Documents/Wrapperand upload them here
See https://photos.app.goo.gl/6Ah6EkkjQpR2Rsih8
DXVK Logs:
- Go to the Environment Variables view in your container settings (same as before)
- Add an entry for
DXVK_LOG_LEVEL(upper case) todebug(small case) - Add another entry for
DXVK_LOG_PATH(upper case) set to/sdcard/Download
Run the game, then go to your Files app, go into Internal storage > Download, and look for $GAME_d3d11.log and upload it as well
Wine Logs:
- Go to Winlator's settings
- Scroll down to the Logs section and enable Wine debug and Box64 logs
- Click on the little
+button and also selectvulkanand all of thed3d...entries too - Rerun the game
- Grab the logs at
/sdcard/Download/Winlator/logs
See https://photos.app.goo.gl/HQunEv1is28vRT9v6
Don't forget to set your video memory to the maximum: https://photos.app.goo.gl/53rAyWAZBEq75UxB8
Full Changelog: v0.0.4r6...v0.0.4r7