Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for issue #148 #149

Open
wants to merge 108 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
107cc10
Merge pull request #53 from GPUOpen-LibrariesAndSDKs/update_wk48
DominikWitczakAMD Dec 1, 2017
c5e9bca
Add opt-in MT-safety support; refactor existing interfaces; address v…
DominikWitczakAMD Jan 24, 2018
3944c50
Merge pull request #57 from GPUOpen-LibrariesAndSDKs/update_wk4
DominikWitczakAMD Jan 24, 2018
5e543dc
Major update.
DominikWitczakAMD Mar 12, 2018
1e7d471
Fix config.h issues
DominikWitczakAMD Mar 12, 2018
28e50a0
gcc issues
DominikWitczakAMD Mar 12, 2018
abfd633
gcc fixes
DominikWitczakAMD Mar 13, 2018
e46d5b8
Merge pull request #61 from GPUOpen-LibrariesAndSDKs/update_wk11
DominikWitczakAMD Mar 13, 2018
0528fad
Bug-fixes & improvements:
DominikWitczakAMD Mar 27, 2018
fbb3aba
Merge pull request #69 from GPUOpen-LibrariesAndSDKs/update_wk13
DominikWitczakAMD Mar 28, 2018
be89283
Fix VmaVector resize call
Apr 6, 2018
193faf2
Merge pull request #73 from joshua-r/master
DominikWitczakAMD Apr 6, 2018
6856a26
Week 15 update:
DominikWitczakAMD Apr 12, 2018
07d1751
cmake glitches..
DominikWitczakAMD Apr 12, 2018
888ddbc
gcc compilation fixes
DominikWitczakAMD Apr 12, 2018
ce725c7
Merge pull request #78 from GPUOpen-LibrariesAndSDKs/update_wk15
DominikWitczakAMD Apr 13, 2018
d969279
Add support for the following extensions:
DominikWitczakAMD Apr 23, 2018
eb1be77
Merge pull request #87 from GPUOpen-LibrariesAndSDKs/update_wk17
DominikWitczakAMD Apr 23, 2018
36dd3c1
Fix build without glslang
razvan1024 Apr 25, 2018
fea0930
Bug-fixes & improvements
DominikWitczakAMD Apr 27, 2018
c4ebcb0
Merge pull request #90 from GPUOpen-LibrariesAndSDKs/update_wk18
DominikWitczakAMD Apr 27, 2018
14e7144
Merge pull request #88 from razvan1024/no_glslang
DominikWitczakAMD Apr 27, 2018
bfbeb87
Fixed the quatifier and label problem assocated with bake_spirv_by_sw…
Mesonnaise Aug 2, 2018
8e49dea
Moved the label to avoid gcc compiling problems
Mesonnaise Aug 2, 2018
f53862a
Add support for EXT_vertex_attribute_divisor
DominikWitczakAMD Aug 16, 2018
150fbf9
Merge pull request #97 from GPUOpen-LibrariesAndSDKs/update_wk33
DominikWitczakAMD Aug 16, 2018
bc24add
Merge pull request #95 from Mesonnaise/master
DominikWitczakAMD Aug 16, 2018
db74a0a
Fix an issue where gfx pipeline create info structs would be malforme…
DominikWitczakAMD Aug 20, 2018
c944fec
Merge pull request #98 from GPUOpen-LibrariesAndSDKs/update_wk34
DominikWitczakAMD Aug 20, 2018
6d723dc
Fix warn: potentially uninitialized variable used
ArkadiuszSarwa Sep 4, 2018
eda1c68
Cmake ANVIL_LINK_EXAMPLES include examples Alvin
ArkadiuszSarwa Sep 5, 2018
58d54b6
Fix round_up arguments cast
ArkadiuszSarwa Sep 5, 2018
cccbac0
Merge pull request #102 from ArkadiuszSarwa/master
DominikWitczakAMD Sep 10, 2018
7b85c6c
Week38 update
DominikWitczakAMD Sep 18, 2018
46630b7
Address compilation warnings
DominikWitczakAMD Sep 18, 2018
8645bf2
Merge pull request #106 from GPUOpen-LibrariesAndSDKs/update_wk38
DominikWitczakAMD Sep 19, 2018
43e2fd9
Introduce enum classes for VK enums; various bug-fixes
DominikWitczakAMD Oct 1, 2018
942eb52
Merge pull request #109 from GPUOpen-LibrariesAndSDKs/update_wk40
DominikWitczakAMD Oct 1, 2018
93689b6
Update wk40 #2
DominikWitczakAMD Oct 5, 2018
650fd70
Fix Travis CI errors..
DominikWitczakAMD Oct 5, 2018
ec57e42
Merge pull request #110 from GPUOpen-LibrariesAndSDKs/update_wk40_2
DominikWitczakAMD Oct 5, 2018
9bfaea8
Week 41 update
DominikWitczakAMD Oct 12, 2018
a5ce850
Merge pull request #111 from GPUOpen-LibrariesAndSDKs/update_wk41
DominikWitczakAMD Oct 12, 2018
97e4098
Add missing include guard to misc/vulkan.h
janisozaur Oct 12, 2018
4d9af28
Merge pull request #112 from janisozaur/missing-incl-guard
DominikWitczakAMD Oct 15, 2018
5c1a365
fix cmake build on msvc
Oct 15, 2018
b93949a
Merge pull request #113 from theswiftfox/master
DominikWitczakAMD Oct 16, 2018
ac62724
Bug-fixes and improvements
DominikWitczakAMD Oct 22, 2018
fddaf7d
Merge pull request #114 from GPUOpen-LibrariesAndSDKs/update_wk43
DominikWitczakAMD Oct 22, 2018
ed958ad
Update graphics_pipeline_create_info.h
Silverlan Oct 24, 2018
802a979
Update graphics_pipeline_create_info.cpp
Silverlan Oct 24, 2018
44772e4
Update types_enums.h
Silverlan Oct 24, 2018
dccf18e
Update graphics_pipeline_create_info.cpp
Silverlan Oct 24, 2018
71c3d2f
Merge pull request #116 from Silverlan/CullModeFlagBits_fix
DominikWitczakAMD Oct 26, 2018
c5c8bd3
Merge pull request #115 from Silverlan/master
DominikWitczakAMD Oct 26, 2018
b4e0173
Bug-fixes and improvements
DominikWitczakAMD Oct 26, 2018
2003e8e
Merge pull request #117 from GPUOpen-LibrariesAndSDKs/update_wk43_2
DominikWitczakAMD Oct 26, 2018
806504a
Fix a lock-up which could occur if:
Oct 27, 2018
0269884
Make destructors virtual where needed
janisozaur Oct 27, 2018
4d6b6a4
Remove superfluous const from simple return types
janisozaur Oct 29, 2018
0e88059
Merge pull request #119 from kbiElude/window_title_lockup_fix
DominikWitczakAMD Nov 5, 2018
58260f6
Merge pull request #122 from janisozaur/superfluous-const
DominikWitczakAMD Nov 5, 2018
2afff4f
Merge pull request #120 from janisozaur/patch-1
DominikWitczakAMD Nov 6, 2018
387f548
Add support for VK_EXT_pci_bus_info
DominikWitczakAMD Nov 6, 2018
63ad8ed
Merge pull request #123 from GPUOpen-LibrariesAndSDKs/update_wk45
DominikWitczakAMD Nov 6, 2018
d8fb67a
Merge pull request #1 from GPUOpen-LibrariesAndSDKs/master
kbiElude Nov 16, 2018
506a233
Renderpasses: Two getters should return more info than they currently do
Nov 16, 2018
dd34e13
Merge pull request #126 from kbiElude/rp_create_info_missing_reflecti…
DominikWitczakAMD Nov 19, 2018
ec22184
Bug-fixes and improvements; addresses #125
DominikWitczakAMD Nov 19, 2018
f434bc2
Merge pull request #127 from GPUOpen-LibrariesAndSDKs/update_wk47
DominikWitczakAMD Nov 19, 2018
42bdd01
Fix misspelling
thepra Nov 20, 2018
1279c20
Merge pull request #1 from thepra/thepra-fix-misspelling
thepra Nov 20, 2018
31a230e
Merge pull request #130 from thepra/master
DominikWitczakAMD Nov 28, 2018
01a9233
Extensions: Added support for VK_EXT_debug_utils
DominikWitczakAMD Nov 28, 2018
3079f5f
Update (wk #48)
DominikWitczakAMD Nov 28, 2018
8679ce5
Merge remote-tracking branch 'origin/master' into HEAD
Dec 28, 2018
25a458b
Add support for VK_KHR_create_renderpass2
DominikWitczakAMD Jan 15, 2019
01e0113
Merge pull request #138 from GPUOpen-LibrariesAndSDKs/update_wk3
DominikWitczakAMD Jan 15, 2019
a9d8e22
Added mGPU support to OutOfOrderRasterization example application
DominikWitczakAMD Mar 8, 2019
5662279
Address failures reported by CI
DominikWitczakAMD Mar 8, 2019
627473b
Merge pull request #140 from GPUOpen-LibrariesAndSDKs/update_wk10
DominikWitczakAMD Mar 8, 2019
c721010
Merge remote-tracking branch 'origin/master' into HEAD
Mar 24, 2019
ca7c985
Stability bug-fixes
Mar 24, 2019
36480dd
Fix an issue where map requests targetting buffers assigned memory bl…
Mar 24, 2019
042202a
Merge pull request #141 from kbiElude/bugfixes
DominikWitczakAMD Mar 24, 2019
625cc9b
Bug-fixes
DominikWitczakAMD Mar 27, 2019
f78c282
Merge pull request #143 from GPUOpen-LibrariesAndSDKs/update_wk13_2
DominikWitczakAMD Mar 27, 2019
e580439
Bug-fixes and improvements.
DominikWitczakAMD Apr 4, 2019
8f4cb0e
Merge pull request #146 from GPUOpen-LibrariesAndSDKs/update_wk14
DominikWitczakAMD Apr 4, 2019
9fa133f
Update query_pool.cpp
Silverlan Apr 16, 2019
d71ccac
Update query_pool.h
Silverlan Apr 16, 2019
c49c1a2
Bug-fixes and minor additions
Silverlan Dec 8, 2019
f65f3ec
no message
Silverlan Feb 3, 2020
01ea81c
no message
Silverlan Apr 27, 2020
14a3c78
Renamed "MemoryBarrier" struct to "MemoryBarrierAnv" to avoid naming …
Silverlan May 3, 2020
c195e8c
Removed "Treat warnings as errors" flag
Silverlan May 17, 2020
3cdd6b9
Implemented changes for latest Vulkan SDK version (1.1.114)
Silverlan Aug 9, 2020
717c77a
no message
Silverlan Feb 8, 2021
e16214c
- Update VMA to latest version
Silverlan Mar 4, 2021
de05235
- Fix specialization constant data being used incorrectly when specia…
Silverlan Apr 20, 2021
afe1565
Add config include file
Silverlan Jul 13, 2021
03e156b
General library update
Silverlan Oct 1, 2022
56d79ad
feat(debug): add additional debug information on assertion failure
Silverlan Jan 14, 2023
b9c732c
feat: add parameter to disable update in DescriptorSet::get_descripto…
Silverlan Nov 17, 2023
cd1ea68
feat: Queue::submit now returns VkResult enum instead of boolean
Silverlan Jan 21, 2024
764daa2
fix: fix VMA crash caused by null VkInstance
SlawekNowy Apr 29, 2024
9512f7a
build(cmake): change visibility of library links
Silverlan May 28, 2024
6af5129
build(cmake): set c++20 standard
Silverlan Jun 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
build/
include/config.h
deps/glslang/build_winx64/
deps/glslang_bak/
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ install:
script:
- mkdir build
- cd build
- ${DEPS_DIR}/cmake/bin/cmake -G "Unix Makefiles" .. && make
- ${DEPS_DIR}/cmake/bin/cmake -DCONTINUOUS_INTEGRATION_RUN=ON -G "Unix Makefiles" .. && make
192 changes: 152 additions & 40 deletions CMakeLists.txt

Large diffs are not rendered by default.

78 changes: 11 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Anvil

This is a README file for Anvil v1.3.1, a framework for Vulkan™.
This is a README file for Anvil, a framework for Vulkan™.
The README is organized as a FAQ.

|Toolchain|Status|
Expand All @@ -15,8 +15,9 @@ MIT. See `LICENSE.txt`.

What is this?
------
Anvil is a framework for Vulkan v1.0, which we have been using internally for
quite some time now, in order to develop various Vulkan applications.
Anvil is a framework for Vulkan v1.0 and v1.1, which we have been using internally for
quite some time now, in order to develop various Vulkan applications. This guarantees
that vast majority of the functionality exposed by the library is regularly tested.

The general idea we started from was to have a cross-platform tool, which would
reduce the amount of time required to write portable Vulkan-based apps from
Expand All @@ -34,16 +35,10 @@ Anvil was designed with the following goals in mind:
using Vulkan, without hiding the API behind thick abstraction layers.
- Simplify validation layer usage. All you have to do is specify which function
you would like to be called if a debug call-back is made, and that's it.
- Provide a reasonable level of deferred approach to baking objects, in order
to emulate mutability of certain Vulkan objects to a certain degree. Note
that this is an optional feature - you are free to request baking of any
object at any time, in ordre to ensure it will never happen at draw time.
- Provide a simple cross-platform implementation for areas unrelated to Vulkan
(eg. window management)

Anvil can be thought of as a toolbox. You are free to use any of its parts you
like, and write your own code for everything else. Any Anvil wrapper for an
actual Vulkan object can be queried to retrieve the raw Vulkan handle.
- Provide a simple way (with optional flexibility) to manage memory allocations
and memory bindings.

Anvil is **not** the right choice for developers who do not have a reasonable
understanding of how Vulkan works. Its goal is not to provide a glBegin/glEnd-like
Expand All @@ -61,8 +56,7 @@ What are Anvil's requirements?
In order to build Anvil, you will need the following software:
- C++11 compiler.
- CMake
- Vulkan RT 1.0.39.1 or newer.
- Vulkan SDK 1.0.13.0 or newer.
- Vulkan SDK (the latest available version is highly recommended)

To build Anvil on Linux, additional packages should be installed:
- libxcb-keysyms (For ubuntu, use "apt-get install libxcb-keysyms1-dev")
Expand All @@ -78,54 +72,9 @@ implementation and on AMDGPU-PRO Vulkan implementation on Linux.

What can it do?
------
This version of Anvil provides:

* Low-level ref-counted wrappers for the following Vulkan v1.0 features:
- Buffer objects (sparse and non-sparse)
- Buffer views
- Command buffers
- Command pools
- Descriptor pools
- Descriptor sets
- Descriptor set layouts
- Devices
- Events
- Fences
- Framebuffers
- Image objects (sparse, sparse bindings, PRT)
- Image views
- Instances
- Physical devices
- Pipeline cache
- Pipeline layouts
- Query pools
- Queues
- Renderpasses
- Rendering surfaces
- Samplers
- Semaphores
- Shader modules
- Swapchains

* More complicated wrappers:
- Compute / graphics pipeline managers: provide a way to create regular/derivative pipelines with automatic pipeline layout re-use.
- Descriptor set groups: simplify descriptor set configuration, management and updates.
- Memory allocator: implements a memory allocator with two back-ends: one that is more appropriate for one-shot
mem alloc requests, and one that can be used for dynamic memory allocation purposes.
- Pipeline layout manager: caches all created pipeline layouts to avoid instantiating duplicate layout instances.

* Miscellaneous functionality:
- Debug markers: names and tags can be optionally assigned to any of the created objects. If VK_EXT_debug_marker is enabled, these
will be automatically patched through to layers that implement the extension on the running platform.
- Format info reflection: provides information about format properties.
- GLSL -> SPIR-V conversion: provides glslang-based GLSL->SPIR-V conversion. The conversion is performed in run-time. Disassembly can also be retrieved, if needed.
- GLSL -> SPIR-V conversion cache: re-uses SPIR-V blobs throughout Instance's lifetime if GLSL->SPIR-V conversion is requested for GLSL source code which has already
been converted to SPIR-V before.
- IO: provides a number of functions to simplify directory- and file-related operations.
- Object tracker: tracks object allocations and helps detect object leakage.
- Shader module cache: re-uses shader module instances across Instance lifetime. Improve execution time if your application instantiates shader modules with
exactly the same configuration during its runtime.
- Time: provides a way to query current time using high-performance system queries.
Anvil provides full support for functionality exposed in Vulkan 1.0 and Vulkan 1.1.
We also try to do our best to keep it up to date with any extensions our Vulkan implementations
expose.

We are planning to keep adding new features in the future.

Expand All @@ -143,12 +92,7 @@ OutOfOrderRasterization and the other example applications are located in the

What are the known issues?
------
Just a handful:
* All command queues are currently assigned a priority of 1.0.
* DescriptorSetGroup wrapper does not leverage the <releaseable_sets> flag at
baking time.

These will be addressed at some point in the future.
Please observe the "Issues" tab for more details.

Who made it?
------
Expand Down
Loading