* Add support for remaining unsupported ASTC formats
Add new ASTC formats into pixelformats example and ninja scripts
Rebuild ASTC textures
* Update idl and generate
Move comma in pixelformats
Co-authored-by: Raziel Alphadios <raziely@gmail.com>
* Add 'frameNumber' to Frame struct
Previously, the frame number returned from bgfx::frame() was tracked separately in the Context. Now,
we store that information in the Frame. This will allow us to attach the frame number to ViewStats.
* Add frame number to ViewStats
When ViewStats are enabled, we tag each timer query with the current frame number, then include
that information in the final results. In this way, clients can correlate specific work that they
submitted to specific GPU timing information.
NOTE: Some backends not implemented, yet. They will always have 0 for frame number.
The ones which are implemented are:
* OpenGL
* Vulkan
* D3D 9,11,12
* Noop
* Add indirect draw with indirect count (BGFX_CAPS_DRAW_INDIRECT_COUNT)
* Update bindings
* VK: Add support for BGFX_CAPS_DRAW_INDIRECT_COUNT
* D3D12: Add support for BGFX_CAPS_DRAW_INDIRECT_COUNT
* GL: Add support for BGFX_CAPS_DRAW_INDIRECT_COUNT
* 48-drawindirect: Use BGFX_CAPS_DRAW_INDIRECT_COUNT if available
* 48-drawindirect: Update shaders
* Cleanup
* Request host-cached memory for readback
* Request device-visible memory for the uniform buffer
* Use more fine-grained image memory barrier stages
* Don't rebind vertex and index buffers if not necessary
* Timer queries
* Don't transition images during a renderpass
* Cache descriptor sets
* Trigger RenderDoc capture if requested
* Fix invalid command buffer after surface recreation
* Perform clear and blit before compute
* Use init.debug to enable validation layers
...instead of always enabling them in debug config
* Only resolve framebuffer once
* Report number of primitives without index buffer
* Minimize state changes
* Occlusion queries
* Transition swapchain image from undefined layout
* Make sure we have a combined graphics and compute queue family
Existing code already makes that assumption, otherwise we'd need different command queues and explicit resource queue transitions. The spec also guarantees that a device with such a queue family should exist.
* Release cached image views on texture destruction
* Fix stencil-only clear
* Fix non-zero integer format clear
* Annotate all optional functions with their extensions
* Support for BGFX_SAMPLER_SAMPLE_STENCIL
* Remove unused extension functions
* Support for BGFX_SAMPLER_BORDER_COLOR
* Undo descriptor set cache
Try this again in another PR... the hashing doesn't quite work with some bind combinations, and the cache needs a better eviction strategy
* Don't start renderpass for empty draw calls
* Advertize graphics debugger, if present
ie. RenderDoc
* Cleanup
* Only enable required features and extensions
* Don't spam warning about swapchain format fallback
* Cleanup
* Cleanup
* Request host-cached memory for readback
* Request device-visible memory for the uniform buffer
* Use more fine-grained image memory barrier stages
* Don't rebind vertex and index buffers if not necessary
* Timer queries
* Don't transition images during a renderpass
* Cache descriptor sets
* Trigger RenderDoc capture if requested
* Fix invalid command buffer after surface recreation
* Perform clear and blit before compute
* Use init.debug to enable validation layers
...instead of always enabling them in debug config
* Only resolve framebuffer once
* Report number of primitives without index buffer
* Minimize state changes
* Occlusion queries
* Transition swapchain image from undefined layout
* Make sure we have a combined graphics and compute queue family
Existing code already makes that assumption, otherwise we'd need different command queues and explicit resource queue transitions. The spec also guarantees that a device with such a queue family should exist.
* Release cached image views on texture destruction
* Fix stencil-only clear
* Fix non-zero integer format clear
* Annotate all optional functions with their extensions
* Support for BGFX_SAMPLER_SAMPLE_STENCIL
* Remove unused extension functions
* Support for BGFX_SAMPLER_BORDER_COLOR
* Undo descriptor set cache
Try this again in another PR... the hashing doesn't quite work with some bind combinations, and the cache needs a better eviction strategy
* Don't start renderpass for empty draw calls
* Advertize graphics debugger, if present
ie. RenderDoc
* Cleanup
* Only enable required features and extensions
* Don't spam warning about swapchain format fallback
* Cleanup
* Use correct aspect masks for stencil-only textures
* Make vkEnumerateInstanceVersion optional
This makes init not abort on Vulkan 1.0
* Move swapchain into FrameBufferVK
* Remove duplicate render pass creation code
* Manually resolve MSAA backbuffer
not guaranteed to be supported, but reduces resolve operations from 2 * (num views using backbuffer) to 1
* Support for multiple windows (BGFX_CAPS_SWAP_CHAIN)
* Capture support (BGFX_RESET_CAPTURE)
* Display present timings
* Recreate surface if native window handle changed
* Delayed swapchain deletion on resize
no more vkDeviceWaitIdle
* Recreate surface if BGFX_RESET_HIDPI is toggled
* Don't recreate swapchain if only the MSAA sample count changed
* Some extra caps checks
* Configurable backbuffer depth format
* Configurable backbuffer color format
* WebGPU: Add texture format (shaderc bin version 10)
* WebGPU: Simplify storage images + Fix format decorations
* Shaderc: Cleanup Texture name assumption in textures
* Swapchain class
* Headless support
* MSAA backbuffer
* Fix framebuffer resolve
layout transitions were missing and framebuffer mips and layers weren't used
* Fix blit with MSAA resolve source
only the main texture layout was transitioned
* Fix pipeline hash
* Vulkan: calculate vertex count from all streams, not just the first
...which might not exist in the first place
* Vulkan: use correct vertex stream offsets and handles
* D3D11: remember stream vertex count when no index buffer is bound
* Don't enable optional extensions if BGFX_CONFIG_RENDERER_USE_EXTENSIONS is 0
* Support rendering to slices of 3D textures
* Create transient command pool
* Blit array layers for non-cube textures
* Clean up destroy and release functions
Simplifies CommandQueueVK code, automatically sets handles to NULL after release(), removes the need for explicit StateCacheT instantiations, and enables usage of StateCacheLru
* Fix renderpass hash calculation
* Allow sampling cube array textures
* Make StateCacheLru work with types overloading the address-of operator
* Alias textures to shader sampler type
Requires shaders with shaderc binary version 8 or higher
* Fix 32-bit compilation