v1.2.0
Graphics API Debugger, version 1.2.0 contains a number of new features, bug fixes and optimizations to trace and replay.
New Features:
- New UI to pick the device used for replay and new support for OpenGL ES on-device replay
- New experimental support for OpenGL ES Mid-Execution capture
- Trace dialog is now uniform across all trace targets
Vulkan
- Added support for replaying to the screen on Windows and Linux
- Added the option to export replay payloads for later replay with gapir
- Add overdraw as option to GAPID UI framebuffer view
- Vulkan validation layer output is now included in the Report view
Command Line Tools
- New
gapit stats
verb for printing capture statistics - New
gapit memory
verb for a breakdown of Vulkan memory usage gapit
can now replace shader source in a.gfxtrace
gapit screenshot
can now specify an attachmentgapit state
filtering now supports wildcardsVkPipeline
s are now listed as a resource typegapit screenshot
can now create multiple screenshots in one call
Misc
Optimizations:
- Only take the slow-path in
MutationCmdsFor
if we really have to. - Don't encode commands pre MEC
- Drop the global lock around most of the Vulkan API commands
- Another way to drop raw bytes of the capture data
- Add
@spy_disabled
annotation to subroutines. - Pre-resolve dependency graph
- Switched the map iteration template to refs instead of copies.
- Add Dense map to the API language.
- Limit the size of replay resource data chunks to reduce memory usage
- Do not cache the instruction builder for replay execution
- Fix to reduce memory usage of
gapis video
. - Vulkan: Reduce DCE memory usage
- Optimize resource hashing
- Elide ALL commands that we are not trying to trace.
- Optimize byte slice copies
Fixes:
- Increase the connect timeout to the gapii socket.
- Linux: Be more aggressive about keeping the memory tracker on.
- Return better error messages from remote ssh connection
- Fix type cast panic (bug #2190)
- Close ssh tunnel when either end closes the connection
- Fix an issue with linux remote-ssh package listing.
- Workaround an issue in golang 1.10.3 where a 4GB file is truncated.
- Use a more robust way to retrieve screen states
- Allow more memory in gapir if we are on desktop.
- Add support for rendering during replay to the surface
- Don't merge stdout/stderr on remote device-info.
- Overdraw: Check for format support and convert if necessary
- gapii/client: Use a timeout for the Dial
- Create gapic GL contexts ourselves on Linux.
- Fix command tree grouping by frame.
- Fix a bug in virtual swapchain
- Add a workaround for some Linux drivers.
OpenGL ES Fixes:
Vulkan Fixes:
- Fix an overrun in the dependencySync.
- Smarter check for temporary shader modules, renderpasses etc.
- Fix a bug in current DCE about dynamic offsets
- Ad-hoc fix to add a minimum image memory allocation size
- Fix incorrect traversal of descriptor bindings
- re-Fix wrong descriptor set indices when binding descriptor sets
- Made descriptor bindings refs.
- Cache the base pipeline only if the creating pipeling has derivative bit
- vkGetPhysicalDevice*PresentationSupportKHR reads and validate the physical device
- Added vkCmdBlitImage api implementation
- Fix typo in descriptor api.
- Update how we handle descriptor sets again.
- Fix wrong descriptor set indices when binding descriptor sets
- Remove explicit write in doVkCmdFillBuffer.
- Make sure we don't use uninitialized memory in BaseSwapchain::Destroy
- Fix bugs about linear images
- Warn when imageview aspect flags not subset of image aspects
- A few more small fixes around images and descriptor sets.
- Add a couple of checks around image usage.
- Copy depth aspect by rendering in overdraw
- Use framebuffer extent in depth aspect copy, fixes #2071
- Fix a DCE bug with vkCreateBufferView
- Reduce the num of cmds for state rebuilding again
- Fix the crash during tracing vkCmdFillBuffer
- State rebuilding optimization reduce the number of commands
- Fix Crashes caused by not using NewXXX ctor
- Fix the unit test failure due to nil query pool object
- Improve the queue selection logic during state rebuilding
- Fix Device Lost error due to using wrong queue for querypools
- Make associativity explicit for copy_clear_commands
- Allocation optimization for byte slice during state rebuilding
- Add support to BC4 and BC5 format
- Fix a bug in current DCE
- Fix crash at VkDestroyDebugReportCallbackEXT
- Fix missing fetches of physical device properties
- Vulkan Overdraw Tracking
- Lazily resolve Vulkan commands (actually all indirect commands)
- Fix a crash due to footprint builder
- Support pending VkFence signal
- Fix support of sparse buffer
- Image/Buffer view stores back refs to their users
- Fix crashes with Vulkan sparse bindings
- Fix for sparse binding, when unbinding a page.
- Fix for linear image with preinitialized intial layout
- Don't recreate framebuffers that have invalid image views.
- Dont prime depth by copy
- Handle VK_REMAINING_ARRAY_LAYER/MIP_LEVEL
- Cleaned up a bunch of error message in Vulkan.
- Disable our optimization for not re-priming undefined images.
- Now that we clean up images from views, handle that on recreation.
- Fix command buffers whose recording spans a frame.
- Fix the crash of Vulkan MEC due to fetching physical device properties
- Guard the use of prefetched physical device properties
- Fix tracking of image layout
- Fix texture views of when framebuffers are cleared.