* Fix file out of alignment with `cargo fmt`.
* Make the reuse_command_buffers test more stable.
The per-thread weak reference to StandardCommandPoolPerThread in
StandardCommandPool can expire forcing the recreation of the pool and
its internal objects. This is a problem for the reuse_command_buffers
test which asserts that a destroyed command pool must be reused if
possible.
This change fixes the test by introducing an extra command buffer that
is held through the rest of the test, introducing an extra strong
reference to the command pool that keeps the weak reference alive for
the duration of the test.
This test fails consistently on my machine with a NVidia 1070 Max-Q
otherwise.
* Fix invalid reference to dropped cache object in compute pipeline
This is achieved by preventing the cache object from being partially
moved.
This fixes issue #1466.
* Add entry to changelog
* vulkano: image: improve formatting
Ran cargo fmt --all. Should we use clippy too ?
* vk_sys: add additional formats
This updates the vk formats enum to the header that's on my
system (vk 1.2-ish).
* vulkano: image: Add NV12 and YV12 support
These formats are commonly used as targets for hardware and
software video decode. The common case is the swapchain allocator
(gralloc in the Android use case) allocates some memory, the video
stack decodes to it, and then memory can be composited by Vulkan
or sent directly to the display.
* vk_sys: update structure types
This updates the structure types to a VK 1.2-ish state. Long term,
it makes a ton of sense to autogenerate vk-sys to make adding
additional features and enumerations easier [1]. For now, we can
hand edit.
[1] (https://github.com/vulkano-rs/vulkano/issues/89)
* vk_sys: add VK_KHR_external_memory_fd bindings
This adds some basic external memory features. Most of these
features are core in VK1.1.
* vulkano: memory: add and use DeviceMemoryBuilder
We'll need to:
(a) Create exportable memory
(b) import from a OS descriptor to create DeviceMemory
(c) Also support dedicated allocations
The device memory API is becoming rather complicated. Let's use
the common builder pattern to simplify this.
* vulkano: memory: implement some external features
This change is sufficient to create exportable memory and
export it. It's only been tested on Linux platforms and depends
on Unix file descriptors, so enable it only there for now.
Import support will be added later. Support for external buffers
and images can also be added later if someone needs it.
creation
To do so, we created a SubImage that implements the ImageAccess trait
This SubImage will decorate an ImageAccess image and will represent
one or more mip level / array layer level
* Unlock images correctly on Err
If the CommandBuffer encountered an error in the lock_submit function,
it would unlock all the previously locked resources and return the
error. It would unlock all the images with a None value which would
panic in an assertion in the unlock method of the images. Now it checks
for the final_layout and unlocks the image this way.
This change should help with the panics mentioned in #1441 and #1447.
With this fix it should return the error that is occuring instead of
panicking.
* Add fix to the change log to inform users.
* Implement caching for GraphicsPipeline
Added the method build_with_cache to set an Option that holds an Arc
containing a PipelineCache. This could probably be optimized to just
hold a vk::PipelineCache(u64) and start with a vk::NULL_HANDLE and
set the value to the internal_object of the PipelineCache. Using the Arc
is probably safer for now, but it is an idea.
* Add changes to the CHANGELOG
* Added a cache option to the ComputePipeline
This is a breaking change as there is no ComputePipelineBuilder and the
cache has to be added in the new function and the underlying functions
that build the ComputePipeline.
This needs to be discussed.
* Document the cache feature for the ComputePipeline
* Formatting with cargo fmt
* Remove outdated documentation
* Added testing for the PipelineCache
Checking that the cache returns the same data if the get_data method is
invoked twice without building a new pipeline.
Checking that the cache returns the same data if the same pipeline is
built two times with the cache.
Checking that the cache returns different data if there is a different
pipeline built in between the get_data calls.
* Create an example for the PipelineCache
* Formatting
* Move SubpassContents to command_buffer module, use it as parameter type instead of bool, add RenderPassState internally
* Add some safety checks to execute_commands
* Move Kind and related types to top-level module, add CommandBuffer::kind trait method, keep Kind value in AutoCommandBuffer(Builder)
* Some minor code cleanup
* Documentation update
* Use winit's hinstance() function
* Require HasRawWindowHandle for the window and remove handle parameter
Co-authored-by: Antonino Siena <a.siena@gmx.de>
* Feature: Create a Surface from a RawWindowHandle
* Comment on the new features
* Updated changelog
* Corrected feature name
* Compiler error corrections
* Empty commit for CI
Co-authored-by: Antonino Siena <a.siena@gmx.de>
* add additional ImageUsage constructors
* update examples to use ImageUsage::color_attachment instead of caps.supported_usage_flags
* fix additional usage in multi-window example
* update ignore to not include mandelbrot.png and triangle.png
* update ignore to not include mandelbrot.png and triangle.png