Vladimír Vondruš
3b9acd27fb
Vk: base class for Vulkan tests.
...
Not much there yet, but this alone removes the congitive overhead when
testing Vulkan functionality on (some, whatever) device.
6 years ago
Vladimír Vondruš
4fd5e51358
Vk: fix linker issues on MinGW.
6 years ago
Vladimír Vondruš
55ec24062d
Vk: GCC 4.8, stop it, it's not Monday today.
6 years ago
Vladimír Vondruš
f75cc9330c
Vk: a non-error-prone way to retrieve queues after device creation.
...
I wonder why this couldn't be done this way in the Vulkan API directly.
6 years ago
Vladimír Vondruš
374f816762
Vk: device creation.
6 years ago
Vladimír Vondruš
b91e137058
Vk: initial seed for the magnum-vk-info utility.
6 years ago
Vladimír Vondruš
81cafc9ddf
Vk: querying device queue family properties.
6 years ago
Vladimír Vondruš
722da61e65
Vk: externally tuneable device selection.
6 years ago
Vladimír Vondruš
d28442e9b1
Vk: device extension enumeration.
6 years ago
Vladimír Vondruš
cbdea03862
Vk: test coverage with various extensions and versions.
6 years ago
Vladimír Vondruš
6515c04be1
Vk: enable KHR_get_physical_device_properties by default on Vulkan 1.0.
6 years ago
Vladimír Vondruš
aa384a5d38
Vk: initial device enumeration.
6 years ago
Vladimír Vondruš
0392aeb878
Vk: instance creation.
6 years ago
Vladimír Vondruš
b7b466d49a
Vk: parsing Version from configuration.
...
Needed so I can implement --magnum-vulkan-version.
6 years ago
Vladimír Vondruš
bb00bf43bf
Vk: variadic Is[Instance]Extension checks.
...
Because I'd like to static_assert on these.
6 years ago
Vladimír Vondruš
132bcacf28
Vk: add HandleFlags, similar to GL::ObjectFlags.
6 years ago
Vladimír Vondruš
189dad59c6
Vk: yeah well of course we can't encode Magnum version into VK_VERSION.
...
Sigh.
6 years ago
Vladimír Vondruš
64ba1e6732
Vk: enumerating instance extension properties.
...
Device extension properties will reuse a large part of this API.
6 years ago
Vladimír Vondruš
18e223e4d9
Vk: enumerating layer properties.
...
Instance layers, with the same interface designed to be reused for
device-level layers.
6 years ago
Vladimír Vondruš
ffbceef22c
Vk: retrieving instance version.
6 years ago
Vladimír Vondruš
6c9c9d9194
Vk: expose all extensions for version 1.2.
...
Also provide compile-time info with them, a runtime list and everything
else similar to what's done for GL.
6 years ago
Vladimír Vondruš
65552a6c26
Vk: add Version enum, utities for version comparison and extraction.
...
Same as the VK_VERSION_*() macros but without C-style casts that produce
warnings.
6 years ago
Vladimír Vondruš
f4f8612f7e
Vk: wrap VkResult, add an assert macro for it.
6 years ago
Vladimír Vondruš
ff41d45be8
Vk: doc++
6 years ago
Vladimír Vondruš
87381d1744
modules: make our own FindVulkan.cmake.
...
With blackjack and actually working properly on all platforms.
Seriously, did nobody ever try to use the vanilla version on Mac or MSYS
since it was added several years ago in CMake 3.7?
6 years ago
Vladimír Vondruš
5222cf3478
doc: change all "latest" additions/deprecations to 2020.06.
6 years ago
Vladimír Vondruš
1fd8722d51
doc: provide a separate \def_vk and \val_vk.
...
Originally, \def_vk was used for enum values (equivalently to how
\def_gl is used for "enum" values in GL), but I also need to reference
actual defines such as VK_VERSION_MINOR(), so renamed it to \val_vk and
reused \def_vk for actual defines.
6 years ago
Vladimír Vondruš
19e0e96d74
Updated copyright year.
6 years ago
Vladimír Vondruš
f269a1baa8
Vk: forgotten leftovers from the depths of MeshData renaming.
6 years ago
Vladimír Vondruš
65a2ced2a7
Make this compile and test cleanly with CORRADE_NO_ASSERT defined.
6 years ago
Vladimír Vondruš
b3b61b22e4
Add matrix vertex formats.
6 years ago
Vladimír Vondruš
d096aa68cc
Add MeshPrimitive::Instances, Faces and Edges.
...
To support meshes that are not so GPU-friendly. And also meshlets at a
later point.
6 years ago
Vladimír Vondruš
c9634508e3
Enlarge MeshPrimitive to four bytes, allow wrapping impl-specific values.
...
And also handle them specially in GL::meshPrimitive() and
Vk::vkPrimitiveTopology().
6 years ago
Vladimír Vondruš
7d44bccd9b
Provide reliable mapping of VertexFormat to GL and Vulkan.
...
GL was missing a check whether given format is available on a target
(for example double types are not on ES), and for Vulkan we need something
similar to pixel format mapping as well.
6 years ago
Vladimír Vondruš
d46061b285
Make MeshPrimitive and MeshIndexType enums only 8bit.
...
Otherwise they take up too much space.
6 years ago
Vladimír Vondruš
7fd92c10dd
Reserve zero MeshPrimitive and MeshIndexType for invalid values.
...
Better for checking accidents, as picking a wrong primitive / index type
can lead to *serious* rendering issues. Similarly to a change done to
(Compressed)PixelFormat in 2019.10.
6 years ago
Vladimír Vondruš
3f57130547
GL, Vk: future-proof mesh primitive and index mapping tables.
...
The test now explicitly goes through all generic names and checks that
the mapping doesn't blow up.
6 years ago
Vladimír Vondruš
d2122a3811
Vk: the heck?!
...
I copypasted real bad here.
6 years ago
Vladimír Vondruš
02d1eda03a
Vk: support 8-bit index types.
6 years ago
Vladimír Vondruš
eee136d3e5
Vk: argh, more copypaste brainfarts in the tests.
6 years ago
Vladimír Vondruš
41cf29cff6
Vk: make room for mapping vertex formats to a VkFormat.
6 years ago
Vladimír Vondruš
61af7672d1
Test: adapted for the upcoming asserting CORRADE_GRACEFUL_ASSERT.
6 years ago
Vladimír Vondruš
50ac6d1a13
Test: fix false sense of security in pixel/mesh enum mapping tests.
...
The stripped-down versions didn't actually test for correct order
because there was no external API result to check against expected
output. That's fixed now, plus clarified some comments and removed
copypasted nonsense.
6 years ago
Vladimír Vondruš
3a243a04b2
CMake: put all binaries into a dedicated location in the build dir.
...
This makes it possible to:
- finally use Magnum as a CMake subproject on Windows and have your
executables not fail to run with a "DLL missing" error (and the
setting is put to cache so superprojects just implicitly make use of
that)
- run tests on Windows without having to install first
- use dynamic plugins from a CMake subproject on any platform without
having to install first or load them by filename --- and the plugin
directory is now easily discovered as relative to
libraryLocation() of the library implementing given plugin interface
7 years ago
Vladimír Vondruš
dc4c24da03
Vk: fix handling of unsupported formats.
...
Until now, Vulkan supported all formats. With the 3D ASTC ones not
anymore and that uncovered a bug.
7 years ago
Vladimír Vondruš
d9cef2feea
Add HDR ASTC pixel formats.
...
Both Vulkan and Metal have separate enums for these, GL is the only odd
one out.
7 years ago
Vladimír Vondruš
893d5d38bc
ASTC: the pain never ends (3D formats).
...
GL has an extension, but only for ES, not on desktop. Vulkan has
nothing yet (due to there being just ARM that implements it, no other
vendor), except those being listed in a KTX format specification.
7 years ago
Vladimír Vondruš
71a9f1bbbf
Reserve zero [Compressed]PixelFormat for an invalid value.
...
Catches accidents better -- just look at the diff. Might catch accidents
in your code now as well, so beware!
7 years ago
Vladimír Vondruš
40b8815b9d
Added sRGB formats to PixelFormats + R and RG sRGB GL texture formats.
...
The extension support is a mess, as usual. This time the ES flavor
supports something that desktop doesn't and WebGL lack those altogether.
Yay.
7 years ago
Vladimír Vondruš
8e57060f39
Support for PVRTC compressed pixel format.
7 years ago