Commit Graph

422 Commits

Author SHA1 Message Date
Francisco Ayala Le Brun
adef9bd17a
Fix undefined behaviour on external semaphore & image creation; Fix wrong device chosen on hybrid graphics (#1783)
* Fix device memory missing p_next structures

* Fix exportable attachment image missing p_next; Fix mutable bit off

* Fix fd export for StorageImage

* Fix undefined behaviour on external semaphore & image creation

* Add uuid check on physical device creation

* Add rev specification to glium dependency
2022-01-05 04:14:18 +07:00
Amjad Alsharafi
657012142b
Allow copy_image, blit_image and copy_buffer source and destination to be the same image (#1782)
* Allow `copy_image` source and destination to be the same image

The doc: `srcImage and dstImage can be the same image or alias the same
memory`.

This was achieved by locking only one image exclusively if both are the same.

* Allow `blit_image` and `copy_buffer` to have the same src/dest buffers

Regarding this and the previous commits, I noticed an important note in
the docs.
`regions must not overlap`

Before this, it was not important check for us to do, since we can't
have overlapping regions if both buffers are different. But now we must
add some checks to make sure its safe to use these functions while also
allowing for shared buffers between src and dest.

* Added bounds and overlapping checks for `copy_buffer`

* Added overlap checks for `blit_image` and `copy_image`

Created utility file `src/command_buffer/validity/ranges.rs` which hold
functions that help compute if there is overlap in regions.

* Fixed bug in regions overlap check

It should be ANDed together and not ORed

* Added `image_blit` to the `image-self-copy` example

* Added example for `copy_buffer_dimensions` using `basic-compute-shaders`

Also updated copyright year for this and the `image-self-copy-blit`
example.
2022-01-03 03:54:02 +07:00
Amjad Alsharafi
d75390042f
Added command clear_attachment (#1779)
* Added command `clear_attachment`

This command implements `vkClearAttachments`, most checks are done
except for:
- Handling attachments with `VK_ATTACHMENT_UNUSED`, `vulkano` doesn't
  support unused attachments for now.
- command buffer protection and protectedNoFault, which `vulkano` is not
  supporting now.

* Added `clear_attachments` example

This explains the usage of `clear_attachments` command

* Modified `ClearRect.rect_offset` to use `u32`

Since, in vulkan docs, it says that the rect must be inside the render
area, its better to use `u32` so that we don't get negative values since
its not applicable here.

I was using `i32` because in vulkan docs its using `VkRect2D` inside
`VkClearRect` which is a general rectangle object. Since ours is only
specific to `ClearRect` its better to make it specific.
2021-12-19 19:20:51 +07:00
Rua
2151697af0
Remove DescriptorSetBuilder, use descriptor writes directly (#1774)
* Remove DescriptorSetBuilder, use descriptor writes directly

* Merge two error types
2021-12-18 17:32:38 +07:00
Rua
f069fdc35f
Upgrade to Rust 2021, update dependencies (#1772)
* Upgrade to Rust 2021, update dependencies

* Missed one

* Fix raw_window_handle breaking changes
2021-12-16 15:46:44 +07:00
Francisco Ayala Le Brun
5d0c2390ba
Fix gl-interop validation error & window not closing (#1768) 2021-12-06 04:11:59 +07:00
Rua
0ebf05f35d
Bring vertex input in line with other pipeline state, reorganise modules (#1758)
* Bring vertex input in line with other pipeline state, reorganise modules

* Documentation improvement

* Use ShaderInterfaceEntryType in shader interface instead of format

* Example fix
2021-12-06 03:30:56 +07:00
Will Song
aa5a97481e
use repr(C) (#1757) 2021-11-24 21:19:57 +07:00
Rua
9ac0de2842
Allocate less than the maximum descriptor count when variable (#1751)
* Allocate less than the maximum descriptor count when variable

* Workaround for driver bug
2021-11-24 01:33:10 +07:00
Ilya Lakhin
b84b0c9c55 #1734 Changelog update 2021-11-23 19:59:37 +07:00
Francisco Ayala Le Brun
4d0e709c18
Fixes related to Image export & OpenGL Interop (#1734)
* Fix device memory missing p_next structures

* Fix exportable attachment image missing p_next; Fix mutable bit off

* Fix fd export for StorageImage

* Add gl-interop example; Remove debug assert comment

* Fix gl-interop example being run on Windows and MacOS

* Add builder field to DeviceMemoryBuilder
2021-11-23 19:55:32 +07:00
Rua
c6959aa961
Move shader analysis to Vulkano crate, make available for runtime shaders (#1747)
* Move shader parsing and information extraction to Vulkano, make available for runtime shaders

* Small change

* Add new pipeline stages to match shader stages

* Fix review issues
2021-11-13 22:06:16 +07:00
Rua
325ef8ee38
Check against DescriptorRequirements instead of pipeline layout at draw time (#1744) 2021-11-13 17:10:52 +07:00
Rua
189a589002
Arcs, Arcs everywhere (#1739)
* `Arc`s, `Arc`s everywhere

* Additional types that I forgot

* Include Arc when returning image from ImageView
2021-11-03 03:33:58 +07:00
Rua
5a326db546
Add DescriptorRequirements (#1729)
* Add DescriptorRequirements

* Doc fix
2021-10-26 00:16:54 +07:00
Rua
35fed6b577
Add basic support for khr_push_descriptor (#1727)
* Add basic support for khr_push_descriptor

* Add basic support for khr_push_descriptor

* Support arrays in `DescriptorWrite`

* Use assert when creating the builder
2021-10-20 21:56:56 +07:00
Rua
64ca6f78e1
Lots of additional dynamic state, and some new pipeline state (#1724)
* Add extra dynamic state commands to the command buffer builders

* Add TessellationState

* Re-enable InputAssemblyState, add dynamic state, update Ash

* Rework depth_stencil module, add dynamic state

* Rename module raster > rasterization, add dynamic state

* Replace DynamicStateMode with bool, replace Option with StateMode enum for potentially dynamic states, rename Blend > ColorBlendState, add dynamic state

* Re-enable MultisampleState

* Re-enable ViewportState, add state to GraphicsPipeline with retrieval methods, add dynamic state

* Add builder methods for state types

* Color blend improvements

* Further checks on input assembly dynamic state

* Add color_write_enable

* Add topology class, check that it matches

* Add line_stipple

* Move some builder code to the individual state types

* Add discard rectangles

* Trim down GraphicsPipelineCreationError variants, order alphabetically
2021-10-12 19:42:32 +07:00
Rua
885fbc6a4c
Add Send + Sync requirements to various traits (#1720)
* Remove Send + Sync and BufferAccess traits where they are redundant

* Require Send + Sync for ImageViewAbstract

* Require Send + Sync for ImageAccess, AttachmentsList and MemoryPoolAlloc

* Require Send + Sync for DescriptorSet and DescriptorPoolAlloc

* Require Send + Sync for FramebufferAbstract

* Minor rearranging

* Require Send + Sync for PrimaryCommandBuffer, SecondaryCommandBuffer and CommandPoolAlloc

* Require Send + Sync for Command (private trait)

* Cargo fmt
2021-09-29 12:00:56 -05:00
Okko Hakola
2151a4d1ce
Remove validation layer request from fractal example (#1708)
* Add interactive fractal example

* Rename folder

* Update guide

* Remove layers & debug callback from fractal example
2021-09-14 21:45:49 +07:00
Okko Hakola
e0839af295
Add an interactive fractal example (#1707)
* Add interactive fractal example

* Rename folder

* Update guide
2021-09-13 22:14:54 +07:00
Rua
8d321430cb
Add auto-generated SPIR-V parsing (#1701)
* Add auto-generated SPIR-V parsing

* Add further reflection utilities for decorations, names and members, clean up Vulkano-shaders
2021-09-13 19:39:17 +07:00
Ilya Lakhin
ddbde190ff
Sharing generated Rust types between shaders (#1694)
* Vulkano-shader mutual compilation mode

* Tests fixes

* Shared constants option for multi-shader

* Cargo fmt

* Fix doc typos
2021-09-06 02:18:04 +07:00
Austin Johnson
588f91dc59
fix warnings/errors (#1692) 2021-09-04 01:41:17 -05:00
Rua
cd8302328f
Update dependencies (#1689) 2021-09-03 23:21:15 -05:00
Rua
ebf3ace481
Add support for immutable samplers, some small changes (#1688) 2021-09-03 23:20:05 -05:00
Rua
7a50bd5cb5
Add generation of Format to autogen (#1687)
* Add generation of `Format` to autogen

* Better documentation
2021-09-02 04:05:23 -05:00
Austin Johnson
0a3791c303
Support for Runtime Descriptor Arrays (#1674) 2021-09-02 03:29:27 -05:00
Rua
aa1c6eb607
Move command buffer binding and state-setting into their own commands (#1684)
* Move binding and state-setting into their own commands

* Fix test failing on documentation
2021-08-27 01:24:16 -05:00
Rua
874e502545
Replace VertexSource with VertexBuffersCollection, remove pipeline traits (#1671)
* Replace VertexSource with VertexBuffersCollection

* Remove pipeline traits
2021-08-17 02:10:07 +07:00
Rua
3da6c298a8
Add vertex and instance parameters to draw commands (#1661)
* Add vertex and instance parameters to draw commands

* Remove BufferlessDefinition
2021-08-12 21:14:02 +07:00
Will Song
4f4580e749
update push constant ranges to match the spec. overlapping ranges are OK but intersecting stage flags are not (#1659)
* update push constant ranges to match the spec. overlapping ranges are OK but intersecting stage flags are not

* add a check for push constant ranges
2021-08-09 22:19:54 +07:00
Will Song
0bf8c86eea
add some logic for known properties (#1654)
* add some logic for known properties

* update examples

* fix tests

* fix indentation
2021-08-09 20:44:58 +07:00
Rua
7bc7d4ddac
Fix storage buffer detection to work for all SPIR-V versions (#1642) 2021-07-26 00:23:57 -05:00
Rua
0ad56aaeda
Add DescriptorSetWithOffsets type (#1641)
* Add DescriptorSetWithOffsets, remove the dynamic_offsets parameters on AutoCommandBufferBuilder

* Modify StateCacher, add checking to DescriptorSetWithOffsets constructor

* Add DescriptorSetWithOffsets to SyncCommandBufferBuilder
2021-07-21 00:06:22 +07:00
Rua
1771714bc4
Descriptor set/pipeline layout refactoring (#1629)
* Remove DescriptorSetDesc trait, add layout method to DescriptorSet

* Add struct DescriptorSetDesc, forward PipelineLayoutDesc to it, rename is_superset_of to ensure_superset_of, union doesn't take self

* DescriptorSetLayout takes DescriptorSetDesc in constructor

* PipelineLayout takes DescriptorSetLayout in constructor

* EntryPointAbstract takes/returns descriptor set descs and push constant descs separately

* Remove PipelineLayoutDesc

* Remove PipelineLayout::descriptor_set_layout

* Minor changes

* Small additions
2021-07-05 11:35:38 +07:00
Rua
0eebf0c4f4
Rework VertexDefinition trait, add BuffersDefinition, support instance rate divisors (#1619)
* Rework VertexDefinition trait, add BuffersDefinition

* Add support for instance rate divisors
2021-07-05 11:19:32 +07:00
Rua
aee11063d4
Rename Features::superset_of to is_superset_of, add is_superset_of to extensions (#1625) 2021-06-28 16:07:54 +07:00
Rua
d5bcffa902
Rearrange descriptor set modules and types (#1622)
* Move descriptor_set.rs to parent, make descriptor.rs its child

* Rename UnsafeDescriptorSetLayout to DescriptorSetLayout, as there isn't actually anything unsafe about it

* Make fixed_size_pool and persistent modules public, reduce number of re-exports from there

* Split off pool.rs from sys.rs

* Move std_pool module to pool::standard

* Make sys public, remove re-exports

* Move descriptor module and DescriptorSetDesc into layout module

* Move ShaderStages to pipeline::shader

* Make descriptor_set::collection module private

* Documentation
2021-06-28 15:28:09 +07:00
Rua
e5bd8807e4
Move instance/physical_device.rs to device/physical.rs, rewrite and refactor some parts of it (#1617)
* Move instance/physical_device.rs to device/physical.rs, rewrite some of it

* Deprecate supported_by_device_raw as well
2021-06-28 15:04:28 +07:00
Rua
847c81bb88
Better feature and device selection in examples (#1614)
* Don't enable any features in examples unless the example requires it

* More elaborate device selection code in the triangle example

* Better device selection for all other examples
2021-06-28 13:24:44 +07:00
Rua
0d5edc130d
Add auto-generated device properties (#1605)
* Migrate to using Ash as a base

* Small change to test, to make it applicable to Vulkan 1.1

* Auto-generate extensions, check extension requirements

* Add documentation to extensions, use vk.xml from Ash 0.32.1

* Remove `RawDeviceExtensions` and `RawInstanceExtensions`

* Add extension conflict checking

* Small fix

* Add auto-generated features, more requirements checks

* Features documentation

* Macrofy required_if_supported_extensions

* Include vulkano-gen tool

* Move autogen imports to macros

* Change autogen into a build script

* Delete leftover file

* Autogenerate device properties

* Propagate bugfix in properties chain to features
2021-06-14 02:47:10 +07:00
Tim Balsfulland
748097a159
add support for VK_KHR_multiview (#1598)
* initial support for the `VK_KHR_multiview` extension

The `VK_KHR_multiview` extension can be used to efficiently draw to multiple layers of a framebuffer at once with.
This is particularly useful for virtual reality applications or other types of stereoscopic rendering where both eyes need to be rendered and they share almost all visible vertices.

* allow creation of multi-layer attachment images

Using the `AttachmentImage::multisampled_with_usage_with_layers` constructor.
More constructors with different combinations could be added for the `AttachmentImage` but `multisampled_with_usage_with_layers` already exposes all possible options.
I think all these different constructors should be replaced with a constructor that takes a struct that implements `Default` or an enum with the different possibilities.

* compliance with VUID-VkFramebufferCreateInfo-renderPass-02531

* removed changelog entries according to new policy

* migrate `VK_KHR_multiview` support to ash

* add more comments

* add remaining `VK_KHR_multiview` validation

* validate instanced drawing using `multiview` limits

* add some missing validation relating to `VIEW_LOCAL` dependencies

* use the vulkano device feature instead of depending on the `multiview` extension directly
2021-06-07 21:41:13 +07:00
Nicolas Patry
28637e8c67
Fixing the teapot example on ArchLinux (GTX 1650). (#1594) 2021-05-31 03:53:42 +07:00
Rua
f4b189792a
Migrate to using Ash as a base (#1593)
* Migrate to using Ash as a base

* Small change to test, to make it applicable to Vulkan 1.1
2021-05-31 03:42:51 +07:00
CABrinegar
81ec4bff40
Minor correction (#1589)
Correction to outdated comments describing function usage.
Corrections to English grammar.
Opinionated changes to sentence structures.
2021-05-24 17:00:12 +07:00
Rua
5175722c6b
Update winit to 0.25 (#1586) 2021-05-23 23:37:01 +07:00
Rua
2f7e7af7ee
Allow choosing the Vulkan max API version when creating Instance (#1585)
* Allow choosing the Vulkan max API version when creating Instance

* Rewrite feature handling, include all Vulkan 1.1 and 1.2 features

* Fixes

* Move features.rs to device module

* More small fixes

* Changelog
2021-05-23 23:09:50 +07:00
Rua
d36e5a2b1d
Major refactor of shader interface and pipeline layout types (#1581)
* Convert trait `ShaderInterfaceDef` into struct `ShaderInterface`

* Convert some instances of PipelineLayoutDesc to RuntimePipelineDesc

* Use regular Vec for now

* Convert PipelineLayoutDescUnion to RuntimePipelineDesc

* Convert PipelineLayoutDescTweaks to use RuntimePipelineDesc

* Remove PipelineLayoutDesc trait, replace with what used to be RuntimePipelineDesc

* Remove PipelineLayoutAbstract trait

* Fix bug

* Provide value for push constants to entry point instead of type

* Remove GraphicsEntryPointAbstract, allow pipelines without fragment shader

* Move descriptor::pipeline_layout to pipeline::layout

* Small changelog addition

* Fix bug
2021-05-23 22:33:25 +07:00
Rua
87e161cc78
Add SwapchainBuilder for easier (re)creation (#1566)
* Add `SwapchainBuilder` for easier (re)creation

* Small ergonomic improvement

* Add inline, some documentation fixes, remove `Option` from dimensions
2021-05-03 20:07:41 +07:00
Rua
0c1e0ff40d
Simplify handling of command buffer usage flags (#1563) 2021-04-26 21:53:18 +07:00
Rua
bb51359d32
Add an example demonstrating the basics of occlusion queries (#1548)
* Add an example demonstrating the basics of occlusion queries

* Make some functions const
2021-04-10 23:07:15 +07:00
Rua
803eacfcd6
Render pass restructuring (#1531)
* Create generic render pass description type, macro generates that instead of making its own type

* Replace EmptySinglePassRenderPassDesc with empty() constructor

* Remove RenderPass type parameter

* Remove RenderPassAbstract trait, type parameters that use it. Add GraphicsPipelineAbstract::subpass and Framebuffer::render_pass

* Remove RenderPassDescClearValues trait

* Remove RenderPassSubpassInterface and RenderPassCompatible traits

* Change RenderPassDesc into a struct

* Rename framebuffer module to render_pass, move/rename other things

* Rustfmt + changelog

* Documentation update
2021-04-10 18:09:03 +07:00
Rua
3b06879511
Split AutoCommandBuffer into primary and secondary (#1522)
* Split CommandBuffer trait into Primary and Secondary

* Split AutoCommandBuffer

* Rename Kind to CommandBufferLevel, change how it's structured
2021-04-05 18:25:20 +07:00
Daniel Tang
375db33ff9
Add script to run all examples (#1519) 2021-03-29 22:22:33 +07:00
Daniel Tang
b18bb01430
Fix descriptor set TypeStruct readonly detection (#1513) 2021-03-29 01:35:41 +07:00
Rua
58d19e5848
Make execute_commands safe to use (#1511)
* Add pipeline barriers when executing secondary command buffers

* Add locking for secondary command buffers when executed on a primary

* Propagate flags of secondary to primary

* Forgot the vec variant

* Add poisoning as a stopgap measure to protect against inconsistent builder state
2021-03-28 17:36:14 +07:00
gurchetansingh
65254ed10c
More memory changes with some thoughts on error handling (#1510)
* vulkano: instance: derive Ord, PartialOrd for PhysicalDeviceType

Useful for want differeniating integrated and discrete GPUs in a
hash table.

* vulkano: don't pull in all of crossbeam

Just pull in crossbeam-queue, since that's what used.

Having a smaller set of packages is easier for system integrators
such as myself.

* vulkano: memory: add import support, separate device memory and mappings, and much more!

- Chaining structs copied shamelessly and poorly from Ash :-)
- Import support, as previously promised.
- DeviceMemoryMappings so we can maybe one day expose the binding model.
- Attempts to rigorously check Valid Usage IDs (VUIDs).

A note about error handling:

- Currently, Vulkano error handling is a bit unclear.  For example, I
  didn't define a "DeviceMemoryMappingError" and simply reused the
  "DeviceMemoryAllocError" already present in the file.  In reality,
  both a theoretical "DeviceMemoryMappingError" and the already
  present "DeviceMemoryAllocError" should mostly just check the valid
  usage IDs present in the Vulkan spec (or return an error from the
  implementation).  This code pattern is common throughout Vulkano.
  Perhaps we should go to a simpler VulkanoResult<T>??? Just an idea.

- Also, is Vulkano a validation layer??? LunarG tracks every single
  VUIDs in their uber layer already:

  https://www.lunarg.com/wp-content/uploads/2019/04/UberLayer_V3.pdf

  Of course, given how Vulkan drivers are relatively straigtforward
  compared to OpenGL, it's generally possible to match LunarG *using
  Rust* if we just have a big enough community.  Whether we want to or
  not may be up for debate. For now, I just followed the original
  vision of tomaka and added validation.  If we do want to do it, then
  we have to be more rigorous about it.
2021-03-27 20:50:51 +07:00
Ilya Lakhin
b5c756298d
Migration to a newer API for #1296 (#1507) 2021-03-14 21:46:39 +07:00
Daniel Tang
24e8d72a4a
Allow const usage of features and BufferUsage (#1502) 2021-03-14 20:58:42 +07:00
Rua
1faa0c0668
Major rearrange of image and view types (#1499)
* Rename Dimensions > ImageViewDimensions, ViewType > ImageViewType

* Remove cubemap_compatible from ImageDimensions, add ImageCreateFlags to UnsafeImage creation

* Replace various UnsafeImage features/usage methods with new ones that return them directly

* Create image::view module, move view-related types into it

* Create safe ImageView type, remove some of the validity checks from UnsafeImageView

* Removed ImageViewAccess::samples and moved the descriptor_set_* functions to ImageAccess

* Remove ImageViewAccess::dimensions

* Impl ImageAccess for ImageView, remove impl on image types

* Rename ImageViewAccess to ImageViewAbstract, move some methods around

* Remove ImageViewDimensions (formerly Dimensions)

* impl Error for ImageViewCreationError

* Missing pub

* Typo

* Some small documentation changes

* Check for ImageCreateFlags that are currently not properly supported
2021-03-14 19:09:08 +07:00
Kazz
2527f56fda
Add example immutable-buffer-initialization (#1296)
* add example `immutable-buffer-initialization`

* 2017 -> 2020

* 2019 -> 2020

* fix API usage issues

Co-authored-by: Kazzix <kazzix14@gmail.com>
2021-03-14 16:43:59 +07:00
Philipp Renoth
e66e9a1fa2
segfaulting: DebugUtilsMessengerCallbackDataEXT::pMessageIdName may be null in debug callback (#1487)
* vulkano: DebugUtilsMessengerCallbackDataEXT::pMessageIdName may be null in debug callback

- https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCallbackDataEXT.html#VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter

* make `Message::layer_prefix` an Option
2021-02-11 04:39:15 +07:00
Philipp Renoth
9046655752
add DeviceExtensions::required_extensions(phys) (#1489) 2021-02-11 04:09:39 +07:00
Philipp Renoth
647c99d458
examples: fix debug example layers on macos using "VK_LAYER_KHRONOS_validation" (#1488) 2021-02-10 20:20:41 +07:00
EthanYidong
c57e2f471b
Replace filter map (#1486)
* Replace map to filter_map to prevent panics

* cargo fmt

* Update changelog

* Update docs to reflect changes
2021-02-08 18:43:56 +07:00
Rua
4a98caacbf
Update various dependencies (#1483) 2021-02-06 02:35:24 +07:00
Arc'blroth
32095992f9
[Breaking] Add support for dynamic buffers (#1480)
* Add glue to allow using dynamic uniform buffers

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* **EXTREMELY BREAKING** Add `dynamic_offsets` argument to all draw-related calls in AutoCommandBufferBuilder

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* **BREAKING** Pass data to update_buffer by reference (this allows using unsized data)

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* run cargo fmt

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* Dynamic offset safety checks™

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* Fix tests

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* Make `PipelineLayoutDescTweaks` public

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* Add a dynamic (uniform) buffer example

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>

* all the breaking changes

Signed-off-by: Arc-blroth <45273859+Arc-blroth@users.noreply.github.com>
2021-02-05 22:38:36 +07:00
Ilya Lakhin
af3ea98d5e
Shader types derive (#1460)
* Shader struct types derives and impls

* Vulkano Shaders fixes and cleanup. Example for Types-meta option

* Changelog update

* cargo fmt
2020-12-20 12:08:55 +07:00
Rua
ba6fe09155
Upgrade to winit 0.24 (#1457)
* Upgrade to winit 0.24

* Changelog
2020-12-20 05:57:57 +07:00
qnope
d90106d4df
[Vulkano-1441] Adding the possibility to generate mipmaps at image (#1451)
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
2020-12-19 10:08:48 +07:00
Ivan Zvonimir Horvat
9320d97115
examples: bin; pipeline_caching, add underscore for unused var (#1448) 2020-12-03 22:44:10 +07:00
Jan Tebernum
dea9a421d0
Finish pipeline cache (#1443)
* 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
2020-11-29 15:40:44 +07:00
Austin Johnson
3ecaaf5f48
Update examples to winit 0.23 (#1438) 2020-11-10 14:32:29 -06:00
Travis Finkenauer
ccd22a4aa4
Convert HTTP links to HTTPS (#1397)
* Convert readme HTTP links to HTTPS

* Convert source files' URLs to HTTPS
2020-11-10 11:03:50 -06:00
Rua
862593abae
Some safety checks for AutoCommandBufferBuilder::execute_commands (#1431)
* 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
2020-11-10 11:01:13 -06:00
Trangar
737016c047
Ran rustfmt and added rustfmt checkbox to pull req template (#1367)
* Ran rustfmt, updated PULL_REQUEST_TEMPLATE.md  and added a rustfmt check to CI

* Disabled the travis rustfmt check
2020-06-04 13:47:34 -05:00
Rua
1f27ab3ea9
AutoCommandBufferBuilder takes &mut self instead of self (#1376)
* AutoCommandBufferBuilder takes &mut self instead of self

* Changelog message
2020-06-01 09:41:42 -05:00
Austin Johnson
a4591a20cf
update examples to use ImageUsage::color_attachment instead of caps.supported_usage_flags (#1373)
* 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
2020-06-01 02:10:02 -05:00
Trangar
df493136cf
Added a .boxed() function to GpuFuture to reduce boilerplate code (#1362) 2020-05-12 18:05:09 -05:00
jeffw387
315f63abe5
new function to check image/device compatibility (#1339)
* new function to check image/device compatibility

* merged master to get rustfmt changes, format all
2020-05-09 19:36:20 -05:00
Ilya Lakhin
4f89414143
Dynamic Compute Shader local size (#1357)
* Exposing additional properties from the physical device

* dynamic-local-size example

* Changelog fix

* Extra whitespaces in changelog removed
2020-05-09 10:46:12 -05:00
jdnewman85
48109761a8
Add CpuBufferPool example (#1352)
* Use traingle example as template

* Remove triangle example comments

* Switch to CpuBufferPool chunks instead of CpuAccessibleBuffer for vertex data

* rustfmt

* Keep unwrap()s on same line
2020-05-08 17:26:34 -05:00
Austin Johnson
b245e6c4dc
Update winit, half, and smallvec; Release 0.18 (#1332)
update winit, half, and smallvec; release 0.18
2020-03-11 20:48:15 -05:00
simdimdim
8ef0beaddf
Update to winit 0.21 (#1321) 2020-02-05 23:31:02 -06:00
Austin Johnson
18189e0724
implement exclusive fullscreen (#1310)
* implement exclusive fullscreen

* fullscreen ext should be device ext

* add acquire/release

* require VK_KHR_get_surface_capabilities2

* fullscreen_exclusive is now an enum; explicit acquire/release methods added; FullscreenExclusiveError added to handle errors; FullscreenExclusiveLost varients added to acquire and present related errors

* add checks for double acquire/release; require AppControlled for acquire/release functions

* update examples and tests; resolve issue with try_gpu_lock() on SwapchainImage; update changelogs
2020-02-04 18:57:16 -06:00
José Miguel Sánchez García
c620aefd29
Add 's' to dimension in Swapchain::recreate_with_dimension (#1315) 2020-01-31 16:37:05 -06:00
Austin Johnson
dd7b202e80
export swapchain aquire suboptimal (#1311) 2020-01-29 01:44:28 -06:00
Austin Johnson
9977805518
Add host_cached field to all CpuAccessibleBuffer initializers to allow the user to perfer host cached memory. 2020-01-26 08:12:44 -06:00
Austin Johnson
56728c565f
build_vk_surface now takes EventLoopWindowTarget instead of EventLoop; added multi-window example (#1303) 2020-01-24 22:09:04 -06:00
Austin Johnson
b95c058f9a
upgrade winit to 0.20 and cocoa to 0.20 2020-01-23 01:37:12 -06:00
Rua
e09588bebf Decouple descriptor sets from pipeline (#1003)
* Decoupled descriptor sets from pipeline

* Fixed error in unit test

* Fixed more

* Forgot a file

* I think it works now. Don't mind me, I'm new

* Fix new example that got added

* add changelog entry

* remove unnecessary parentheses from previous merge
2019-11-24 03:07:29 -06:00
nickwilcox
b0fb255c02 Fix descriptor set codegen for SSBO after spirv update (#1275) 2019-11-17 11:20:07 -06:00
Antonino Siena
1b2a39d3b0 Added Swapchain functions (#1268)
* Derive PartialEq for DescriptorDesc and added examples

* Added an example

* Example improvements

* Formatting issue

* Added Swapchain::with_old_swapchain() and integrated ColorSpace into Swapchain::new()

* Updated Changelog

* More docs and small improvement

* Added Swapchain::surface
2019-11-05 04:03:45 -06:00
Austin Johnson
2e6868a0c0
Downgrade Winit back to 0.19; Release Vulkano 0.16 (#1267)
* fix after revert; release 0.16

* bump shaders version
2019-11-01 10:12:17 -05:00
Austin Johnson
db8f699c5c
update travis config to prevent timeouts (#1261) 2019-10-27 11:58:32 -05:00
Austin Johnson
b5d127bbf4
Update dependencies: lazy_static, half, syn, quote & proc-macro2 (#1252)
* Update dependencies: lazy_static, half, syn, quote & proc-macro2

* bump examples winit version
2019-10-24 04:09:08 -07:00
Austin Johnson
bb8c6cee36
update winit to alpha4; resolve warnings (#1249) 2019-10-24 00:46:40 -07:00
nickwilcox
901993b390 update shader include resolution to fix issues with windows (#1248) 2019-10-23 01:04:49 -07:00
theotherphil
ea8fed21f6 Fix OutOfHostMemory error in examples (#1246)
* Fix OutOfHostMemory error in examples

* Update changelog

* Add comment

* Point to summary issue
2019-10-20 14:27:33 -07:00
David Partouche
dc73b1f469 Implementing VK_EXT_debug_utils (#1237)
* Switching from VK_EXT_debug_report to VK_EXT_debug_utls
2019-10-20 15:26:07 -05:00
Antonino Siena
2bfed3db8b Support surface creation with winit >= 0.20 (#1239)
* Version change

* Allowed surface creation with winit >= 0.20

* Latest winit version

* Migrate to latest winit

* Migrated all examples to the latest winit version

* Version increment

* Formatting change

* Removed trailing white space

* Corrected method calls

* Missing _ in OSX methods

* Minor version change

* Minor version change
2019-10-18 14:24:20 -05:00
Mitchell
70139eae76 Adding dynamic stencil values to DynamicState (#1236)
* hooked up dynamic state to the synamic stencil values

* added validation, removed introduced whitespace

* comments

* updated changelog

* updated examples

* appeasing the CI
2019-10-18 10:23:05 -05:00
Hibiki KOMINAMI
1eadd98190 replaced immidiate dimensions value to dynamic (#1238) 2019-10-03 21:14:43 +10:00
nickwilcox
85be6295d0 Add indirect draw example (#1224)
* Add indirect draw example

* fix whitespace
2019-08-03 17:42:47 +02:00
Lucas Kent
fc6ac6fec1
Fix warnings on nightly (#1213) 2019-07-02 18:25:58 +10:00
Lucas Kent
f61193293f
rustc is now making use of the fact that derefencing a null pointer is UB. Remove all null dereferences (#1209) 2019-07-02 07:02:48 +10:00
mitchmindtree
3518268b7f Add an instancing.rs example. (#1163)
* Add an `instancing.rs` example.

This is a simple-as-possible example of how to do instancing with
vulkano. The example is a direct copy of the `triangle.rs` example but
removes the comments in favour of only explaining the differences
necessary for doing instancing. Rather than drawing one triangle in the
centre of the screen, the example draws 100 instances of the triangle in
a 10x10 grid and get slightly larger across each axis.

* Add missing word to InstanceData struct description
2019-03-15 14:05:07 +11:00
Lucas Kent
defa8f8f16
Update winit and crossbeam versions (#1177) 2019-03-12 19:34:03 +11:00
Lucas Kent
a3d503a5e5
Update example deps (#1155) 2019-01-19 18:23:45 +11:00
Lucas Kent
5d7e7ace62
Run CI on windows (#1148) 2019-01-05 15:12:38 +11:00
Lucas Kent
9a08414054
Upgrade vulkano-win and vulkano-shaders to rust 2018 (#1134)
* Upgrade vulkano-shaders to rust 2018
* Upgrade vulkano-win to rust 2018
2018-12-11 18:26:04 +11:00
Lucas Kent
34eeea6b52
Upgrade examples to rust 2018 (#1131) 2018-12-07 23:35:19 +11:00
Jakub Hlusička
a9704caea9 Feature shader include (#1116)
Implement support for the include directive in shader source files
2018-11-30 13:09:13 +11:00
Lucas Kent
d507cf4555
* Upgrade to winit 0.18 (#1105)
*   Setup macOS travis CI.
2018-11-08 12:12:20 +11:00
Lucas Kent
64d67b5d0d
Fix and enforce line endings + stray whitespace (#1099) 2018-11-01 14:45:30 +11:00
Lucas Kent
3fe7fc4495
Move shaders back that were supposed to be defined in the middle of main() { } (#1097)
They were initially moved because rust currently doesnt support
function-like proc macros in a function, but now they are wrapped in a
mod anyway.
2018-10-28 18:29:41 +11:00
Lucas Kent
9d46e08cc7
Cleanup examples (#1096)
*   replaced `.expect()` that provided no useful information with `.unwrap()`
*   used `use` consistently (all types are `use`d all functions have the parent module `use`d)
*   other formatting consistencies
2018-10-28 14:02:29 +11:00
Lucas Kent
c57289f536
refine shaders proc macro api (#1091)
macro renamed from `vulkano_shader!` to `shader!`
leave it up to the user to put it in a module
2018-10-28 10:10:29 +11:00
Lucas Kent
2153177210
Fix wayland resize issue (#1089)
Some drivers dont enforce a swapchain extent, so you need to check for
resize events from the os and then recreate the swapchain.
I took this opportunity to refactor the examples a bunch.
I want to do some more refactoring to make things consistent but I'll
leave that for a follow up PR.
2018-10-28 08:16:30 +11:00
Lucas Kent
494a0c30c8
vulkano-shaders - proc macros 2.0 (#1062)
* vulkano_shaders_derive exposes a proc_macro instead of a proc_macro_derive
* move vulkano_shader out of vulkano_shaders_derive and deprecate vulkano_shaders_derive
* Update documentation
* Move vulkano_shader! to root of mod, so it works with rust 1.30
2018-10-26 11:15:33 +11:00
Lucas Kent
24f93feffd
Fix window resize on deferred example (#1074) 2018-10-12 19:41:19 +11:00
Lucas Kent
4633c72bab
Add push constants example (#1072) 2018-10-11 11:42:56 +11:00
Lucas Kent
50920f868b
Export features and device extensions from the device module instead of the instance module (#1015) 2018-10-06 17:11:57 +10:00
Lucas Kent
d779829cbd
vulkano-shaders cleanup (#1058)
Use syn to construct ast instead of raw strings
Move spirv searching methods from lib.rs into its own module
Improve formatting
2018-10-05 17:00:02 +10:00
Lucas Kent
448bc1d1ad
Update dependencies (#1048) 2018-09-23 22:10:37 +10:00
Lucas Kent
f4f91f7ee1
Run LANG=en_us aspell --mode ccpp check $filename on every rust file (#1034) 2018-09-02 14:18:22 +10:00
Lucas Kent
e5d501fb5e
Copy examples from example repo (#1023)
*   Update PR template
*   Rename queue to queue_family
*   Add examples readme
*   Use the same image output filename
*   Move existing examples with multiple files into their own folder
*   Improve error message when running runtime-shader in the wrong directory
2018-08-30 11:37:51 +10:00
Lucas Kent
c720da66cd
Implement tessellation example (#1025) 2018-08-25 02:32:39 +10:00
Lucas Kent
7dc5de217b
Add trivial tessellation example and fix building a pipeline that uses tessellation shaders (#1024) 2018-08-24 20:01:00 +10:00
Gabriel Majeri
d80d5a6791 Fix Instance example (#872) 2018-08-11 16:48:03 +10:00
Lucas Kent
44e8207a27 Upgrade dependencies (#1012) 2018-08-10 14:50:38 +02:00
Lucas Kent
257994c7e8 Remove remaining std::mem::replace usages in examples (#1006) 2018-08-04 14:38:57 +02:00
Andrew Hickman
b0832072fc Avoid allocating a DynamicState every frame (#1008)
* Avoid allocating a DynamicState every frame

* Don't mutate the DynamicState

* Undo DynamicState::dynamic_state doc change
2018-08-04 14:38:33 +02:00
Jim Blandy
175763a953 Avoid gratuitous use of std::mem::replace. (#1005)
Either these calls to `replace` are unnecessary, or I'm going to learn something
I really need to know.

The only way difference I can see between `replace` and a simple assignment is
that `replace` returns ownership of the value to the caller, so the old value is
dropped after the new value has been put in place. But if Rust lets us assign to
or move from a variable, that means that no other alias can observe that
happening --- which I think means that the drop can't possibly care whether it
occurs before or after the move.
2018-07-30 12:07:35 +02:00
Lucas Kent
71d90e562a Upgrade deps + fix warnings in examples (#982)
* Upgrade dependencies

* Fix warnings in examples
2018-06-30 19:15:33 +02:00
Branan Riley
44530af81c Update winit to 0.13.1 (#953) 2018-06-05 12:58:59 +02:00
Cldfire
e515ffd846 Add overview of generated macro code to vulkano-shader-derive (#958) 2018-06-05 12:22:22 +02:00
Lucas Kent
bb3e6d616c Fix clear values in runtime-shader example (#968) 2018-06-05 12:21:36 +02:00
Gabriel Majeri
77c76b77ed Update dependencies (#903)
* Update dependencies

* Update winit to 0.11

* Update CHANGELOG.md
2018-03-13 12:34:30 +01:00
Casey Rodarmor
c11208521b Remove unused use std::iter; in triangle example (#935) 2018-03-13 11:36:09 +01:00
John Doneth
3231e92715 Fixed resizing bug in examples (#303) (#919)
Fixed the OutOfDate error in the examples by conditionally unwrapping futures
2018-02-14 08:51:52 +01:00
Branan Riley
e9104208c4 Allow Surface to reference an external window object (#848)
* Allow Surface to reference an external window object

This makes the Surface struct generic across a Window
type, so that a surface can own (or reference, if W is
an Arc) an external window object.

This also updates vulkano-win to take advantage of this.
There is no longer a dedicated Window struct in vulkano-win.
Instead, the Surface is simply passed ownership of the
winit::Window.

This fixes #844

* Update examples for new surface API

* Update Changelog

* Remove unnecessary send/sync bounds

* Update swapchain docs for new Surface behavior
2018-02-13 14:29:36 +01:00
thelearnerofcode
80e1ed6dc3 Updated Dependencies. (#876)
* Updated Dependencies

* Complied with changes mentioned in pull request.
2017-12-11 10:23:40 +01:00
tomaka
c16e4d81b2
Fix triangle example panicking on wayland (#873) 2017-11-11 11:23:53 +01:00
Pyry Kontio
ddb66a5513 Fixed the layer scaling issue on macOS. (#830)
* Fixed the layer scaling issue on macOS. Changed the triangle example to use the surface extents instead of window dimensions, as that seems to be a more robust source of correct information.

* Updated changelog. Fixed other examples' window extent problem.
2017-09-26 10:29:26 +02:00
tomaka
bdf026a78b Propagate allocation errors to CpuBufferPool::next() and chunk() (#809)
* Propagate allocation errors to CpuBufferPool::next() and chunk()

* Add entry in CHANGELOG
2017-09-09 08:55:20 +02:00
tomaka
9bf5e7f252 Remove the guide examples (#784) 2017-08-28 20:31:10 +02:00
tomaka
4208814e74 Fix #760 (#761) 2017-08-23 15:45:37 +02:00
tomaka
f02e021158 Remove the list of queue families in most places when creating a buffer or image (#746)
* Add Device::active_queue_families()

* Remove queue families parameter for ImmutableImage

* Remove queue families param from ImmutableBuffer

* Remove queue_families parameter from CpuBufferPool

* Remove queue families parameter from CpuAccessibleBuffer

* Fix examples
2017-08-17 11:59:59 +02:00
tomaka
3bfd84544e Add the triangle guide example (#720) 2017-08-05 10:32:14 +02:00
tomaka
6abeba4f3d Remove PipelineLayoutDescNames (#712) 2017-08-03 12:01:25 +02:00
tomaka
bf82214ec1 Rework shader entry points (#708) 2017-08-02 10:42:30 +02:00
Philip Woods
572554dbc1 Added window resizing to examples (#671)
* Added Swapchain recreation to triangle example

* Triangle example no longer panics when manually resizing window

* Triangle example now correctly resizes viewport

* Added window resizing support to image example

* Removed unused code from image example

* Moved dimension definition earlier in triangle and image example

* Replaced width and height variables in examples with dimensions

* Added window resizing support to teapot example

* Removed unused code from teapot example

* Removed duplicate code creating framebuffers
2017-07-26 17:58:40 +02:00
Benjamin Saunders
c085e193d9 Omit rarely-needed parameters from ImmutableImage convenience ctors 2017-07-24 01:09:45 -07:00
Benjamin Saunders
8a3bf4d191 Refactor ImmutableImage for convenient, safe initialization 2017-07-23 14:40:53 -07:00
tomaka
ef9a5f98e3 Merge pull request #667 from fst3a/spv-examples
Example showing how to manually load SPIR-V shaders from disk
2017-07-23 10:12:37 +02:00
Constantine
af0bb0ce9e Accomodate requested changes 2017-07-22 22:47:53 +03:00
tomaka
5f9b6dcaf2 Fix the examples not working on Android 2017-07-22 16:44:52 +02:00
Constantine
72b17b8e9d Add spv-1 example 2017-07-20 16:58:26 +03:00
Pierre Krieger
3fe108336c Fixes to the CpuBufferPool 2017-07-19 19:19:40 +02:00
Jason Davies
b06f45736d Use supports_compute() in compute example. 2017-07-19 01:10:38 +01:00
tomaka
139a13de62 Merge pull request #632 from tomaka/cb-builder-builders
Add other constructors for AutoCommandBufferBuilder
2017-07-11 12:33:39 +02:00
Pierre Krieger
437b046539 Fix examples 2017-07-11 11:33:35 +02:00
Pierre Krieger
c34491ed57 Add the example for the mandelbrot fractal 2017-07-11 11:09:01 +02:00
Pierre Krieger
d06e2abf3c Add other constructors for AutoCommandBufferBuilder 2017-07-10 21:27:42 +02:00
Pierre Krieger
205b56327e Fix teapot rotation slowly 2017-07-08 12:54:23 +02:00
Pierre Krieger
7c48e7c891 Finish updating examples for PersistentDescriptorSet 2017-07-08 12:13:05 +02:00
Pierre Krieger
bceafa2b03 Add the example for the next section of the guide 2017-07-08 11:13:32 +02:00
Pierre Krieger
fcae155883 Add errors to PersistentDescriptorSet building 2017-07-07 17:07:11 +02:00
Pierre Krieger
3d718c57a0 Update the examples for PersistentDescriptorSet 2017-07-07 17:07:11 +02:00
Pierre Krieger
5cb9cbd367 Fix #599 2017-07-05 18:16:14 +02:00
tomaka
9c05d74481 Merge pull request #591 from tomaka/fix-590
Fix #590
2017-07-05 09:38:45 +02:00
Pierre Krieger
6c1cd22fba Add the examples of the guide 2017-07-05 09:09:44 +02:00
Pierre Krieger
d64c7bd21f Fix #590 2017-07-04 17:30:17 +02:00
Pierre Krieger
9e83984278 Publish 0.5.0 2017-07-04 14:26:41 +02:00
tomaka
d293c6cbcf Pass the device by value when loading a shader 2017-07-03 16:53:44 +02:00
Rukai
eb9ccd44e8 pass PhysicalDevice by value 2017-07-02 14:12:48 +10:00
tomaka
d7c9d08f76 Merge pull request #551 from tomaka/acquire-sc-timeout
The timeout of acquire_next_image is now optional
2017-06-27 07:48:11 +02:00
Pierre Krieger
e9fdcba73f Remove old gitignore files 2017-06-26 10:35:05 +02:00
Pierre Krieger
4df639a834 The timeout of acquire_next_image is now optional 2017-06-25 10:28:22 +02:00
Pierre Krieger
d1b83a5192 Fix some warnings and examples 2017-06-23 10:32:49 +02:00
Pierre Krieger
d372724054 Rework command buffers 2017-06-23 07:34:04 +02:00
Pierre Krieger
78ddfba364 Add a compute shader example, and bugfix 2017-06-20 15:07:21 +02:00
Gabriel Majeri
6c3a7193e7 Fix some more unused code 2017-06-20 06:56:51 +03:00
Gabriel Majeri
3bd0d38f97 Update examples' libraries 2017-06-20 06:54:35 +03:00
Gabriel Majeri
9d2c028699 Fix unused code / imports in the examples 2017-06-20 06:53:53 +03:00
tomaka
4d96d9a912 Merge pull request #513 from tomaka/g-pipeline-builder
Add a GraphicsPipelineBuilder
2017-06-14 10:22:54 +02:00
Pierre Krieger
7723ba55e4 Add dummy for specialization constants in builder 2017-06-13 15:21:19 +02:00
Pierre Krieger
53fb62c6b1 Use FIFO present mode in exemples 2017-06-11 19:01:00 +02:00
tomaka
29096fc53f Minor warning fixes and comment restore 2017-06-10 18:58:25 +02:00
tomaka
80e8848e32 Convert other examples 2017-06-10 18:55:05 +02:00
tomaka
64b8db24ea Make triangle example work 2017-06-10 18:36:01 +02:00
Pierre Krieger
ad3307d252 Use vulkano-shader-derive in the examples 2017-06-03 12:49:50 +02:00
Pierre Krieger
db3e128143 Rework framebuffer creation 2017-06-02 20:36:43 +02:00
Pierre Krieger
953b89f52e Architectural rework in swapchain 2017-05-26 13:12:21 +02:00
Pierre Krieger
a3c30dc183 Creating a Surface now takes the Arc<Instance> by value 2017-05-26 10:51:28 +02:00
Pierre Krieger
0d918e3779 Rework Surface::is_supported() and update examples 2017-05-26 10:42:03 +02:00
Pierre Krieger
6d106565d3 Turn all the constructor that take a &Arc<Device> to Arc<Device> 2017-05-25 21:44:54 +02:00
Pierre Krieger
3c51a3eb0b Update the examples to use the new system 2017-05-21 19:04:14 +02:00
Pierre Krieger
6f32b7d1c0 Fix examples 2017-05-20 14:06:19 +02:00