* direct-to-display window improvements
Rather than just taking the first plane of the first display
we now gather a list of valid candidates and pick the best
fit.
An additional display 'FullscreenStretch' mode has been added.
This uses VkDisplayPresentInfoKHR from the VK_KHR_display_swapchain
extension, when available, to specify separate src and dst
rectangles for the surface and display. This enables you to
have a 640x360 surface stretched fullscreen onto the display
for example, rather than just appearing in a corner.
For direct-to-display specifying --width & --height controls
the surface size in standard window mode and in stretch mode.
In fullscreen or borderless modes, the surface is the same
size as the display regardless of the width and height settings.
* Small code improvements
From code review comments
* Fix clang format
* Fix error in hpp_window.h
We can't just call into the base class directly
since we've actually been reinterpret_cast from a
derived vkb::Window class. Ensure the derived
class method gets called.
* Fix clang formatting
* Change vkb::HPPVulkanSample from a facade over vkb::VulkanSample to a self-contained class using vulkan.hpp
* Add some direct-2-display specific initialization code to hpp_hello_triangle.
* Adjustments according to latest changes in the framework.
Needed to add facade classes on the family of vkb::DebugUtils classes.
* Update copyrights.
* Resolve formatting issue
* Adjustments following comments from Steve Winston.
* Resolve quality checks warnings.
* Remove @ref on size_t and uint32_t.
* Plugins
* CI fixes
* WIP
* Android fix
* Remove poll_events
* HPP Vulkan Triangle Fix
* Quality check fixes
* Android fix for hpp hello triangle rebase
* Add samples list
* Use ExitCodes instead of global try/catch
* Close records a close request if a window isnt yet available
* Android fix / better log message for premature close in android platform
* Fix android build
* Check for app bit requested outside of main loop
* todo: explain this
* change default window size
* change default window size
* Introduce vulkan.hpp-based version of hello_triangle.
* Fix typo in comments: frambuffers -> framebuffers
* Add local versions of get_optimal_validation_layers and validate_layers.
* Make hpp_hello_triangle run on every platform, with changes to the framework/platform.
* Adjustments to latest changes in hello_triangle
* Fix vkb::screenshot()
See https://github.com/KhronosGroup/Vulkan-Samples/issues/259
As well as addressing the incorrect use of VK_IMAGE_USAGE_SAMPLED_BIT
as described in the issue, this change modifies the screenshot()
function to use VkCopyImageToBuffer rather than VkCopyImage as
it was using before. This results in both simpler and working
code (for me at least). The old version either produced empty
images, or images that started with a horizontal offset for me.
* Addressed some review comments
Added F12 as an alternative screendump trigger.
Removed some unused includes.
A couple of code tidies.
* Updated copyright year
* Implemented headless mode
- Implemented headless rendering, with support for the Vulkan headless surface extension
- Introduced concept of a Window
- A platform owns a window
- GLFW is now a window GLFWWindow, not a platform
- HeadlessWindow for headless rendering
- DirectWindow for Unix based D2D rendering
- AndroidWindow wrapper for Android window handling, with a built in headless mode
* Arm updates to samples and framework
Samples
- Descriptor set management sample highlighting:
- Benefits of descriptor set caching
- Approaches to buffer management
- Updated Command buffer usage sample:
- Multi-threaded command buffer recording
- Toggle between single primary command buffer or adjustable number of secondaries
- Updated Render Subpasses sample:
- Define lights in the sample not the shader
- Updated Render Passes sample:
- Adds the ability to toggle the use of vkCmdClear
- Updated AFBC sample:
- Added a list of supported formats to the tutorial
- Fixed a bug where AFBC would never be disabled via the sample checkbox
- Updated Surface Rotation sample:
- Refactored code and documentation
- Updated tutorial screenshots and code snippets
Framework
- Implemented benchmark mode
- Screenshot was made much faster by using GPU_TO_CPU memory
- Composite counters such as cache miss ratio and branch miss ratio are now supported
- Mulithreaded rendering, where command recording is thread-safe
- Gltf Loader supports extension loading, and the scene graph now can support lights loaded in from KHR_lights_punctual
Bugfix
- Fixed a bug which prevented the creation of the output directory on Android
- Fixed a bug with batch mode in portrait orientation
- Avoid loss of precision in the projection matrix to reduce flickering
- Fixed a bug with rotation in surface rotation sample
Other
- Added tutorial to find the driver version of the GPU
- Various bug fixes and improvements