diff --git a/doc/snippets/MagnumVk.cpp b/doc/snippets/MagnumVk.cpp index 5e7ca0ebc..6135e19a6 100644 --- a/doc/snippets/MagnumVk.cpp +++ b/doc/snippets/MagnumVk.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include "Magnum/Magnum.h" #include "Magnum/Mesh.h" @@ -1214,7 +1214,7 @@ Vk::Device device{NoCreate}; DOXYGEN_ELLIPSIS() Vk::ShaderCreateInfo info{ - CORRADE_INTERNAL_ASSERT_EXPRESSION(Utility::Directory::read("shader.spv")) + *CORRADE_INTERNAL_ASSERT_EXPRESSION(Utility::Path::read("shader.spv")) }; DOXYGEN_ELLIPSIS() diff --git a/src/Magnum/Vk/Test/MeshVkTest.cpp b/src/Magnum/Vk/Test/MeshVkTest.cpp index f45551647..4aaf51dbc 100644 --- a/src/Magnum/Vk/Test/MeshVkTest.cpp +++ b/src/Magnum/Vk/Test/MeshVkTest.cpp @@ -25,11 +25,12 @@ #include #include -#include +#include +#include #include #include #include -#include +#include #include "Magnum/ImageView.h" #include "Magnum/PixelFormat.h" @@ -268,9 +269,10 @@ void MeshVkTest::cmdDraw() { .setCount(4); } - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -307,7 +309,7 @@ void MeshVkTest::cmdDraw() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -334,9 +336,10 @@ void MeshVkTest::cmdDrawIndexed() { .setCount(6); } - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -373,7 +376,7 @@ void MeshVkTest::cmdDrawIndexed() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -395,9 +398,10 @@ void MeshVkTest::cmdDrawTwoAttributes() { .setCount(4); } - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -434,7 +438,7 @@ void MeshVkTest::cmdDrawTwoAttributes() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.tga"), /* ARM Mali (Android) has some minor off-by-one differences */ (DebugTools::CompareImageToFile{_manager, 0.5f, 0.012f})); } @@ -465,9 +469,10 @@ void MeshVkTest::cmdDrawTwoAttributesTwoBindings() { .setCount(4); } - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -504,7 +509,7 @@ void MeshVkTest::cmdDrawTwoAttributesTwoBindings() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.tga"), /* ARM Mali (Android) has some minor off-by-one differences */ (DebugTools::CompareImageToFile{_manager, 0.5f, 0.012f})); } @@ -531,9 +536,10 @@ void MeshVkTest::cmdDrawNullBindingRobustness2() { .setCount(4); } - Shader shader{_deviceRobustness2, ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/vertexcolor.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{_deviceRobustness2, ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -570,7 +576,7 @@ void MeshVkTest::cmdDrawNullBindingRobustness2() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/nullcolor.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/nullcolor.tga"), /* ARM Mali (Android) has some minor off-by-one differences */ (DebugTools::CompareImageToFile{_manager})); } @@ -588,9 +594,10 @@ void MeshVkTest::cmdDrawZeroCount() { mesh.setCount(data.count) .setInstanceCount(data.instanceCount); - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -627,7 +634,7 @@ void MeshVkTest::cmdDrawZeroCount() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/noop.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/noop.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -638,9 +645,10 @@ void MeshVkTest::cmdDrawNoCountSet() { Mesh mesh{MeshLayout{MeshPrimitive::Triangles}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/noop.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/noop.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -690,9 +698,10 @@ void MeshVkTest::cmdDrawDynamicPrimitive() { .setCount(4); } - Shader shader{_deviceExtendedDynamicState, ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{_deviceExtendedDynamicState, ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -735,7 +744,7 @@ void MeshVkTest::cmdDrawDynamicPrimitive() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -764,9 +773,10 @@ void MeshVkTest::cmdDrawDynamicStride() { .setCount(4); } - Shader shader{_deviceExtendedDynamicState, ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{_deviceExtendedDynamicState, ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet @@ -810,7 +820,7 @@ void MeshVkTest::cmdDrawDynamicStride() { CORRADE_COMPARE_WITH((ImageView2D{Magnum::PixelFormat::RGBA8Unorm, _framebuffer.size().xy(), _pixels.dedicatedMemory().mapRead()}), - Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), + Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -839,9 +849,10 @@ void MeshVkTest::cmdDrawDynamicStrideInsufficientImplementation() { .setCount(4); } - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")) - }}; + Containers::Optional> shaderData = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "MeshTestFiles/flat.spv")); + CORRADE_VERIFY(shaderData); + + Shader shader{device(), ShaderCreateInfo{*shaderData}}; ShaderSet shaderSet; shaderSet diff --git a/src/Magnum/Vk/Test/PipelineVkTest.cpp b/src/Magnum/Vk/Test/PipelineVkTest.cpp index 637b50d29..1091780d4 100644 --- a/src/Magnum/Vk/Test/PipelineVkTest.cpp +++ b/src/Magnum/Vk/Test/PipelineVkTest.cpp @@ -25,9 +25,10 @@ #include #include -#include +#include +#include #include -#include +#include #include "Magnum/Math/Range.h" #include "Magnum/Vk/BufferCreateInfo.h" @@ -130,9 +131,9 @@ void PipelineVkTest::constructRasterization() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -200,9 +201,9 @@ void PipelineVkTest::constructRasterizationViewportNotSetDiscardEnabled() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -243,9 +244,9 @@ void PipelineVkTest::constructRasterizationViewportNotSetDynamic() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -271,9 +272,9 @@ void PipelineVkTest::constructCompute() { { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "compute-noop.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "compute-noop.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet.addShader(ShaderStage::Compute, shader, "main"_s); @@ -313,9 +314,9 @@ void PipelineVkTest::constructMove() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -373,9 +374,9 @@ void PipelineVkTest::wrapRasterization() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -403,9 +404,9 @@ void PipelineVkTest::wrapRasterization() { void PipelineVkTest::wrapCompute() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "compute-noop.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "compute-noop.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet.addShader(ShaderStage::Compute, shader, "main"_s); @@ -432,9 +433,9 @@ void PipelineVkTest::dynamicRasterizationStatesNotRasterization() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "compute-noop.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "compute-noop.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet.addShader(ShaderStage::Compute, shader, "main"_s); @@ -476,9 +477,9 @@ void PipelineVkTest::cmdBindRasterization() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet @@ -512,9 +513,9 @@ void PipelineVkTest::cmdBindCompute() { PipelineLayout pipelineLayout{device(), PipelineLayoutCreateInfo{}}; - Shader shader{device(), ShaderCreateInfo{ - Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "compute-noop.spv")) - }}; + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "compute-noop.spv")); + CORRADE_VERIFY(data); + Shader shader{device(), ShaderCreateInfo{*data}}; ShaderSet shaderSet; shaderSet.addShader(ShaderStage::Compute, shader, "main"_s); diff --git a/src/Magnum/Vk/Test/ShaderTest.cpp b/src/Magnum/Vk/Test/ShaderTest.cpp index f85edc294..1dcc13895 100644 --- a/src/Magnum/Vk/Test/ShaderTest.cpp +++ b/src/Magnum/Vk/Test/ShaderTest.cpp @@ -23,10 +23,10 @@ DEALINGS IN THE SOFTWARE. */ -#include #include +#include #include -#include +#include #include "Magnum/ShaderTools/Implementation/spirv.h" #include "Magnum/Vk/ShaderCreateInfo.h" @@ -73,10 +73,11 @@ ShaderTest::ShaderTest() { } void ShaderTest::spirvPatchSwiftShaderConflictingMultiEntrypointLocations() { - Containers::Array data = Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "ShaderTestFiles/vert-frag.spv")); + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "ShaderTestFiles/vert-frag.spv")); + CORRADE_VERIFY(data); /* The file is a full SPIR-V, strip the header first */ - const Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(data, data.size()); + const Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(*data, data->size()); CORRADE_VERIFY(spirv); Containers::ArrayView view = spirv; diff --git a/src/Magnum/Vk/Test/ShaderVkTest.cpp b/src/Magnum/Vk/Test/ShaderVkTest.cpp index 191f8d931..e8b5c2bd7 100644 --- a/src/Magnum/Vk/Test/ShaderVkTest.cpp +++ b/src/Magnum/Vk/Test/ShaderVkTest.cpp @@ -23,10 +23,11 @@ DEALINGS IN THE SOFTWARE. */ -#include #include +#include +#include #include -#include +#include #include "Magnum/Vk/ShaderCreateInfo.h" #include "Magnum/Vk/DeviceProperties.h" @@ -56,11 +57,11 @@ ShaderVkTest::ShaderVkTest() { } void ShaderVkTest::construct() { - Containers::Array data = Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")); + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); CORRADE_VERIFY(data); { - Shader shader{device(), ShaderCreateInfo{data}}; + Shader shader{device(), ShaderCreateInfo{*data}}; CORRADE_VERIFY(shader.handle()); CORRADE_COMPARE(shader.handleFlags(), HandleFlag::DestroyOnDestruction); } @@ -70,10 +71,10 @@ void ShaderVkTest::construct() { } void ShaderVkTest::constructMove() { - Containers::Array data = Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")); + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); CORRADE_VERIFY(data); - Shader a{device(), ShaderCreateInfo{data}}; + Shader a{device(), ShaderCreateInfo{*data}}; VkShaderModule handle = a.handle(); Shader b = std::move(a); @@ -93,12 +94,12 @@ void ShaderVkTest::constructMove() { } void ShaderVkTest::wrap() { - Containers::Array data = Utility::Directory::read(Utility::Directory::join(VK_TEST_DIR, "triangle-shaders.spv")); + Containers::Optional> data = Utility::Path::read(Utility::Path::join(VK_TEST_DIR, "triangle-shaders.spv")); CORRADE_VERIFY(data); VkShaderModule shader{}; CORRADE_COMPARE(Result(device()->CreateShaderModule(device(), - ShaderCreateInfo{data}, + ShaderCreateInfo{*data}, nullptr, &shader)), Result::Success); auto wrapped = Shader::wrap(device(), shader, HandleFlag::DestroyOnDestruction);