From c3addad07a138a87dcbd465fc3a6752cb7399de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 1 Jul 2026 21:05:44 +0200 Subject: [PATCH] Adapt to Corrade::Containers Array[View] API deprecation. And, exactly as expected, there's many cases that used the (implicit) ValueInit while NoInit is a better choice. So yeah, minor speedups in various places such as GL image download. --- doc/snippets/SceneTools.cpp | 3 +- doc/snippets/Shaders-gl.cpp | 2 +- doc/snippets/Trade.cpp | 10 +- src/Magnum/Animation/Test/Benchmark.cpp | 2 +- src/Magnum/Audio/Buffer.h | 2 +- src/Magnum/Audio/Source.cpp | 24 ++-- .../Audio/Test/AbstractImporterTest.cpp | 4 +- src/Magnum/DebugTools/CompareImage.cpp | 2 +- .../DebugTools/Test/CompareImageTest.cpp | 4 +- src/Magnum/GL/AbstractFramebuffer.cpp | 4 +- src/Magnum/GL/AbstractShaderProgram.cpp | 4 +- src/Magnum/GL/AbstractTexture.cpp | 56 ++++---- src/Magnum/GL/Buffer.cpp | 16 +-- src/Magnum/GL/Context.cpp | 4 +- src/Magnum/GL/CubeMapTexture.cpp | 38 ++--- src/Magnum/GL/DefaultFramebuffer.cpp | 2 +- src/Magnum/GL/Framebuffer.cpp | 2 +- src/Magnum/GL/Mesh.cpp | 2 +- src/Magnum/GL/Shader.cpp | 2 +- src/Magnum/GL/Test/BufferImageGLTest.cpp | 8 +- src/Magnum/GL/Test/BufferTextureGLTest.cpp | 6 +- src/Magnum/GL/Test/ContextGLTest.cpp | 4 +- .../GL/Test/CubeMapTextureArrayGLTest.cpp | 8 +- src/Magnum/GL/Test/CubeMapTextureGLTest.cpp | 12 +- src/Magnum/GL/Test/RectangleTextureGLTest.cpp | 4 +- src/Magnum/GL/Test/TextureArrayGLTest.cpp | 12 +- src/Magnum/GL/Test/TextureGLTest.cpp | 20 +-- src/Magnum/Implementation/ImageProperties.h | 2 +- src/Magnum/MaterialTools/Filter.cpp | 2 +- src/Magnum/MaterialTools/Test/CopyTest.cpp | 4 +- src/Magnum/MeshTools/CompressIndices.cpp | 4 +- src/Magnum/MeshTools/GenerateIndices.cpp | 2 +- src/Magnum/MeshTools/Implementation/Tipsify.h | 2 +- src/Magnum/MeshTools/Interleave.cpp | 2 +- src/Magnum/MeshTools/RemoveDuplicates.cpp | 8 +- .../MeshTools/Test/CompressIndicesTest.cpp | 2 +- src/Magnum/MeshTools/Test/ConcatenateTest.cpp | 16 +-- src/Magnum/MeshTools/Test/CopyTest.cpp | 8 +- src/Magnum/MeshTools/Test/FilterTest.cpp | 46 +++--- .../MeshTools/Test/GenerateIndicesTest.cpp | 6 +- src/Magnum/MeshTools/Test/InterleaveTest.cpp | 76 +++++----- .../MeshTools/Test/RemoveDuplicatesTest.cpp | 4 +- src/Magnum/MeshTools/Test/SubdivideTest.cpp | 2 +- src/Magnum/MeshTools/Test/TransformTest.cpp | 24 ++-- src/Magnum/MeshTools/Tipsify.cpp | 4 +- src/Magnum/MeshTools/Transform.cpp | 6 +- src/Magnum/Platform/GlfwApplication.cpp | 4 +- .../Platform/WindowlessEglApplication.cpp | 10 +- src/Magnum/Primitives/Circle.cpp | 2 +- src/Magnum/Primitives/Cube.cpp | 2 +- src/Magnum/Primitives/Grid.cpp | 2 +- .../Primitives/Implementation/Spheroid.cpp | 2 +- src/Magnum/Primitives/Plane.cpp | 2 +- .../SceneTools/Implementation/combine.h | 4 +- .../convertToSingleFunctionObjects.h | 2 +- .../Implementation/sceneConverterUtilities.h | 22 +-- src/Magnum/SceneTools/Test/CombineTest.cpp | 26 ++-- src/Magnum/SceneTools/Test/CopyTest.cpp | 4 +- src/Magnum/SceneTools/Test/FilterTest.cpp | 6 +- src/Magnum/SceneTools/Test/MapTest.cpp | 10 +- .../Test/SceneConverterImplementationTest.cpp | 2 +- src/Magnum/ShaderTools/AbstractConverter.cpp | 4 +- src/Magnum/ShaderTools/Implementation/spirv.h | 8 +- .../Test/AbstractConverterTest.cpp | 12 +- src/Magnum/ShaderTools/Test/SpirvTest.cpp | 9 +- src/Magnum/ShaderTools/shaderconverter.cpp | 4 +- .../Test/DistanceFieldVectorGLTest.cpp | 16 +-- src/Magnum/Shaders/Test/FlatGLTest.cpp | 32 ++--- src/Magnum/Shaders/Test/LineGLTest.cpp | 12 +- .../Shaders/Test/MeshVisualizerGLTest.cpp | 52 +++---- src/Magnum/Shaders/Test/PhongGLTest.cpp | 18 +-- .../Shaders/Test/ShadersGLBenchmark.cpp | 46 +++--- src/Magnum/Shaders/Test/VectorGLTest.cpp | 16 +-- src/Magnum/Shaders/Test/VertexColorGLTest.cpp | 4 +- src/Magnum/Test/ImageTest.cpp | 130 ++++++++--------- src/Magnum/Test/ImageViewTest.cpp | 84 +++++------ src/Magnum/Text/Test/RendererTest.cpp | 8 +- src/Magnum/Trade/AbstractImporter.cpp | 12 +- .../Trade/Implementation/arrayUtilities.h | 2 +- src/Magnum/Trade/MaterialData.cpp | 2 +- src/Magnum/Trade/MeshData.cpp | 4 +- src/Magnum/Trade/SceneData.cpp | 4 +- .../Trade/Test/AbstractImageConverterTest.cpp | 80 +++++------ .../Trade/Test/AbstractImporterTest.cpp | 34 ++--- .../Trade/Test/AbstractSceneConverterTest.cpp | 2 +- src/Magnum/Trade/Test/AnimationDataTest.cpp | 10 +- src/Magnum/Trade/Test/ImageDataTest.cpp | 106 +++++++------- src/Magnum/Trade/Test/MeshDataTest.cpp | 134 +++++++++--------- src/Magnum/Trade/Test/SceneDataTest.cpp | 110 +++++++------- src/Magnum/Trade/Test/SkinDataTest.cpp | 8 +- src/Magnum/Vk/Buffer.cpp | 8 +- src/Magnum/Vk/DescriptorPool.cpp | 2 +- src/Magnum/Vk/DescriptorSetLayout.cpp | 10 +- src/Magnum/Vk/Device.cpp | 4 +- src/Magnum/Vk/DeviceProperties.cpp | 2 +- src/Magnum/Vk/ExtensionProperties.cpp | 6 +- src/Magnum/Vk/Framebuffer.cpp | 2 +- src/Magnum/Vk/Image.cpp | 34 ++--- src/Magnum/Vk/Mesh.cpp | 6 +- src/Magnum/Vk/MeshLayout.cpp | 20 +-- src/Magnum/Vk/Pipeline.cpp | 6 +- src/Magnum/Vk/PipelineLayout.cpp | 2 +- src/Magnum/Vk/Queue.cpp | 4 +- src/Magnum/Vk/RenderPass.cpp | 52 +++---- src/Magnum/Vk/Shader.cpp | 2 +- src/Magnum/Vk/ShaderSet.cpp | 4 +- src/Magnum/Vk/Test/DeviceVkTest.cpp | 6 +- src/Magnum/Vk/Test/InstanceVkTest.cpp | 4 +- src/Magnum/Vk/Test/PipelineTest.cpp | 6 +- src/Magnum/Vk/Test/RenderPassVkTest.cpp | 2 +- src/Magnum/Vk/Test/ShaderTest.cpp | 2 +- .../AnyShaderConverter/AnyConverter.cpp | 4 +- .../MagnumFontConverter.cpp | 2 +- src/MagnumPlugins/ObjImporter/ObjImporter.cpp | 2 +- src/MagnumPlugins/TgaImporter/TgaImporter.cpp | 4 +- 115 files changed, 868 insertions(+), 868 deletions(-) diff --git a/doc/snippets/SceneTools.cpp b/doc/snippets/SceneTools.cpp index 8c308aa6b..35eca675c 100644 --- a/doc/snippets/SceneTools.cpp +++ b/doc/snippets/SceneTools.cpp @@ -146,7 +146,8 @@ Trade::SceneData scene = DOXYGEN_ELLIPSIS(Trade::SceneData{{}, 0, nullptr, {}}); /* Put all transformations into an array indexed by object ID. Objects implicitly have an identity transformation, first element is reserved for the global transformation. */ -Containers::Array transformations{std::size_t(scene.mappingBound() + 1)}; +Containers::Array transformations{ValueInit, + std::size_t(scene.mappingBound() + 1)}; for(const Containers::Pair& transformation: scene.transformations3DAsArray()) { diff --git a/doc/snippets/Shaders-gl.cpp b/doc/snippets/Shaders-gl.cpp index 562cf1379..df92e4f70 100644 --- a/doc/snippets/Shaders-gl.cpp +++ b/doc/snippets/Shaders-gl.cpp @@ -789,7 +789,7 @@ shader.setColor(0x2f83cc_rgbf) /* [MeshVisualizerGL3D-usage-geom2] */ /* [MeshVisualizerGL3D-usage-no-geom-old] */ -Containers::Array vertexIndex{Containers::arraySize(vertices)}; +Containers::Array vertexIndex{NoInit, Containers::arraySize(vertices)}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexIndices; diff --git a/doc/snippets/Trade.cpp b/doc/snippets/Trade.cpp index c596545e1..f63ff4821 100644 --- a/doc/snippets/Trade.cpp +++ b/doc/snippets/Trade.cpp @@ -920,8 +920,8 @@ struct Vertex { Vector4 color; }; -Containers::Array indexData{indexCount*sizeof(UnsignedShort)}; -Containers::Array vertexData{vertexCount*sizeof(Vertex)}; +Containers::Array indexData{ValueInit, indexCount*sizeof(UnsignedShort)}; +Containers::Array vertexData{ValueInit, vertexCount*sizeof(Vertex)}; DOXYGEN_ELLIPSIS() Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); @@ -980,7 +980,7 @@ constexpr Trade::MeshAttributeData attributes[]{ }; /* Actual data populated later */ -Containers::Array vertexData{vertexCount*sizeof(Vertex)}; +Containers::Array vertexData{ValueInit, vertexCount*sizeof(Vertex)}; DOXYGEN_ELLIPSIS() /* Using the statically defined attribute layout together with explicitly @@ -1148,7 +1148,7 @@ if(!data.is3D() || Fatal{} << "Oh noes!"; Scene3D scene; -Containers::Array objects{std::size_t(data.mappingBound())}; +Containers::Array objects{ValueInit, std::size_t(data.mappingBound())}; /* [SceneData-usage1] */ /* [SceneData-usage2] */ @@ -1318,7 +1318,7 @@ constexpr Trade::SceneFieldData fields[]{ }; /* Actual data populated later */ -Containers::Array data{objectCount*sizeof(Data)}; +Containers::Array data{ValueInit, objectCount*sizeof(Data)}; DOXYGEN_ELLIPSIS() /* Using the statically defined field layout */ diff --git a/src/Magnum/Animation/Test/Benchmark.cpp b/src/Magnum/Animation/Test/Benchmark.cpp index ce8022353..1dd19cb9c 100644 --- a/src/Magnum/Animation/Test/Benchmark.cpp +++ b/src/Magnum/Animation/Test/Benchmark.cpp @@ -83,7 +83,7 @@ Benchmark::Benchmark() { &Benchmark::playerAdvanceRawCallback, &Benchmark::playerAdvanceRawCallbackDirectInterpolator}, 10); - _keys = Containers::Array{DataSize}; + _keys = Containers::Array{NoInit, DataSize}; _values = Containers::Array{DirectInit, DataSize, 1}; _interleaved = Containers::Array>{DirectInit, DataSize, 0.0f, 1}; for(std::size_t i = 0; i != DataSize; ++i) diff --git a/src/Magnum/Audio/Buffer.h b/src/Magnum/Audio/Buffer.h index 7f75e62f9..38a45bf36 100644 --- a/src/Magnum/Audio/Buffer.h +++ b/src/Magnum/Audio/Buffer.h @@ -96,7 +96,7 @@ class MAGNUM_AUDIO_EXPORT Buffer { * @see @fn_al_keyword{BufferData} */ Buffer& setData(BufferFormat format, Containers::ArrayView data, ALsizei frequency) { - alBufferData(_id, ALenum(format), data, data.size(), frequency); + alBufferData(_id, ALenum(format), data.data(), data.size(), frequency); return *this; } diff --git a/src/Magnum/Audio/Source.cpp b/src/Magnum/Audio/Source.cpp index f0100dc00..79148a924 100644 --- a/src/Magnum/Audio/Source.cpp +++ b/src/Magnum/Audio/Source.cpp @@ -43,7 +43,7 @@ Source& Source::setBuffer(Buffer* buffer) { } Source& Source::queueBuffers(Containers::ArrayView> buffers) { - Containers::Array ids(buffers.size()); + Containers::Array ids(NoInit, buffers.size()); for(std::size_t i = 0; i < ids.size(); i++) ids[i] = buffers[i]->id(); alSourceQueueBuffers(_id, ids.size(), ids.data()); @@ -57,7 +57,7 @@ std::size_t Source::unqueueBuffers(Containers::ArrayView unqueuedIds(processedBuffers); + Containers::Array unqueuedIds(NoInit, processedBuffers); alSourceUnqueueBuffers(_id, unqueuedIds.size(), unqueuedIds.data()); auto isNotUnqueued = [&unqueuedIds](Buffer& buffer) { for(ALuint id : unqueuedIds) { @@ -72,14 +72,14 @@ std::size_t Source::unqueueBuffers(Containers::ArrayView sourceIds(const std::initializer_list>& sources) { - Containers::Array ids(sources.size()); + Containers::Array ids(NoInit, sources.size()); for(auto it = sources.begin(); it != sources.end(); ++it) ids[it-sources.begin()] = it->get().id(); return ids; } Containers::Array sourceIds(const std::vector>& sources) { - Containers::Array ids(sources.size()); + Containers::Array ids(NoInit, sources.size()); for(auto it = sources.begin(); it != sources.end(); ++it) ids[it-sources.begin()] = it->get().id(); return ids; @@ -89,42 +89,42 @@ Containers::Array sourceIds(const std::vector> sources) { const auto ids = sourceIds(sources); - alSourcePlayv(ids.size(), ids); + alSourcePlayv(ids.size(), ids.data()); } void Source::play(const std::vector>& sources) { const auto ids = sourceIds(sources); - alSourcePlayv(ids.size(), ids); + alSourcePlayv(ids.size(), ids.data()); } void Source::pause(std::initializer_list> sources) { const auto ids = sourceIds(sources); - alSourcePausev(ids.size(), ids); + alSourcePausev(ids.size(), ids.data()); } void Source::pause(const std::vector>& sources) { const auto ids = sourceIds(sources); - alSourcePausev(ids.size(), ids); + alSourcePausev(ids.size(), ids.data()); } void Source::stop(std::initializer_list> sources) { const auto ids = sourceIds(sources); - alSourceStopv(ids.size(), ids); + alSourceStopv(ids.size(), ids.data()); } void Source::stop(const std::vector>& sources) { const auto ids = sourceIds(sources); - alSourceStopv(ids.size(), ids); + alSourceStopv(ids.size(), ids.data()); } void Source::rewind(std::initializer_list> sources) { const auto ids = sourceIds(sources); - alSourceRewindv(ids.size(), ids); + alSourceRewindv(ids.size(), ids.data()); } void Source::rewind(const std::vector>& sources) { const auto ids = sourceIds(sources); - alSourceRewindv(ids.size(), ids); + alSourceRewindv(ids.size(), ids.data()); } Debug& operator<<(Debug& debug, const Source::State value) { diff --git a/src/Magnum/Audio/Test/AbstractImporterTest.cpp b/src/Magnum/Audio/Test/AbstractImporterTest.cpp index 5c18143fc..d6f405fef 100644 --- a/src/Magnum/Audio/Test/AbstractImporterTest.cpp +++ b/src/Magnum/Audio/Test/AbstractImporterTest.cpp @@ -332,9 +332,7 @@ void AbstractImporterTest::data() { BufferFormat doFormat() const override { return {}; } UnsignedInt doFrequency() const override { return {}; } Containers::Array doData() override { - Containers::Array out{1}; - out[0] = 'H'; - return out; + return Containers::Array{InPlaceInit, {'H'}}; } } importer; diff --git a/src/Magnum/DebugTools/CompareImage.cpp b/src/Magnum/DebugTools/CompareImage.cpp index 1a087f7e1..211753160 100644 --- a/src/Magnum/DebugTools/CompareImage.cpp +++ b/src/Magnum/DebugTools/CompareImage.cpp @@ -775,7 +775,7 @@ void ImageComparatorBase::saveDiagnostic(TestSuite::ComparisonStatusFlags, Utili /* Tightly pack the actual pixels into a new array and create an image from it -- the array view might have totally arbitrary strides that can't be represented in an Image */ - Containers::Array data{_state->actualPixels.size()[0]*_state->actualPixels.size()[1]*_state->actualPixels.size()[2]}; + Containers::Array data{NoInit, _state->actualPixels.size()[0]*_state->actualPixels.size()[1]*_state->actualPixels.size()[2]}; Containers::StridedArrayView3D pixels{data, _state->actualPixels.size()}; for(std::size_t i = 0, iMax = _state->actualPixels.size()[0]; i != iMax; ++i) { Containers::StridedArrayView2D inRow = _state->actualPixels[i]; diff --git a/src/Magnum/DebugTools/Test/CompareImageTest.cpp b/src/Magnum/DebugTools/Test/CompareImageTest.cpp index c6507d1db..d68e84707 100644 --- a/src/Magnum/DebugTools/Test/CompareImageTest.cpp +++ b/src/Magnum/DebugTools/Test/CompareImageTest.cpp @@ -456,7 +456,7 @@ void CompareImageTest::calculateDeltaSpecials3() { } void CompareImageTest::deltaImage() { - Containers::Array delta{32*32}; + Containers::Array delta{NoInit, 32*32}; for(std::int_fast32_t x = 0; x != 32; ++x) for(std::int_fast32_t y = 0; y != 32; ++y) @@ -489,7 +489,7 @@ void CompareImageTest::deltaImage() { } void CompareImageTest::deltaImageScaling() { - Containers::Array delta{65*40}; + Containers::Array delta{NoInit, 65*40}; for(std::int_fast32_t x = 0; x != 65; ++x) for(std::int_fast32_t y = 0; y != 40; ++y) delta[y*65 + x] = Vector2{Float(x), Float(y)}.length()/Vector2{65.0f, 40.0f}.length(); diff --git a/src/Magnum/GL/AbstractFramebuffer.cpp b/src/Magnum/GL/AbstractFramebuffer.cpp index 7477db060..a1254ca7f 100644 --- a/src/Magnum/GL/AbstractFramebuffer.cpp +++ b/src/Magnum/GL/AbstractFramebuffer.cpp @@ -379,7 +379,7 @@ void AbstractFramebuffer::read(const Range2Di& rectangle, const MutableImageView Buffer::unbindInternal(Buffer::TargetHint::PixelPack); #endif Context::current().state().renderer.applyPixelStoragePack(image.storage()); - (Context::current().state().framebuffer.readImplementation)(rectangle, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data() + (Context::current().state().framebuffer.readImplementation)(rectangle, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffsetFor(image, rectangle.size()) #endif @@ -391,7 +391,7 @@ void AbstractFramebuffer::read(const Range2Di& rectangle, Image2D& image) { const std::size_t dataSize = Magnum::Implementation::imageDataSizeFor(image, rectangle.size()); Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; /* Replace the storage, proxy to the function taking a view */ image = Image2D{image.storage(), image.format(), image.formatExtra(), image.pixelSize(), rectangle.size(), Utility::move(data), ImageFlags2D{}}; diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp index d76721e0c..9d6979fab 100644 --- a/src/Magnum/GL/AbstractShaderProgram.cpp +++ b/src/Magnum/GL/AbstractShaderProgram.cpp @@ -644,7 +644,7 @@ void AbstractShaderProgram::transformFeedbackVaryingsImplementationDefault(Abstr names[i] = nameData[i].data(); } - glTransformFeedbackVaryings(self._id, outputs.size(), names, GLenum(bufferMode)); + glTransformFeedbackVaryings(self._id, outputs.size(), names.data(), GLenum(bufferMode)); } #ifdef CORRADE_TARGET_WINDOWS @@ -669,7 +669,7 @@ void AbstractShaderProgram::transformFeedbackVaryingsImplementationDanglingWorka names[i] = nameData[i].data(); } - glTransformFeedbackVaryings(self._id, outputs.size(), names, GLenum(bufferMode)); + glTransformFeedbackVaryings(self._id, outputs.size(), names.data(), GLenum(bufferMode)); } #endif #endif diff --git a/src/Magnum/GL/AbstractTexture.cpp b/src/Magnum/GL/AbstractTexture.cpp index a86bcd6af..c9d7137c7 100644 --- a/src/Magnum/GL/AbstractTexture.cpp +++ b/src/Magnum/GL/AbstractTexture.cpp @@ -178,7 +178,7 @@ void AbstractTexture::bindImplementationMulti(const GLint firstTextureUnit, cons /* Create array of IDs and also update bindings in state tracker */ /** @todo VLAs */ - Containers::Array ids{textures ? textures.size() : 0}; + Containers::Array ids{NoInit, textures ? textures.size() : 0}; bool different = false; for(std::size_t i = 0; i != textures.size(); ++i) { const GLuint id = textures && textures[i] ? textures[i]->_id : 0; @@ -197,7 +197,7 @@ void AbstractTexture::bindImplementationMulti(const GLint firstTextureUnit, cons /* Avoid doing the binding if there is nothing different */ if(different) - glBindTextures(firstTextureUnit, textures.size(), ids); + glBindTextures(firstTextureUnit, textures.size(), ids.data()); } #endif @@ -317,7 +317,7 @@ void AbstractTexture::bindImages(const Int firstImageUnit, const Containers::Arr Implementation::TextureState& textureState = Context::current().state().texture; /* Create array of IDs and also update bindings in state tracker */ - Containers::Array ids{textures ? textures.size() : 0}; + Containers::Array ids{NoInit, textures ? textures.size() : 0}; bool different = false; for(std::size_t i = 0; i != textures.size(); ++i) { const Implementation::TextureState::ImageBinding state = textures && textures[i] ? @@ -339,7 +339,7 @@ void AbstractTexture::bindImages(const Int firstImageUnit, const Containers::Arr /* Avoid doing the binding if there is nothing different */ if(different) - glBindImageTextures(firstImageUnit, textures.size(), ids); + glBindImageTextures(firstImageUnit, textures.size(), ids.data()); } void AbstractTexture::bindImages(const Int firstImageUnit, const std::initializer_list textures) { @@ -1775,11 +1775,11 @@ template void AbstractTexture::image(const GLint level, /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getImageImplementation(*this, level, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data); + Context::current().state().texture.getImageImplementation(*this, level, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data.data()); image = Image{image.storage(), image.format(), image.formatExtra(), image.pixelSize(), size, Utility::move(data), flags}; } @@ -1798,7 +1798,7 @@ template void AbstractTexture::image(GLint level, const Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getImageImplementation(*this, level, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data()); + Context::current().state().texture.getImageImplementation(*this, level, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data().data()); } template void MAGNUM_GL_EXPORT AbstractTexture::image<1>(GLint, const BasicMutableImageView<1>&); @@ -1848,11 +1848,11 @@ template void AbstractTexture::compressedImage(const GLi /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image.storage(), blockSize, blockDataSize); - Context::current().state().texture.getCompressedImageImplementation(*this, level, data.size(), data); + Context::current().state().texture.getCompressedImageImplementation(*this, level, data.size(), data.data()); image = CompressedImage{image.storage(), UnsignedInt(format), blockSize, blockDataSize, size, Utility::move(data), flags}; } @@ -1884,7 +1884,7 @@ template void AbstractTexture::compressedImage(const GLi Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image); - Context::current().state().texture.getCompressedImageImplementation(*this, level, image.data().size(), image.data()); + Context::current().state().texture.getCompressedImageImplementation(*this, level, image.data().size(), image.data().data()); } template void MAGNUM_GL_EXPORT AbstractTexture::compressedImage<1>(GLint, const BasicMutableCompressedImageView<1>&); @@ -1937,7 +1937,7 @@ template void AbstractTexture::subImage(const GLint leve const std::size_t dataSize = Magnum::Implementation::imageDataSizeFor(image, size); Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; image = Image{image.storage(), image.format(), image.formatExtra(), image.pixelSize(), size, Utility::move(data), flags}; subImage(level, range, BasicMutableImageView(image)); @@ -1963,7 +1963,7 @@ template void AbstractTexture::subImage(const GLint leve Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - glGetTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), GLenum(pixelFormat(image.format())), GLenum(pixelType(image.format(), image.formatExtra())), image.data().size(), image.data()); + glGetTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), GLenum(pixelFormat(image.format())), GLenum(pixelType(image.format(), image.formatExtra())), image.data().size(), image.data().data()); } template void MAGNUM_GL_EXPORT AbstractTexture::subImage<1>(GLint, const Range1Di&, const BasicMutableImageView<1>&); @@ -2025,11 +2025,11 @@ template void AbstractTexture::compressedSubImage(const /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image.storage(), blockSize, blockDataSize); - glGetCompressedTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), data.size(), data); + glGetCompressedTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), data.size(), data.data()); image = CompressedImage{CompressedPixelFormat(format), size, Utility::move(data), flags}; } @@ -2067,7 +2067,7 @@ template void AbstractTexture::compressedSubImage(const Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image); - glGetCompressedTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), image.data().size(), image.data()); + glGetCompressedTextureSubImage(_id, level, paddedOffset.x(), paddedOffset.y(), paddedOffset.z(), paddedSize.x(), paddedSize.y(), paddedSize.z(), image.data().size(), image.data().data()); } template void MAGNUM_GL_EXPORT AbstractTexture::compressedSubImage<1>(GLint, const Range1Di&, const BasicMutableCompressedImageView<1>&); @@ -2204,14 +2204,14 @@ void AbstractTexture::DataHelper<1>::setImage(AbstractTexture& texture, const GL Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); texture.bindInternal(); - glTexImage1D(texture._target, level, GLint(internalFormat), image.size()[0], 0, GLenum(pixelFormat(image.format())), GLenum(pixelType(image.format(), image.formatExtra())), image.data()); + glTexImage1D(texture._target, level, GLint(internalFormat), image.size()[0], 0, GLenum(pixelFormat(image.format())), GLenum(pixelType(image.format(), image.formatExtra())), image.data().data()); } void AbstractTexture::DataHelper<1>::setCompressedImage(AbstractTexture& texture, const GLint level, const CompressedImageView1D& image) { Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); texture.bindInternal(); - glCompressedTexImage1D(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size()[0], 0, Implementation::occupiedCompressedImageDataSize(image), image.data()); + glCompressedTexImage1D(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size()[0], 0, Implementation::occupiedCompressedImageDataSize(image), image.data().data()); } void AbstractTexture::DataHelper<1>::setImage(AbstractTexture& texture, const GLint level, const TextureFormat internalFormat, BufferImage1D& image) { @@ -2231,13 +2231,13 @@ void AbstractTexture::DataHelper<1>::setCompressedImage(AbstractTexture& texture void AbstractTexture::DataHelper<1>::setSubImage(AbstractTexture& texture, const GLint level, const Math::Vector<1, GLint>& offset, const ImageView1D& image) { Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.subImage1DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data()); + Context::current().state().texture.subImage1DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data()); } void AbstractTexture::DataHelper<1>::setCompressedSubImage(AbstractTexture& texture, const GLint level, const Math::Vector<1, GLint>& offset, const CompressedImageView1D& image) { Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); - Context::current().state().texture.compressedSubImage1DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data(), Implementation::occupiedCompressedImageDataSize(image)); + Context::current().state().texture.compressedSubImage1DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data().data(), Implementation::occupiedCompressedImageDataSize(image)); } void AbstractTexture::DataHelper<1>::setSubImage(AbstractTexture& texture, const GLint level, const Math::Vector<1, GLint>& offset, BufferImage1D& image) { @@ -2258,7 +2258,7 @@ void AbstractTexture::DataHelper<2>::setImage(AbstractTexture& texture, const GL Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.image2DImplementation(texture, target, level, internalFormat, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.image2DImplementation(texture, target, level, internalFormat, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -2271,7 +2271,7 @@ void AbstractTexture::DataHelper<2>::setCompressedImage(AbstractTexture& texture #endif Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); texture.bindInternal(); - glCompressedTexImage2D(target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data()); + glCompressedTexImage2D(target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data().data()); } #ifndef MAGNUM_TARGET_GLES2 @@ -2295,7 +2295,7 @@ void AbstractTexture::DataHelper<2>::setSubImage(AbstractTexture& texture, const Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.subImage2DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.subImage2DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -2307,7 +2307,7 @@ void AbstractTexture::DataHelper<2>::setCompressedSubImage(AbstractTexture& text Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); - Context::current().state().texture.compressedSubImage2DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data(), Implementation::occupiedCompressedImageDataSize(image)); + Context::current().state().texture.compressedSubImage2DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data().data(), Implementation::occupiedCompressedImageDataSize(image)); } #ifndef MAGNUM_TARGET_GLES2 @@ -2330,7 +2330,7 @@ void AbstractTexture::DataHelper<3>::setImage(AbstractTexture& texture, const GL Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.image3DImplementation(texture, level, internalFormat, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.image3DImplementation(texture, level, internalFormat, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -2344,9 +2344,9 @@ void AbstractTexture::DataHelper<3>::setCompressedImage(AbstractTexture& texture Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); texture.bindInternal(); #ifndef MAGNUM_TARGET_GLES2 - glCompressedTexImage3D(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), image.size().z(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data()); + glCompressedTexImage3D(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), image.size().z(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data().data()); #else - glCompressedTexImage3DOES(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), image.size().z(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data()); + glCompressedTexImage3DOES(texture._target, level, GLenum(compressedPixelFormat(image.format())), image.size().x(), image.size().y(), image.size().z(), 0, Implementation::occupiedCompressedImageDataSize(image), image.data().data()); #endif } #endif @@ -2373,7 +2373,7 @@ void AbstractTexture::DataHelper<3>::setSubImage(AbstractTexture& texture, const Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.subImage3DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.subImage3DImplementation(texture, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -2385,7 +2385,7 @@ void AbstractTexture::DataHelper<3>::setCompressedSubImage(AbstractTexture& text Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); - Context::current().state().texture.compressedSubImage3DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data(), Implementation::occupiedCompressedImageDataSize(image)); + Context::current().state().texture.compressedSubImage3DImplementation(texture, level, offset, image.size(), compressedPixelFormat(image.format()), image.data().data(), Implementation::occupiedCompressedImageDataSize(image)); } #endif diff --git a/src/Magnum/GL/Buffer.cpp b/src/Magnum/GL/Buffer.cpp index a3e9c6053..a242d4fd5 100644 --- a/src/Magnum/GL/Buffer.cpp +++ b/src/Magnum/GL/Buffer.cpp @@ -401,12 +401,12 @@ Containers::Array Buffer::data() { #endif Buffer& Buffer::setData(const Containers::ArrayView data, const BufferUsage usage) { - Context::current().state().buffer.dataImplementation(*this, data.size(), data, usage); + Context::current().state().buffer.dataImplementation(*this, data.size(), data.data(), usage); return *this; } Buffer& Buffer::setSubData(const GLintptr offset, const Containers::ArrayView data) { - Context::current().state().buffer.subDataImplementation(*this, offset, data.size(), data); + Context::current().state().buffer.subDataImplementation(*this, offset, data.size(), data.data()); return *this; } @@ -441,7 +441,7 @@ bool Buffer::unmap() { return Context::current().state().buffer.unmapImplementat Containers::Array Buffer::subData(const GLintptr offset, const GLsizeiptr size) { Containers::Array data{NoInit, std::size_t(size)}; if(size) - Context::current().state().buffer.getSubDataImplementation(*this, offset, size, data); + Context::current().state().buffer.getSubDataImplementation(*this, offset, size, data.data()); return data; } #endif @@ -458,7 +458,7 @@ void Buffer::bindImplementationFallback(const Target target, const GLuint firstI #ifndef MAGNUM_TARGET_GLES void Buffer::bindImplementationMulti(const Target target, const GLuint firstIndex, Containers::ArrayView buffers) { /** @todo C++1z: VLAs? */ - Containers::Array ids{buffers ? buffers.size() : 0}; + Containers::Array ids{NoInit, buffers ? buffers.size() : 0}; if(buffers) for(std::size_t i = 0; i != buffers.size(); ++i) { if(buffers[i]) { buffers[i]->createIfNotAlready(); @@ -472,7 +472,7 @@ void Buffer::bindImplementationMulti(const Target target, const GLuint firstInde binding points: https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml See the comment in that function for details. */ - glBindBuffersBase(GLenum(target), firstIndex, buffers.size(), ids); + glBindBuffersBase(GLenum(target), firstIndex, buffers.size(), ids.data()); } #endif @@ -487,8 +487,8 @@ void Buffer::bindImplementationFallback(const Target target, const GLuint firstI #ifndef MAGNUM_TARGET_GLES void Buffer::bindImplementationMulti(const Target target, const GLuint firstIndex, Containers::ArrayView> buffers) { /** @todo use ArrayTuple */ - Containers::Array ids{buffers ? buffers.size() : 0}; - Containers::Array offsetsSizes{buffers ? buffers.size()*2 : 0}; + Containers::Array ids{NoInit, buffers ? buffers.size() : 0}; + Containers::Array offsetsSizes{NoInit, buffers ? buffers.size()*2 : 0}; if(buffers) for(std::size_t i = 0; i != buffers.size(); ++i) { if(buffers[i].first()) { buffers[i].first()->createIfNotAlready(); @@ -503,7 +503,7 @@ void Buffer::bindImplementationMulti(const Target target, const GLuint firstInde } } - glBindBuffersRange(GLenum(target), firstIndex, buffers.size(), ids, offsetsSizes, offsetsSizes + buffers.size()); + glBindBuffersRange(GLenum(target), firstIndex, buffers.size(), ids.data(), offsetsSizes.data(), offsetsSizes.data() + buffers.size()); } #endif diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index 4c1eeb78f..ffc6218c8 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -1170,7 +1170,7 @@ Containers::Array Context::shadingLanguageVersionStrings /* If on GL 4.3+, there should be always at least one */ CORRADE_INTERNAL_ASSERT(versionCount); - Containers::Array versions{std::size_t(versionCount)}; + Containers::Array versions{ValueInit, std::size_t(versionCount)}; for(GLint i = 0; i != versionCount; ++i) versions[i] = {reinterpret_cast(glGetStringi(GL_SHADING_LANGUAGE_VERSION, i)), Containers::StringViewFlag::Global}; return versions; @@ -1193,7 +1193,7 @@ Containers::Array Context::extensionStrings() const { { GLint extensionCount = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &extensionCount); - Containers::Array extensions{std::size_t(extensionCount)}; + Containers::Array extensions{ValueInit, std::size_t(extensionCount)}; for(GLint i = 0; i != extensionCount; ++i) extensions[i] = {reinterpret_cast(glGetStringi(GL_EXTENSIONS, i)), Containers::StringViewFlag::Global}; return extensions; diff --git a/src/Magnum/GL/CubeMapTexture.cpp b/src/Magnum/GL/CubeMapTexture.cpp index ad402be4d..8623d265d 100644 --- a/src/Magnum/GL/CubeMapTexture.cpp +++ b/src/Magnum/GL/CubeMapTexture.cpp @@ -105,11 +105,11 @@ void CubeMapTexture::image(const Int level, Image3D& image) { /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getCubeImage3DImplementation(*this, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data, image.storage()); + Context::current().state().texture.getCubeImage3DImplementation(*this, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data.data(), image.storage()); image = Image3D{image.storage(), image.format(), image.formatExtra(), image.pixelSize(), size, Utility::move(data), ImageFlag3D::CubeMap}; } @@ -127,7 +127,7 @@ void CubeMapTexture::image(const Int level, const MutableImageView3D& image) { Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getCubeImage3DImplementation(*this, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data(), image.storage()); + Context::current().state().texture.getCubeImage3DImplementation(*this, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data().data(), image.storage()); } void CubeMapTexture::image(const Int level, BufferImage3D& image, const BufferUsage usage) { @@ -181,11 +181,11 @@ void CubeMapTexture::compressedImage(const Int level, CompressedImage3D& image) /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataOffsetSize.first + dataOffsetSize.second) - data = Containers::Array{dataOffsetSize.first + dataOffsetSize.second}; + data = Containers::Array{NoInit, dataOffsetSize.first + dataOffsetSize.second}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image.storage(), blockSize, blockDataSize); - Context::current().state().texture.getCompressedCubeImage3DImplementation(*this, level, size.xy(), dataOffsetSize.first, dataOffsetSize.second, data); + Context::current().state().texture.getCompressedCubeImage3DImplementation(*this, level, size.xy(), dataOffsetSize.first, dataOffsetSize.second, data.data()); image = CompressedImage3D{image.storage(), CompressedPixelFormat(format), size, Utility::move(data), ImageFlag3D::CubeMap}; } @@ -230,7 +230,7 @@ void CubeMapTexture::compressedImage(const Int level, const MutableCompressedIma Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image); - Context::current().state().texture.getCompressedCubeImage3DImplementation(*this, level, size.xy(), dataOffsetSize.first, dataOffsetSize.second, image.data()); + Context::current().state().texture.getCompressedCubeImage3DImplementation(*this, level, size.xy(), dataOffsetSize.first, dataOffsetSize.second, image.data().data()); } void CubeMapTexture::compressedImage(const Int level, CompressedBufferImage3D& image, const BufferUsage usage) { @@ -288,11 +288,11 @@ void CubeMapTexture::image(const CubeMapCoordinate coordinate, const Int level, /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getCubeImageImplementation(*this, coordinate, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data); + Context::current().state().texture.getCubeImageImplementation(*this, coordinate, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), data.size(), data.data()); image = Image2D{image.storage(), image.format(), image.formatExtra(), image.pixelSize(), size, Utility::move(data), ImageFlags2D{}}; } @@ -310,7 +310,7 @@ void CubeMapTexture::image(const CubeMapCoordinate coordinate, const Int level, Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyPixelStoragePack(image.storage()); - Context::current().state().texture.getCubeImageImplementation(*this, coordinate, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data()); + Context::current().state().texture.getCubeImageImplementation(*this, coordinate, level, size, pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().size(), image.data().data()); } void CubeMapTexture::image(const CubeMapCoordinate coordinate, const Int level, BufferImage2D& image, const BufferUsage usage) { @@ -361,11 +361,11 @@ void CubeMapTexture::compressedImage(const CubeMapCoordinate coordinate, const I /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image.storage(), blockSize, blockDataSize); - Context::current().state().texture.getCompressedCubeImageImplementation(*this, coordinate, level, size, data.size(), data); + Context::current().state().texture.getCompressedCubeImageImplementation(*this, coordinate, level, size, data.size(), data.data()); image = CompressedImage2D{image.storage(), CompressedPixelFormat(format), size, Utility::move(data), ImageFlags2D{}}; } @@ -401,7 +401,7 @@ void CubeMapTexture::compressedImage(const CubeMapCoordinate coordinate, const I Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image); - Context::current().state().texture.getCompressedCubeImageImplementation(*this, coordinate, level, size, image.data().size(), image.data()); + Context::current().state().texture.getCompressedCubeImageImplementation(*this, coordinate, level, size, image.data().size(), image.data().data()); } void CubeMapTexture::compressedImage(const CubeMapCoordinate coordinate, const Int level, CompressedBufferImage2D& image, const BufferUsage usage) { @@ -487,11 +487,11 @@ void CubeMapTexture::compressedSubImage(const Int level, const Range3Di& range, /* Reallocate only if needed */ Containers::Array data{image.release()}; if(data.size() < dataSize) - data = Containers::Array{dataSize}; + data = Containers::Array{NoInit, dataSize}; Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image.storage(), blockSize, blockDataSize); - glGetCompressedTextureSubImage(_id, level, range.min().x(), range.min().y(), range.min().z(), range.size().x(), range.size().y(), range.size().z(), data.size(), data); + glGetCompressedTextureSubImage(_id, level, range.min().x(), range.min().y(), range.min().z(), range.size().x(), range.size().y(), range.size().z(), data.size(), data.data()); /* Would be CubeMap if the whole image was queried, but then we'd have to query the size and compare, which is extra work. So it's Array instead. */ @@ -532,7 +532,7 @@ void CubeMapTexture::compressedSubImage(const Int level, const Range3Di& range, Buffer::unbindInternal(Buffer::TargetHint::PixelPack); Context::current().state().renderer.applyCompressedPixelStoragePack(image); - glGetCompressedTextureSubImage(_id, level, range.min().x(), range.min().y(), range.min().z(), range.size().x(), range.size().y(), range.size().z(), image.data().size(), image.data()); + glGetCompressedTextureSubImage(_id, level, range.min().x(), range.min().y(), range.min().z(), range.size().x(), range.size().y(), range.size().z(), image.data().size(), image.data().data()); } void CubeMapTexture::compressedSubImage(const Int level, const Range3Di& range, CompressedBufferImage3D& image, const BufferUsage usage) { @@ -587,7 +587,7 @@ CubeMapTexture& CubeMapTexture::setSubImage(const Int level, const Vector3i& off Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.cubeSubImage3DImplementation(*this, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.cubeSubImage3DImplementation(*this, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -612,7 +612,7 @@ CubeMapTexture& CubeMapTexture::setCompressedSubImage(const Int level, const Vec Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); - glCompressedTextureSubImage3D(_id, level, offset.x(), offset.y(), offset.z(), image.size().x(), image.size().y(), image.size().z(), GLenum(compressedPixelFormat(image.format())), Implementation::occupiedCompressedImageDataSize(image), image.data()); + glCompressedTextureSubImage3D(_id, level, offset.x(), offset.y(), offset.z(), image.size().x(), image.size().y(), image.size().z(), GLenum(compressedPixelFormat(image.format())), Implementation::occupiedCompressedImageDataSize(image), image.data().data()); return *this; } @@ -633,7 +633,7 @@ CubeMapTexture& CubeMapTexture::setSubImage(const CubeMapCoordinate coordinate, Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyPixelStorageUnpack(image.storage()); - Context::current().state().texture.cubeSubImageImplementation(*this, coordinate, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data() + Context::current().state().texture.cubeSubImageImplementation(*this, coordinate, level, offset, image.size(), pixelFormat(image.format()), pixelType(image.format(), image.formatExtra()), image.data().data() #ifdef MAGNUM_TARGET_GLES2 + Magnum::Implementation::pixelStorageSkipOffset(image) #endif @@ -655,7 +655,7 @@ CubeMapTexture& CubeMapTexture::setCompressedSubImage(const CubeMapCoordinate co Buffer::unbindInternal(Buffer::TargetHint::PixelUnpack); #endif Context::current().state().renderer.applyCompressedPixelStorageUnpack(image); - Context::current().state().texture.cubeCompressedSubImageImplementation(*this, coordinate, level, offset, image.size(), compressedPixelFormat(image.format()), image.data(), Implementation::occupiedCompressedImageDataSize(image)); + Context::current().state().texture.cubeCompressedSubImageImplementation(*this, coordinate, level, offset, image.size(), compressedPixelFormat(image.format()), image.data().data(), Implementation::occupiedCompressedImageDataSize(image)); return *this; } diff --git a/src/Magnum/GL/DefaultFramebuffer.cpp b/src/Magnum/GL/DefaultFramebuffer.cpp index 7202d334d..77dc1f259 100644 --- a/src/Magnum/GL/DefaultFramebuffer.cpp +++ b/src/Magnum/GL/DefaultFramebuffer.cpp @@ -74,7 +74,7 @@ DefaultFramebuffer& DefaultFramebuffer::mapForDraw(const Containers::ArrayView{11}, BufferUsage::StaticDraw}; + BufferImage2D{Magnum::PixelFormat::RGB8Unorm, {1, 3}, Containers::Array{NoInit, 11}, BufferUsage::StaticDraw}; CORRADE_COMPARE(out, "GL::BufferImage: data too small, got 11 but expected at least 12 bytes\n"); } @@ -477,7 +477,7 @@ void BufferImageGLTest::constructCompressedInvalidSize() { { Containers::String out; Error redirectError{&out}; - CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{15}, BufferUsage::StaticDraw}; + CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{NoInit, 15}, BufferUsage::StaticDraw}; /* Here it's assuming the buffer is already filled, of given size */ CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, GL::Buffer{}, 15}; CORRADE_COMPARE_AS(out, @@ -489,7 +489,7 @@ void BufferImageGLTest::constructCompressedInvalidSize() { } { Containers::String out; Error redirectError{&out}; - CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{15}, BufferUsage::StaticDraw}; + CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{NoInit, 15}, BufferUsage::StaticDraw}; /* Here it's assuming the buffer is already filled, of given size */ CompressedBufferImage2D{Magnum::CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, GL::Buffer{}, 15}; CORRADE_COMPARE_AS(out, @@ -831,7 +831,7 @@ void BufferImageGLTest::setDataInvalidSize() { Containers::String out; Error redirectError{&out}; - image.setData(PixelFormat::RGB, PixelType::UnsignedByte, {1, 3}, Containers::Array{11}, BufferUsage::StaticDraw); + image.setData(PixelFormat::RGB, PixelType::UnsignedByte, {1, 3}, Containers::Array{NoInit, 11}, BufferUsage::StaticDraw); /* Keeping current storage */ image.setData(PixelFormat::RGBA, PixelType::UnsignedByte, {2, 1}, nullptr, BufferUsage::StaticDraw); CORRADE_COMPARE_AS(out, diff --git a/src/Magnum/GL/Test/BufferTextureGLTest.cpp b/src/Magnum/GL/Test/BufferTextureGLTest.cpp index 1fba048fd..16658e2c8 100644 --- a/src/Magnum/GL/Test/BufferTextureGLTest.cpp +++ b/src/Magnum/GL/Test/BufferTextureGLTest.cpp @@ -522,10 +522,10 @@ void BufferTextureGLTest::appleSetBufferMapRange() { MAGNUM_VERIFY_NO_GL_ERROR(); /* This also crashes unless worked around. Ugh. */ - char* ptr = buffer.map(0, 16, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); - CORRADE_VERIFY(ptr); + Containers::ArrayView array = buffer.map(0, 16, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); + CORRADE_VERIFY(array.data()); - ptr[12] = 0x35; + array[12] = 0x35; /* This doesn't, it seems (yay!) */ buffer.flushMappedRange(8, 8); diff --git a/src/Magnum/GL/Test/ContextGLTest.cpp b/src/Magnum/GL/Test/ContextGLTest.cpp index 77ec51d5c..88a027483 100644 --- a/src/Magnum/GL/Test/ContextGLTest.cpp +++ b/src/Magnum/GL/Test/ContextGLTest.cpp @@ -274,7 +274,7 @@ void ContextGLTest::constructConfiguration() { Containers::ScopeGuard resetCurrent{current, Context::makeCurrent}; Debug redirectOut{&out}; - Platform::GLContext ctx{Int(data.args.size()), data.args, Context::Configuration{} + Platform::GLContext ctx{Int(data.args.size()), data.args.data(), Context::Configuration{} .setFlags(data.flags) .addDisabledWorkarounds(data.disabledWorkarounds) .addDisabledExtensions(data.disabledExtensions) @@ -311,7 +311,7 @@ void ContextGLTest::constructMove() { /* First gather just the command-line parameters. Nothing to verify here as it's not initialized yet. */ - Platform::GLContext a{NoCreate, Int(data.args.size()), data.args}; + Platform::GLContext a{NoCreate, Int(data.args.size()), data.args.data()}; /* The context is not created yet, so it doesn't set it as current yet */ CORRADE_VERIFY(!Context::hasCurrent()); diff --git a/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp b/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp index 66c653927..029499a63 100644 --- a/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp +++ b/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp @@ -824,7 +824,7 @@ void CubeMapTextureArrayGLTest::imageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*6*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*6*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, {2, 2, 6}, imageData, ImageFlag3D::Array}; texture.image(0, image); @@ -952,7 +952,7 @@ void CubeMapTextureArrayGLTest::compressedImageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 6*16}; + Containers::Array imageData{NoInit, data.offset + 6*16}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 6}, imageData, ImageFlag3D::Array}; texture.compressedImage(0, image); @@ -1117,7 +1117,7 @@ void CubeMapTextureArrayGLTest::subImageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, {2, 2, 4}, imageData, ImageFlag3D::Array}; texture.subImage(0, Range3Di::fromSize(Vector3i{1}, {2, 2, 4}), image); @@ -1370,7 +1370,7 @@ void CubeMapTextureArrayGLTest::compressedSubImageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 4*16}; + Containers::Array imageData{NoInit, data.offset + 4*16}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 4}, imageData, ImageFlag3D::Array}; texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 1}, Vector3i{4}), image); diff --git a/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp b/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp index 506ffcd34..17ee75d99 100644 --- a/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp +++ b/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp @@ -1092,7 +1092,7 @@ void CubeMapTextureGLTest::imageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.image(CubeMapCoordinate::PositiveY, 0, image); @@ -1367,7 +1367,7 @@ void CubeMapTextureGLTest::compressedImageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 16}; + Containers::Array imageData{NoInit, data.offset + 16}; MutableCompressedImageView2D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, imageData, ImageFlag2D::Array}; texture.compressedImage(CubeMapCoordinate::PositiveZ, 0, image); @@ -1702,7 +1702,7 @@ void CubeMapTextureGLTest::image3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*6*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*6*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, {2, 2, 6}, imageData, ImageFlag3D::Array}; texture.image(0, image); @@ -1794,7 +1794,7 @@ void CubeMapTextureGLTest::subImage3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, {2, 2, 1}, imageData, ImageFlag3D::Array}; texture.subImage(0, Range3Di::fromSize({1, 1, 0}, {2, 2, 1}), image); @@ -1971,7 +1971,7 @@ void CubeMapTextureGLTest::compressedImage3DQueryView() { CORRADE_SKIP("Skipping the rest of the test"); } - Containers::Array imageData{data.offset + 16*6}; + Containers::Array imageData{NoInit, data.offset + 16*6}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 6}, imageData, ImageFlag3D::Array}; texture.compressedImage(0, image); @@ -2104,7 +2104,7 @@ void CubeMapTextureGLTest::compressedSubImage3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 16}; + Containers::Array imageData{NoInit, data.offset + 16}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 1}, imageData, ImageFlag3D::Array}; texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 0}, {4, 4, 1}), image); diff --git a/src/Magnum/GL/Test/RectangleTextureGLTest.cpp b/src/Magnum/GL/Test/RectangleTextureGLTest.cpp index 203ca2d44..47b52e8dc 100644 --- a/src/Magnum/GL/Test/RectangleTextureGLTest.cpp +++ b/src/Magnum/GL/Test/RectangleTextureGLTest.cpp @@ -482,7 +482,7 @@ void RectangleTextureGLTest::imageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.image(image); @@ -602,7 +602,7 @@ void RectangleTextureGLTest::subImageQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.subImage(Range2Di::fromSize(Vector2i{1}, Vector2i{2}), image); diff --git a/src/Magnum/GL/Test/TextureArrayGLTest.cpp b/src/Magnum/GL/Test/TextureArrayGLTest.cpp index 4ec6dec5b..c9eb59685 100644 --- a/src/Magnum/GL/Test/TextureArrayGLTest.cpp +++ b/src/Magnum/GL/Test/TextureArrayGLTest.cpp @@ -1261,7 +1261,7 @@ void TextureArrayGLTest::image1DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.image(0, image); @@ -1382,7 +1382,7 @@ void TextureArrayGLTest::subImage1DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}), image); @@ -1541,7 +1541,7 @@ void TextureArrayGLTest::image2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*2*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector3i{2}, imageData}; texture.image(0, image); @@ -1691,7 +1691,7 @@ void TextureArrayGLTest::subImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*2*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector3i{2}, imageData, ImageFlag3D::Array}; texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}), image); @@ -1847,7 +1847,7 @@ void TextureArrayGLTest::compressedImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*16}; + Containers::Array imageData{NoInit, data.offset + 2*16}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 2}, imageData}; texture.compressedImage(0, image); @@ -2042,7 +2042,7 @@ void TextureArrayGLTest::compressedSubImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*16}; + Containers::Array imageData{NoInit, data.offset + 2*16}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, {4, 4, 2}, imageData, ImageFlag3D::Array}; texture.compressedSubImage(0, Range3Di::fromSize({4, 0, 1}, {4, 4, 2}), image); diff --git a/src/Magnum/GL/Test/TextureGLTest.cpp b/src/Magnum/GL/Test/TextureGLTest.cpp index 9d9c2eb24..a3797500e 100644 --- a/src/Magnum/GL/Test/TextureGLTest.cpp +++ b/src/Magnum/GL/Test/TextureGLTest.cpp @@ -1853,7 +1853,7 @@ void TextureGLTest::image1DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*4}; + Containers::Array imageData{NoInit, data.offset + 2*4}; MutableImageView1D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, 2, imageData}; texture.image(0, image); @@ -1961,7 +1961,7 @@ void TextureGLTest::subImage1DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*4}; + Containers::Array imageData{NoInit, data.offset + 2*4}; MutableImageView1D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, 2, imageData}; texture.subImage(0, Range1Di::fromSize(1, 2), image); @@ -2121,7 +2121,7 @@ void TextureGLTest::image2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.image(0, image); @@ -2258,7 +2258,7 @@ void TextureGLTest::subImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*4}; MutableImageView2D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, imageData, ImageFlag2D::Array}; texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}), image); @@ -2405,7 +2405,7 @@ void TextureGLTest::compressedImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 1*16}; + Containers::Array imageData{NoInit, data.offset + 1*16}; MutableCompressedImageView2D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, imageData, ImageFlag2D::Array}; texture.compressedImage(0, image); @@ -2571,7 +2571,7 @@ void TextureGLTest::compressedSubImage2DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 1*16}; + Containers::Array imageData{NoInit, data.offset + 1*16}; MutableCompressedImageView2D image{data.storage, CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, imageData, ImageFlag2D::Array}; texture.compressedSubImage(0, Range2Di::fromSize({4, 0}, Vector2i{4}), image); @@ -2694,7 +2694,7 @@ void TextureGLTest::image3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*2*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector3i{2}, imageData, ImageFlag3D::Array}; texture.image(0, image); @@ -2839,7 +2839,7 @@ void TextureGLTest::subImage3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 2*2*2*4}; + Containers::Array imageData{NoInit, data.offset + 2*2*2*4}; MutableImageView3D image{data.storage, PixelFormat::RGBA, PixelType::UnsignedByte, Vector3i{2}, imageData, ImageFlag3D::Array}; texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}), image); @@ -2986,7 +2986,7 @@ void TextureGLTest::compressedImage3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 64}; + Containers::Array imageData{NoInit, data.offset + 64}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBABptcUnorm, Vector3i{4}, imageData, ImageFlag3D::Array}; texture.compressedImage(0, image); @@ -3200,7 +3200,7 @@ void TextureGLTest::compressedSubImage3DQueryView() { MAGNUM_VERIFY_NO_GL_ERROR(); - Containers::Array imageData{data.offset + 64}; + Containers::Array imageData{NoInit, data.offset + 64}; MutableCompressedImageView3D image{data.storage, CompressedPixelFormat::RGBABptcUnorm, Vector3i{4}, imageData, ImageFlag3D::Array}; texture.compressedSubImage(0, Range3Di::fromSize({4, 0, 0}, Vector3i{4}), image); diff --git a/src/Magnum/Implementation/ImageProperties.h b/src/Magnum/Implementation/ImageProperties.h index a44eb64e1..b2a4befaa 100644 --- a/src/Magnum/Implementation/ImageProperties.h +++ b/src/Magnum/Implementation/ImageProperties.h @@ -234,7 +234,7 @@ template Containers::S static_assert(sizeof(decltype(image.data().front())) == 1, "pointer arithmetic expects image data type to have 1 byte"); - return {data.exceptPrefix(properties.first[dimensions - 1]), data + properties.first.sum(), size, stride}; + return {data.exceptPrefix(properties.first[dimensions - 1]), data.data() + properties.first.sum(), size, stride}; } }} diff --git a/src/Magnum/MaterialTools/Filter.cpp b/src/Magnum/MaterialTools/Filter.cpp index 7494a4b02..6954d2bb7 100644 --- a/src/Magnum/MaterialTools/Filter.cpp +++ b/src/Magnum/MaterialTools/Filter.cpp @@ -102,7 +102,7 @@ Trade::MaterialData filterAttributesLayersImplementation(const Trade::MaterialDa /* Copy attributes that aren't filtered away. Not using NoInit in order to use the default deleter and have this usable from plugins. */ - Containers::Array attributes{patchedInputAttributesToKeep.count()}; + Containers::Array attributes{ValueInit, patchedInputAttributesToKeep.count()}; Utility::copyMasked(material.attributeData(), patchedInputAttributesToKeep, attributes); return Trade::MaterialData{material.types() & typesToKeep, Utility::move(attributes), Utility::move(layers)}; diff --git a/src/Magnum/MaterialTools/Test/CopyTest.cpp b/src/Magnum/MaterialTools/Test/CopyTest.cpp index 7a6177a8a..4e5ee7153 100644 --- a/src/Magnum/MaterialTools/Test/CopyTest.cpp +++ b/src/Magnum/MaterialTools/Test/CopyTest.cpp @@ -103,7 +103,7 @@ void CopyTest::singleLayerNoLayerData() { CORRADE_COMPARE(copy.layerDataFlags(), Trade::DataFlag::Owned|Trade::DataFlag::Mutable); CORRADE_COMPARE(copy.layerCount(), 1); CORRADE_COMPARE(copy.layerData().size(), 0); - CORRADE_COMPARE(copy.layerData(), nullptr); + CORRADE_COMPARE(copy.layerData().data(), nullptr); CORRADE_COMPARE(copy.attributeDataFlags(), Trade::DataFlag::Owned|Trade::DataFlag::Mutable); CORRADE_COMPARE(copy.attributeCount(), 3); @@ -209,7 +209,7 @@ void CopyTest::rvalueOwnedAttributesNoLayerData() { CORRADE_COMPARE(copy.layerDataFlags(), Trade::DataFlag::Owned|Trade::DataFlag::Mutable); CORRADE_COMPARE(copy.layerCount(), 1); CORRADE_COMPARE(copy.layerData().size(), 0); - CORRADE_COMPARE(copy.layerData(), nullptr); + CORRADE_COMPARE(copy.layerData().data(), nullptr); CORRADE_COMPARE(copy.attributeDataFlags(), Trade::DataFlag::Owned|Trade::DataFlag::Mutable); CORRADE_COMPARE(copy.attributeData().data(), originalAttributes); diff --git a/src/Magnum/MeshTools/CompressIndices.cpp b/src/Magnum/MeshTools/CompressIndices.cpp index 750d0370b..8f6a0a7c0 100644 --- a/src/Magnum/MeshTools/CompressIndices.cpp +++ b/src/Magnum/MeshTools/CompressIndices.cpp @@ -166,7 +166,7 @@ Trade::MeshData compressIndices(Trade::MeshData&& mesh, MeshIndexType atLeast) { /* Recreate the attribute array with each attribute being shifted by the offset calculated above */ const UnsignedInt newVertexCount = vertexCount - offset; - Containers::Array attributeData{mesh.attributeCount()}; + Containers::Array attributeData{ValueInit, mesh.attributeCount()}; for(UnsignedInt i = 0, max = attributeData.size(); i != max; ++i) { attributeData[i] = Implementation::remapAttributeData(mesh.attributeData(i), newVertexCount, originalVertexData, vertexData.exceptPrefix(offset*mesh.attributeStride(i))); } @@ -195,7 +195,7 @@ template Containers::Array compressIndicesAs(const std::vector buffer(indices.size()); + Containers::Array buffer{NoInit, indices.size()}; for(std::size_t i = 0; i != indices.size(); ++i) buffer[i] = T(indices[i]); diff --git a/src/Magnum/MeshTools/GenerateIndices.cpp b/src/Magnum/MeshTools/GenerateIndices.cpp index a08a6804c..da03114e9 100644 --- a/src/Magnum/MeshTools/GenerateIndices.cpp +++ b/src/Magnum/MeshTools/GenerateIndices.cpp @@ -632,7 +632,7 @@ Trade::MeshData generateIndices(Trade::MeshData&& mesh) { /* Recreate the attribute array with views on the new vertexData */ /** @todo if the vertex data were moved and this array is owned, it wouldn't need to be recreated, but the logic is a bit complex */ - Containers::Array attributeData{mesh.attributeCount()}; + Containers::Array attributeData{ValueInit, mesh.attributeCount()}; for(UnsignedInt i = 0, max = attributeData.size(); i != max; ++i) attributeData[i] = Implementation::remapAttributeData(mesh.attributeData(i), vertexCount, originalVertexData, vertexData); diff --git a/src/Magnum/MeshTools/Implementation/Tipsify.h b/src/Magnum/MeshTools/Implementation/Tipsify.h index 3215c7ad7..8e7909e59 100644 --- a/src/Magnum/MeshTools/Implementation/Tipsify.h +++ b/src/Magnum/MeshTools/Implementation/Tipsify.h @@ -38,7 +38,7 @@ namespace Magnum { namespace MeshTools { namespace Implementation { namespace { template void buildAdjacency(const Containers::StridedArrayView1D& indices, const UnsignedInt vertexCount, Containers::Array& liveTriangleCount, Containers::Array& neighborOffset, Containers::Array& neighbors) { /* How many times is each vertex referenced == count of neighboring triangles for each vertex */ - liveTriangleCount = Containers::Array{vertexCount}; + liveTriangleCount = Containers::Array{ValueInit, vertexCount}; for(std::size_t i = 0; i != indices.size(); ++i) ++liveTriangleCount[indices[i]]; diff --git a/src/Magnum/MeshTools/Interleave.cpp b/src/Magnum/MeshTools/Interleave.cpp index c8dd96f49..0f25741de 100644 --- a/src/Magnum/MeshTools/Interleave.cpp +++ b/src/Magnum/MeshTools/Interleave.cpp @@ -198,7 +198,7 @@ Containers::Array interleavedLayout(Trade::MeshData&& if(!extraAttributeCount && !originalAttributeData.deleter()) attributeData = Utility::move(originalAttributeData); else { - attributeData = Containers::Array{originalAttributeCount + extraAttributeCount}; + attributeData = Containers::Array{ValueInit, originalAttributeCount + extraAttributeCount}; Utility::copy(originalAttributeData, attributeData.prefix(originalAttributeCount)); } diff --git a/src/Magnum/MeshTools/RemoveDuplicates.cpp b/src/Magnum/MeshTools/RemoveDuplicates.cpp index ac4c92e8a..d70a90c91 100644 --- a/src/Magnum/MeshTools/RemoveDuplicates.cpp +++ b/src/Magnum/MeshTools/RemoveDuplicates.cpp @@ -88,7 +88,7 @@ std::size_t removeDuplicatesInto(const Containers::StridedArrayView2D entry = data[i].asContiguous(); - const auto result = table.emplace(entry, i); + const auto result = table.emplace(entry.data(), i); /* Put the (either new or already existing) index into the output index array */ @@ -146,7 +146,7 @@ std::size_t removeDuplicatesInPlaceInto(const Containers::StridedArrayView2D std::size_t removeDuplicatesFuzzyIndexedInPla This is a similar workflow to removeDuplicatesInPlaceInto() with the only difference that we're remapping an existing index array several times over instead of creating a new one */ - const auto result = table.emplace(discretizedEntry, table.size()); + const auto result = table.emplace(discretizedEntry.data(), table.size()); /* Add the (either new or already existing) index into the array */ remapping[i] = result.first->second; @@ -459,7 +459,7 @@ Trade::MeshData removeDuplicates(const Trade::MeshData& mesh) { Containers::StridedArrayView2D{uniqueVertexData, {uniqueVertexCount, vertexData.size()[1]}}); /* Route all attributes to the new vertex data */ - Containers::Array attributeData{ownedInterleaved.attributeCount()}; + Containers::Array attributeData{ValueInit, ownedInterleaved.attributeCount()}; for(UnsignedInt i = 0; i != ownedInterleaved.attributeCount(); ++i) attributeData[i] = Implementation::remapAttributeData(ownedInterleaved.attributeData(i), uniqueVertexCount, ownedInterleaved.vertexData(), uniqueVertexData); diff --git a/src/Magnum/MeshTools/Test/CompressIndicesTest.cpp b/src/Magnum/MeshTools/Test/CompressIndicesTest.cpp index 1d839ce25..db1df82f0 100644 --- a/src/Magnum/MeshTools/Test/CompressIndicesTest.cpp +++ b/src/Magnum/MeshTools/Test/CompressIndicesTest.cpp @@ -311,7 +311,7 @@ template void CompressIndicesTest::compressMeshData() { } void CompressIndicesTest::compressMeshDataMove() { - Containers::Array vertexData{103*24}; + Containers::Array vertexData{NoInit, 103*24}; Containers::StridedArrayView1D positionView{vertexData, reinterpret_cast(vertexData.data()), 103, 8}; Containers::StridedArrayView1D normalView{vertexData, diff --git a/src/Magnum/MeshTools/Test/ConcatenateTest.cpp b/src/Magnum/MeshTools/Test/ConcatenateTest.cpp index 7fdcc2cf5..98d36b292 100644 --- a/src/Magnum/MeshTools/Test/ConcatenateTest.cpp +++ b/src/Magnum/MeshTools/Test/ConcatenateTest.cpp @@ -467,16 +467,16 @@ void ConcatenateTest::concatenateNone() { } void ConcatenateTest::concatenateInto() { - Containers::Array attributeData{2}; + Containers::Array attributeData{ValueInit, 2}; Containers::Array vertexData; Containers::Array indexData; arrayResize(vertexData, DirectInit, (sizeof(Vector2) + sizeof(Vector3))*7, '\xff'); arrayClear(vertexData); arrayResize(indexData, DirectInit, sizeof(UnsignedInt)*9, '\xff'); arrayClear(indexData); - const void* attributeDataPointer = attributeData; - const void* vertexDataPointer = vertexData; - const void* indexDataPointer = indexData; + const void* attributeDataPointer = attributeData.data(); + const void* vertexDataPointer = vertexData.data(); + const void* indexDataPointer = indexData.data(); attributeData[0] = Trade::MeshAttributeData{Trade::MeshAttribute::Position, VertexFormat::Vector2, nullptr}; @@ -549,13 +549,13 @@ void ConcatenateTest::concatenateInto() { } void ConcatenateTest::concatenateIntoNoIndexArray() { - Containers::Array attributeData{1}; + Containers::Array attributeData{ValueInit, 1}; Containers::Array vertexData; Containers::Array indexData; arrayReserve(vertexData, sizeof(Vector2)*3); arrayReserve(indexData, sizeof(UnsignedInt)); - const void* attributeDataPointer = attributeData; - const void* vertexDataPointer = vertexData; + const void* attributeDataPointer = attributeData.data(); + const void* vertexDataPointer = vertexData.data(); attributeData[0] = Trade::MeshAttributeData{Trade::MeshAttribute::Position, VertexFormat::Vector2, nullptr}; @@ -597,7 +597,7 @@ void ConcatenateTest::concatenateIntoNoIndexArray() { void ConcatenateTest::concatenateIntoNonOwnedAttributeArray() { Containers::Array vertexData; arrayReserve(vertexData, sizeof(Vector2)*3); - const void* vertexDataPointer = vertexData; + const void* vertexDataPointer = vertexData.data(); const Trade::MeshAttributeData attributeData[]{ Trade::MeshAttributeData{Trade::MeshAttribute::Position, diff --git a/src/Magnum/MeshTools/Test/CopyTest.cpp b/src/Magnum/MeshTools/Test/CopyTest.cpp index 210784af9..95b551df3 100644 --- a/src/Magnum/MeshTools/Test/CopyTest.cpp +++ b/src/Magnum/MeshTools/Test/CopyTest.cpp @@ -314,7 +314,7 @@ void CopyTest::copyRvalueIndicesVerticesAttributesOwned() { Containers::Array attributes{ValueInit, 1}; attributes[0] = Trade::MeshAttributeData{Trade::MeshAttribute::Position, Containers::arrayView(positions)}; - const Trade::MeshAttributeData* originalAttributes = attributes; + const Trade::MeshAttributeData* originalAttributes = attributes.data(); Trade::MeshData copy = MeshTools::copy(Trade::MeshData{MeshPrimitive::Triangles, Utility::move(indexData), Trade::MeshIndexData{indices}, @@ -336,8 +336,8 @@ void CopyTest::copyRvalueIndicesVerticesAttributesOwned() { TestSuite::Compare::Container); /* All data should be transferred without any copy */ - CORRADE_COMPARE(copy.indexData().data(), static_cast(indices)); - CORRADE_COMPARE(copy.vertexData().data(), static_cast(positions)); + CORRADE_COMPARE(copy.indexData().data(), static_cast(indices.data())); + CORRADE_COMPARE(copy.vertexData().data(), static_cast(positions.data())); CORRADE_COMPARE(copy.attributeData().data(), originalAttributes); } @@ -352,7 +352,7 @@ void CopyTest::copyRvalueAttributesOwned() { Containers::Array attributes{ValueInit, 1}; attributes[0] = Trade::MeshAttributeData{Trade::MeshAttribute::Position, Containers::arrayView(positions)}; - const Trade::MeshAttributeData* originalAttributes = attributes; + const Trade::MeshAttributeData* originalAttributes = attributes.data(); Trade::MeshData copy = MeshTools::copy(Trade::MeshData{MeshPrimitive::Triangles, {}, positions, Utility::move(attributes)}); CORRADE_COMPARE(copy.primitive(), MeshPrimitive::Triangles); diff --git a/src/Magnum/MeshTools/Test/FilterTest.cpp b/src/Magnum/MeshTools/Test/FilterTest.cpp index 91a725831..a11ab05ea 100644 --- a/src/Magnum/MeshTools/Test/FilterTest.cpp +++ b/src/Magnum/MeshTools/Test/FilterTest.cpp @@ -157,9 +157,9 @@ void FilterTest::attributes() { auto&& data = ImplementationSpecificIndexTypeData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -206,7 +206,7 @@ void FilterTest::attributesNoIndexData() { /* A trivial subset of filterAttributes() testing it doesn't blow up if the mesh is not indexed */ - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleFan, @@ -238,9 +238,9 @@ void FilterTest::attributesRvalue() { /* Subset of attributes() verifying data ownership transfer behavior */ - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Containers::Array attributes{InPlaceInit, { @@ -314,9 +314,9 @@ void FilterTest::onlyAttributes() { auto&& data = ImplementationSpecificIndexTypeData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -368,7 +368,7 @@ void FilterTest::onlyAttributesNoIndexData() { /* A trivial subset of filterOnlyAttributeNames() testing it doesn't blow up if the mesh is not indexed */ - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleFan, @@ -397,7 +397,7 @@ void FilterTest::onlyAttributesNoIndexData() { } void FilterTest::onlyAttributesNoAttributeData() { - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Trade::MeshData mesh{MeshPrimitive::Points, @@ -428,7 +428,7 @@ void FilterTest::onlyAttributesRvalue() { only checks that the r-value gets correctly passed through all overloads to keep the index data owned and vertex data not. */ - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Vertex vertexData[3]; Containers::StridedArrayView1D vertices = vertexData; @@ -466,9 +466,9 @@ void FilterTest::onlyAttributeIds() { auto&& data = ImplementationSpecificIndexTypeData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -537,7 +537,7 @@ void FilterTest::onlyAttributeIdsNoIndexData() { /* A trivial subset of filterOnlyAttributeIds() testing it doesn't blow up if the mesh is not indexed */ - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleFan, @@ -568,7 +568,7 @@ void FilterTest::onlyAttributeIdsNoIndexData() { } void FilterTest::onlyAttributeIdsNoAttributeData() { - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Trade::MeshData mesh{MeshPrimitive::Points, @@ -598,9 +598,9 @@ void FilterTest::exceptAttributes() { auto&& data = ImplementationSpecificIndexTypeData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -650,7 +650,7 @@ void FilterTest::exceptAttributesNoIndexData() { /* A trivial subset of filterExceptAttributeNames() testing it doesn't blow up if the mesh is not indexed */ - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleFan, @@ -680,7 +680,7 @@ void FilterTest::exceptAttributesNoIndexData() { } void FilterTest::exceptAttributesNoAttributeData() { - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Trade::MeshData mesh{MeshPrimitive::Points, @@ -712,7 +712,7 @@ void FilterTest::exceptAttributesRvalue() { to keep the vertex data owned and index data not. */ UnsignedShort indices[5]; - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -750,9 +750,9 @@ void FilterTest::exceptAttributeIds() { auto&& data = ImplementationSpecificIndexTypeData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, @@ -821,7 +821,7 @@ void FilterTest::exceptAttributeIdsNoIndexData() { /* A trivial subset of filterExceptAttributeIds() testing it doesn't blow up if the mesh is not indexed */ - Containers::Array vertexData{3*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vertex)}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Trade::MeshData mesh{MeshPrimitive::TriangleFan, @@ -853,7 +853,7 @@ void FilterTest::exceptAttributeIdsNoIndexData() { } void FilterTest::exceptAttributeIdsNoAttributeData() { - Containers::Array indexData{5*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 5*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Trade::MeshData mesh{MeshPrimitive::Points, diff --git a/src/Magnum/MeshTools/Test/GenerateIndicesTest.cpp b/src/Magnum/MeshTools/Test/GenerateIndicesTest.cpp index b33208b00..6e91a77a9 100644 --- a/src/Magnum/MeshTools/Test/GenerateIndicesTest.cpp +++ b/src/Magnum/MeshTools/Test/GenerateIndicesTest.cpp @@ -1402,7 +1402,7 @@ void GenerateIndicesTest::generateIndicesMeshDataMove() { Vector2 textureCoordinates; }; - Containers::Array vertexData{5*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 5*sizeof(Vertex)}; auto vertices = Containers::arrayCast(vertexData); vertices[0].position = {1.5f, 0.3f}; vertices[1].position = {2.5f, 1.3f}; @@ -1537,7 +1537,7 @@ void GenerateIndicesTest::generateIndicesMeshDataTrivialIndexedMove() { {5.5f, 4.3f}, }; - Containers::Array indexData{4*sizeof(UnsignedInt)}; + Containers::Array indexData{NoInit, 4*sizeof(UnsignedInt)}; Containers::ArrayView indices = Containers::arrayCast(indexData); Utility::copy({60, 21, 72, 93}, indices); @@ -1573,7 +1573,7 @@ void GenerateIndicesTest::generateIndicesMeshDataTrivialIndexedMoveDifferentInde {5.5f, 4.3f}, }; - Containers::Array indexData{4*sizeof(UnsignedShort)}; + Containers::Array indexData{NoInit, 4*sizeof(UnsignedShort)}; Containers::ArrayView indices = Containers::arrayCast(indexData); Utility::copy({60, 21, 72, 93}, indices); diff --git a/src/Magnum/MeshTools/Test/InterleaveTest.cpp b/src/Magnum/MeshTools/Test/InterleaveTest.cpp index 08fb0f27e..35a2e0db1 100644 --- a/src/Magnum/MeshTools/Test/InterleaveTest.cpp +++ b/src/Magnum/MeshTools/Test/InterleaveTest.cpp @@ -377,7 +377,7 @@ void InterleaveTest::interleaveIntoInvalid() { } void InterleaveTest::interleavedData() { - Containers::Array vertexData{100 + 3*20}; + Containers::Array vertexData{NoInit, 100 + 3*20}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 20}; Containers::StridedArrayView1D normals{vertexData, @@ -409,7 +409,7 @@ void InterleaveTest::interleavedData() { void InterleaveTest::interleavedDataUnordered() { /* Compared to interleavedData() the attribute order in MeshData is flipped, but the result should be the same */ - Containers::Array vertexData{100 + 3*20}; + Containers::Array vertexData{NoInit, 100 + 3*20}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 20}; Containers::StridedArrayView1D normals{vertexData, @@ -432,7 +432,7 @@ void InterleaveTest::interleavedDataUnordered() { void InterleaveTest::interleavedDataGaps() { /* Compared to interleavedData() there's a few padding bytes in between and at the end, the size should tightly wrap the data though */ - Containers::Array vertexData{100 + 3*40}; + Containers::Array vertexData{NoInit, 100 + 3*40}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100 + 5), 3, 40}; Containers::StridedArrayView1D normals{vertexData, @@ -457,7 +457,7 @@ void InterleaveTest::interleavedDataGapsTrailingOmitted() { MeshData allows that, but StridedArrayView constructors don't (which is why this is using offset-only attributes), so verify we don't trip up on that. */ - Containers::Array vertexData{2*48 + 36}; + Containers::Array vertexData{NoInit, 2*48 + 36}; const char* vertexDataPointer = vertexData.data(); Trade::MeshData data{MeshPrimitive::Triangles, Utility::move(vertexData), { @@ -479,7 +479,7 @@ void InterleaveTest::interleavedDataGapsTrailingOmitted() { void InterleaveTest::interleavedDataAliased() { /* Compared to interleavedData() the normals share first two components with positions */ - Containers::Array vertexData{100 + 3*12}; + Containers::Array vertexData{NoInit, 100 + 3*12}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 12}; Containers::StridedArrayView1D normals{vertexData, @@ -502,7 +502,7 @@ void InterleaveTest::interleavedDataAliased() { void InterleaveTest::interleavedDataSingleAttribute() { /* Just to ensure it passes also when there's just one tightly-packed attribute, which is the same as if it would be interleaved */ - Containers::Array vertexData{3*8}; + Containers::Array vertexData{NoInit, 3*8}; auto positions = Containers::arrayCast(vertexData); Trade::MeshData data{MeshPrimitive::Triangles, Utility::move(vertexData), { @@ -522,7 +522,7 @@ void InterleaveTest::interleavedDataArrayAttributes() { /* Same as above, except that the MeshData get those as custom Float array attribs of size 3 and 2 instead of Vector3 and Vector2. Output should be the same for both. */ - Containers::Array vertexData{100 + 3*40}; + Containers::Array vertexData{NoInit, 100 + 3*40}; Containers::StridedArrayView1D normals{vertexData, reinterpret_cast(vertexData.data() + 100 + 24), 3, 40}; Containers::StridedArrayView1D positions{vertexData, @@ -594,7 +594,7 @@ void InterleaveTest::interleavedDataNoVertices() { void InterleaveTest::interleavedDataNotInterleaved() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array vertexData{100 + 3*20}; + Containers::Array vertexData{NoInit, 100 + 3*20}; auto positions = Containers::arrayCast(vertexData.exceptPrefix(100).prefix(3*8)); auto normals = Containers::arrayCast(vertexData.exceptPrefix(100+3*8)); @@ -650,7 +650,7 @@ void InterleaveTest::interleavedDataAttributeAcrossStride() { } void InterleaveTest::interleavedDataZeroStride() { - Containers::Array vertexData{100 + 20}; + Containers::Array vertexData{NoInit, 100 + 20}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 0}; Containers::StridedArrayView1D normals{vertexData, @@ -667,7 +667,7 @@ void InterleaveTest::interleavedDataZeroStride() { } void InterleaveTest::interleavedDataNegativeStride() { - Containers::Array vertexData{100 + 3*20}; + Containers::Array vertexData{NoInit, 100 + 3*20}; Containers::StridedArrayView1D positions{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 20}; Containers::StridedArrayView1D normals{vertexData, @@ -731,7 +731,7 @@ void InterleaveTest::interleavedDataImplementationSpecificVertexFormat() { /* The implementation-specific format is conservatively assumed to occupy the whole stride (even if it may be excessive) */ { - Containers::Array vertexData{100 + 3*50}; + Containers::Array vertexData{NoInit, 100 + 3*50}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 50}}; @@ -771,7 +771,7 @@ void InterleaveTest::interleavedDataImplementationSpecificVertexFormat() { /* Fits just into one byte at the end of stride */ { - Containers::Array vertexData{100 + 3*9}; + Containers::Array vertexData{NoInit, 100 + 3*9}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 9}}; @@ -791,7 +791,7 @@ void InterleaveTest::interleavedDataImplementationSpecificVertexFormat() { /* Doesn't have even one byte of space in the stride, invalid */ { - Containers::Array vertexData{100 + 3*8}; + Containers::Array vertexData{NoInit, 100 + 3*8}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 8}}; @@ -807,7 +807,7 @@ void InterleaveTest::interleavedDataImplementationSpecificVertexFormat() { /* A non-interleaved (or not?) attribute with a implementation-specific format after interleaved ones is also invalid */ { - Containers::Array vertexData{100 + 3*20 + 3}; + Containers::Array vertexData{NoInit, 100 + 3*20 + 3}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 20}}; @@ -826,8 +826,8 @@ void InterleaveTest::interleavedDataImplementationSpecificVertexFormat() { } void InterleaveTest::interleavedLayout() { - Containers::Array indexData{6}; - Containers::Array vertexData{3*32}; + Containers::Array indexData{ValueInit, 6}; + Containers::Array vertexData{NoInit, 3*32}; const Trade::MeshAttributeData attributeData[]{ Trade::MeshAttributeData{Trade::MeshAttribute::Position, @@ -901,7 +901,7 @@ void InterleaveTest::interleavedLayoutImplementationSpecificVertexFormat() { } void InterleaveTest::interleavedLayoutExtra() { - Containers::Array vertexData{3*20}; + Containers::Array vertexData{NoInit, 3*20}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::arrayCast(vertexData.prefix(3*8))}; Trade::MeshAttributeData normals{Trade::MeshAttribute::Normal, @@ -961,7 +961,7 @@ void InterleaveTest::interleavedLayoutExtra() { } void InterleaveTest::interleavedLayoutExtraAliased() { - Containers::Array vertexData{3*12}; + Containers::Array vertexData{NoInit, 3*12}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data()), 3, 12}}; Trade::MeshData data{MeshPrimitive::Triangles, @@ -990,7 +990,7 @@ void InterleaveTest::interleavedLayoutExtraAliased() { void InterleaveTest::interleavedLayoutExtraTooNegativePadding() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array vertexData{3*12}; + Containers::Array vertexData{NoInit, 3*12}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data()), 3, 12}}; Trade::MeshData data{MeshPrimitive::Triangles, @@ -1050,9 +1050,9 @@ void InterleaveTest::interleavedLayoutAlreadyInterleaved() { auto&& data = AlreadyInterleavedData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{6}; + Containers::Array indexData{ValueInit, 6}; /* Test also removing the initial offset */ - Containers::Array vertexData{100 + 3*24}; + Containers::Array vertexData{NoInit, 100 + 3*24}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 24}}; Trade::MeshAttributeData normals{Trade::MeshAttribute::Normal, @@ -1101,8 +1101,8 @@ void InterleaveTest::interleavedLayoutAlreadyInterleavedAliased() { auto&& data = AlreadyInterleavedData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{6}; - Containers::Array vertexData{3*12}; + Containers::Array indexData{ValueInit, 6}; + Containers::Array vertexData{NoInit, 3*12}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data()), 3, 12}}; Trade::MeshAttributeData normals{Trade::MeshAttribute::Normal, @@ -1149,7 +1149,7 @@ void InterleaveTest::interleavedLayoutAlreadyInterleavedExtra() { auto&& data = AlreadyInterleavedData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array vertexData{100 + 3*24}; + Containers::Array vertexData{NoInit, 100 + 3*24}; Trade::MeshAttributeData positions{Trade::MeshAttribute::Position, Containers::StridedArrayView1D{vertexData, reinterpret_cast(vertexData.data() + 100), 3, 24}}; Trade::MeshAttributeData normals{Trade::MeshAttribute::Normal, @@ -1226,9 +1226,9 @@ void InterleaveTest::interleavedLayoutNothing() { } void InterleaveTest::interleavedLayoutRvalue() { - Containers::Array indexData{6}; - Containers::Array vertexData{3*20}; - Containers::Array attributeData{2}; + Containers::Array indexData{ValueInit, 6}; + Containers::Array vertexData{NoInit, 3*20}; + Containers::Array attributeData{ValueInit, 2}; attributeData[0] = Trade::MeshAttributeData{Trade::MeshAttribute::Position, Containers::arrayCast(vertexData.prefix(3*8))}; attributeData[1] = Trade::MeshAttributeData{Trade::MeshAttribute::Normal, @@ -1501,9 +1501,9 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMove() { auto&& data = AlreadyInterleavedData[testCaseInstanceId()]; setTestCaseDescription(data.name); - Containers::Array indexData{4}; + Containers::Array indexData{ValueInit, 4}; auto indexView = Containers::arrayCast(indexData); - Containers::Array vertexData{3*24}; + Containers::Array vertexData{NoInit, 3*24}; Containers::StridedArrayView1D positionView{vertexData, reinterpret_cast(vertexData.data()), 3, 24}; Containers::StridedArrayView1D normalView{vertexData, @@ -1512,7 +1512,7 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMove() { Trade::MeshAttributeData{Trade::MeshAttribute::Position, positionView}, Trade::MeshAttributeData{Trade::MeshAttribute::Normal, data.vertexFormat, normalView} }); - const Trade::MeshAttributeData* attributePointer = attributeData; + const Trade::MeshAttributeData* attributePointer = attributeData.data(); Trade::MeshData mesh{MeshPrimitive::TriangleFan, Utility::move(indexData), Trade::MeshIndexData{indexView}, @@ -1550,19 +1550,19 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveIndices() { setTestCaseDescription(data.name); /* Testing also offset */ - Containers::Array indexData{(50 + 3)*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, (50 + 3)*sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData).exceptPrefix(50); if(data.flip) indices = indices.flipped<0>(); Utility::copy({0, 2, 1}, indices); - Containers::Array vertexData{3*8}; + Containers::Array vertexData{NoInit, 3*8}; Containers::StridedArrayView1D positionView = Containers::arrayCast(vertexData); auto attributeData = Containers::array({ Trade::MeshAttributeData{Trade::MeshAttribute::Position, positionView}, }); - const void* indexPointer = indexData; - const Trade::MeshAttributeData* attributePointer = attributeData; + const void* indexPointer = indexData.data(); + const Trade::MeshAttributeData* attributePointer = attributeData.data(); Trade::MeshData mesh{MeshPrimitive::TriangleFan, Utility::move(indexData), Trade::MeshIndexData{data.indexType,indices}, @@ -1590,7 +1590,7 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveIndices() { } else { /* Only the actually used part of the index buffer gets transferred and is tightly packed */ - CORRADE_VERIFY(interleaved.indexData().data() != indexData); + CORRADE_VERIFY(interleaved.indexData().data() != indexData.data()); CORRADE_COMPARE(interleaved.indexData().size(), 3*sizeof(UnsignedShort)); CORRADE_COMPARE(interleaved.indexOffset(), 0); CORRADE_COMPARE(interleaved.indexStride(), sizeof(UnsignedShort)); @@ -1605,9 +1605,9 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveIndices() { } void InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveNonOwned() { - Containers::Array indexData{4}; + Containers::Array indexData{ValueInit, 4}; auto indexView = Containers::arrayCast(indexData); - Containers::Array vertexData{3*24}; + Containers::Array vertexData{NoInit, 3*24}; Containers::StridedArrayView1D positionView{vertexData, reinterpret_cast(vertexData.data()), 3, 24}; Containers::StridedArrayView1D normalView{vertexData, @@ -1616,7 +1616,7 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveNonOwned() { Trade::MeshAttributeData{Trade::MeshAttribute::Position, positionView}, Trade::MeshAttributeData{Trade::MeshAttribute::Normal, normalView} }); - const Trade::MeshAttributeData* attributePointer = attributeData; + const Trade::MeshAttributeData* attributePointer = attributeData.data(); Trade::MeshData data{MeshPrimitive::TriangleFan, {}, indexData, Trade::MeshIndexData{indexView}, diff --git a/src/Magnum/MeshTools/Test/RemoveDuplicatesTest.cpp b/src/Magnum/MeshTools/Test/RemoveDuplicatesTest.cpp index cf6c36907..d6bda8865 100644 --- a/src/Magnum/MeshTools/Test/RemoveDuplicatesTest.cpp +++ b/src/Magnum/MeshTools/Test/RemoveDuplicatesTest.cpp @@ -1036,7 +1036,7 @@ void RemoveDuplicatesTest::removeDuplicatesMeshDataFuzzy() { f = f*data.scale + Math::Vector<6, Float>{data.offset}; /** @todo i need some feature like "gimme just the top-level dimension" */ Containers::StridedArrayView1D floats{unique.vertexData(), - unique.vertexData() + unique.attributeOffset(1), + unique.vertexData().data() + unique.attributeOffset(1), unique.vertexCount(), unique.attributeStride(1)}; CORRADE_COMPARE_AS((Containers::arrayCast>(floats)), Containers::arrayView(expectedFloats), @@ -1163,7 +1163,7 @@ void RemoveDuplicatesTest::removeDuplicatesMeshDataFuzzyDouble() { }; /** @todo i need some feature like "gimme just the top-level dimension" */ Containers::StridedArrayView1D floats{unique.vertexData(), - unique.vertexData() + unique.attributeOffset(0), + unique.vertexData().data() + unique.attributeOffset(0), unique.vertexCount(), unique.attributeStride(0)}; CORRADE_COMPARE_AS((Containers::arrayCast>(floats)), Containers::arrayView(expectedFloats), diff --git a/src/Magnum/MeshTools/Test/SubdivideTest.cpp b/src/Magnum/MeshTools/Test/SubdivideTest.cpp index 61e930b2f..67e037a92 100644 --- a/src/Magnum/MeshTools/Test/SubdivideTest.cpp +++ b/src/Magnum/MeshTools/Test/SubdivideTest.cpp @@ -115,7 +115,7 @@ void SubdivideTest::subdivideWrongIndexCount() { Error redirectError{&out}; Containers::Array positions; - Containers::Array indices{2}; + Containers::Array indices{NoInit, 2}; MeshTools::subdivide(indices, positions, interpolator1); CORRADE_COMPARE(out, "MeshTools::subdivide(): index count is not divisible by 3\n"); } diff --git a/src/Magnum/MeshTools/Test/TransformTest.cpp b/src/Magnum/MeshTools/Test/TransformTest.cpp index 7c431b375..c887f7c60 100644 --- a/src/Magnum/MeshTools/Test/TransformTest.cpp +++ b/src/Magnum/MeshTools/Test/TransformTest.cpp @@ -643,7 +643,7 @@ void TransformTest::meshData2DRvaluePassthrough() { arrayAppend(attributes, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, vertices.slice(&Vertex::position), data.morphTargetId} }); - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleFan, data.indexed ? Utility::move(indexData) : nullptr, @@ -692,7 +692,7 @@ void TransformTest::meshData2DRvaluePassthroughIndexDataNotOwned() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, vertices} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, {}, indices, Trade::MeshIndexData{indices}, @@ -736,7 +736,7 @@ void TransformTest::meshData2DRvaluePassthroughVertexDataNotOwned() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, Containers::arrayView(vertices)} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(indexData), Trade::MeshIndexData{indices}, @@ -796,7 +796,7 @@ void TransformTest::meshData2DRvaluePassthroughWrongFormat() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, vertices} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(vertexData), Utility::move(attributes)}; @@ -1122,7 +1122,7 @@ void TransformTest::meshData3DRvaluePassthrough() { arrayAppend(attributes, Trade::MeshAttributeData{Trade::MeshAttribute::Bitangent, vertices.slice(&Vertex::bitangent), data.morphTargetId}); if(data.normals) arrayAppend(attributes, Trade::MeshAttributeData{Trade::MeshAttribute::Normal, vertices.slice(&Vertex::normal), data.morphTargetId}); - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleFan, data.indexed ? Utility::move(indexData) : nullptr, @@ -1205,7 +1205,7 @@ void TransformTest::meshData3DRvaluePassthroughIndexDataNotOwned() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, vertices} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, {}, indices, Trade::MeshIndexData{indices}, @@ -1249,7 +1249,7 @@ void TransformTest::meshData3DRvaluePassthroughVertexDataNotOwned() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::Position, Containers::arrayView(vertices)} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(indexData), Trade::MeshIndexData{indices}, @@ -1333,7 +1333,7 @@ void TransformTest::meshData3DRvaluePassthroughWrongFormat() { arrayAppend(attributes, Trade::MeshAttributeData{Trade::MeshAttribute::Bitangent, vertices.slice(&Vertex::bitangent)}); if(data.normalFormat != VertexFormat{}) arrayAppend(attributes, Trade::MeshAttributeData{Trade::MeshAttribute::Normal, VertexFormat::Vector3sNormalized, vertices.slice(&Vertex::normal)}); - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(vertexData), Utility::move(attributes)}; @@ -1596,7 +1596,7 @@ void TransformTest::meshDataTextureCoordinates2DRvaluePassthrough() { arrayAppend(attributes, { Trade::MeshAttributeData{Trade::MeshAttribute::TextureCoordinates, vertices.slice(&Vertex::textureCoordinates), data.morphTargetId} }); - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleFan, data.indexed ? Utility::move(indexData) : nullptr, @@ -1645,7 +1645,7 @@ void TransformTest::meshDataTextureCoordinates2DRvaluePassthroughIndexDataNotOwn Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::TextureCoordinates, vertices} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, {}, indices, Trade::MeshIndexData{indices}, @@ -1689,7 +1689,7 @@ void TransformTest::meshDataTextureCoordinates2DRvaluePassthroughVertexDataNotOw Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::TextureCoordinates, Containers::arrayView(vertices)} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(indexData), Trade::MeshIndexData{indices}, @@ -1749,7 +1749,7 @@ void TransformTest::meshDataTextureCoordinates2DRvaluePassthroughWrongFormat() { Containers::Array attributes{InPlaceInit, { Trade::MeshAttributeData{Trade::MeshAttribute::TextureCoordinates, vertices} }}; - const void* originalAttributeData = attributes; + const void* originalAttributeData = attributes.data(); Trade::MeshData mesh{MeshPrimitive::TriangleStrip, Utility::move(vertexData), Utility::move(attributes)}; diff --git a/src/Magnum/MeshTools/Tipsify.cpp b/src/Magnum/MeshTools/Tipsify.cpp index 58e222fcd..db5be7509 100644 --- a/src/Magnum/MeshTools/Tipsify.cpp +++ b/src/Magnum/MeshTools/Tipsify.cpp @@ -42,9 +42,9 @@ template void tipsifyInPlaceImplementation(const Containers::StridedArr /* Global time, per-vertex caching timestamps, per-triangle emitted flag */ UnsignedInt time = cacheSize+1; - Containers::Array timestamp{vertexCount}; + Containers::Array timestamp{ValueInit, vertexCount}; /** @todo Have some bitset/staticbitset class for this */ - Containers::Array emitted{indices.size()/3}; + Containers::Array emitted{ValueInit, indices.size()/3}; /* Dead-end vertex stack */ Containers::Array deadEndStack; diff --git a/src/Magnum/MeshTools/Transform.cpp b/src/Magnum/MeshTools/Transform.cpp index f12955ecf..6e11feab9 100644 --- a/src/Magnum/MeshTools/Transform.cpp +++ b/src/Magnum/MeshTools/Transform.cpp @@ -56,7 +56,7 @@ Trade::MeshData transform2D(const Trade::MeshData& mesh, const Matrix3& transfor position attribute format, if needed. Not using Utility::copy() here as the view returned by attributeData() might have offset-only attributes which interleave() doesn't want. */ - Containers::Array attributes{mesh.attributeCount()}; + Containers::Array attributes{ValueInit, mesh.attributeCount()}; for(UnsignedInt i = 0; i != mesh.attributeCount(); ++i) attributes[i] = mesh.attributeData(i); @@ -156,7 +156,7 @@ Trade::MeshData transform3D(const Trade::MeshData& mesh, const Matrix4& transfor position attribute format, if needed. Not using Utility::copy() here as the view returned by attributeData() might have offset-only attributes which interleave() doesn't want. */ - Containers::Array attributes{mesh.attributeCount()}; + Containers::Array attributes{ValueInit, mesh.attributeCount()}; for(UnsignedInt i = 0; i != mesh.attributeCount(); ++i) attributes[i] = mesh.attributeData(i); @@ -331,7 +331,7 @@ Trade::MeshData transformTextureCoordinates2D(const Trade::MeshData& mesh, const position attribute format, if needed. Not using Utility::copy() here as the view returned by attributeData() might have offset-only attributes which interleave() doesn't want. */ - Containers::Array attributes{mesh.attributeCount()}; + Containers::Array attributes{ValueInit, mesh.attributeCount()}; for(UnsignedInt i = 0; i != mesh.attributeCount(); ++i) attributes[i] = mesh.attributeData(i); diff --git a/src/Magnum/Platform/GlfwApplication.cpp b/src/Magnum/Platform/GlfwApplication.cpp index 4148afdd1..61bc56936 100644 --- a/src/Magnum/Platform/GlfwApplication.cpp +++ b/src/Magnum/Platform/GlfwApplication.cpp @@ -322,7 +322,7 @@ void GlfwApplication::setWindowIcon(const Containers::ArrayView data{size}; + Containers::Array data{NoInit, size}; /* Pack array of GLFWimages and pixel data together into the memory allocated above */ @@ -355,7 +355,7 @@ void GlfwApplication::setWindowIcon(const Containers::ArrayView images) { diff --git a/src/Magnum/Platform/WindowlessEglApplication.cpp b/src/Magnum/Platform/WindowlessEglApplication.cpp index 448e31b7e..087755c02 100644 --- a/src/Magnum/Platform/WindowlessEglApplication.cpp +++ b/src/Magnum/Platform/WindowlessEglApplication.cpp @@ -99,7 +99,7 @@ namespace { bool extensionSupported(const char* const extensions, Containers::ArrayView extension) { CORRADE_INTERNAL_ASSERT(extensions); - const char* pos = std::strstr(extensions, extension); + const char* pos = std::strstr(extensions, extension.data()); /* Extension is supported if its string is delimited by a space or end of the extension list. The extension.size() is the whole C array including a 0-terminator, so subtract 1 to look at one character after. */ @@ -196,10 +196,10 @@ WindowlessEglContext::WindowlessEglContext(const Configuration& configuration, G return; } - devices = Containers::Array{std::size_t(count)}; + devices = Containers::Array{NoInit, std::size_t(count)}; /* Assuming the same thing won't suddenly start failing when called the second time */ - CORRADE_INTERNAL_ASSERT_OUTPUT(eglQueryDevices(devices.size(), devices, &count)); + CORRADE_INTERNAL_ASSERT_OUTPUT(eglQueryDevices(devices.size(), devices.data(), &count)); auto eglQueryDeviceAttribEXT = reinterpret_cast(eglGetProcAddress("eglQueryDeviceAttribEXT")); auto eglQueryDeviceStringEXT = reinterpret_cast(eglGetProcAddress("eglQueryDeviceStringEXT")); @@ -247,10 +247,10 @@ WindowlessEglContext::WindowlessEglContext(const Configuration& configuration, G } selectedDevice = configuration.device(); - devices = Containers::Array{configuration.device() + 1}; + devices = Containers::Array{NoInit, configuration.device() + 1}; /* Assuming the same thing won't suddenly start failing when called the second time */ - CORRADE_INTERNAL_ASSERT_OUTPUT(eglQueryDevices(configuration.device() + 1, devices, &count)); + CORRADE_INTERNAL_ASSERT_OUTPUT(eglQueryDevices(configuration.device() + 1, devices.data(), &count)); } if(!(_display = reinterpret_cast(eglGetProcAddress("eglGetPlatformDisplayEXT"))(EGL_PLATFORM_DEVICE_EXT, devices[selectedDevice], nullptr))) { diff --git a/src/Magnum/Primitives/Circle.cpp b/src/Magnum/Primitives/Circle.cpp index c4711910e..18e519b0f 100644 --- a/src/Magnum/Primitives/Circle.cpp +++ b/src/Magnum/Primitives/Circle.cpp @@ -134,7 +134,7 @@ Trade::MeshData circle3DSolid(const UnsignedInt segments, const Circle3DFlags fl /* Set up the layout */ Containers::Array vertexData{NoInit, (segments + 2)*stride}; - Containers::Array attributeData{attributeCount}; + Containers::Array attributeData{ValueInit, attributeCount}; std::size_t attributeIndex = 0; std::size_t attributeOffset = 0; diff --git a/src/Magnum/Primitives/Cube.cpp b/src/Magnum/Primitives/Cube.cpp index d354adcda..be0e60cd2 100644 --- a/src/Magnum/Primitives/Cube.cpp +++ b/src/Magnum/Primitives/Cube.cpp @@ -522,7 +522,7 @@ Trade::MeshData cubeSolid(const CubeFlags flags) { /* Set up the layout */ Containers::Array vertexData{NoInit, 24*stride}; - Containers::Array attributeData{attributeCount}; + Containers::Array attributeData{ValueInit, attributeCount}; std::size_t attributeIndex = 0; std::size_t attributeOffset = 0; diff --git a/src/Magnum/Primitives/Grid.cpp b/src/Magnum/Primitives/Grid.cpp index b3720c070..dff0b0bb8 100644 --- a/src/Magnum/Primitives/Grid.cpp +++ b/src/Magnum/Primitives/Grid.cpp @@ -73,7 +73,7 @@ Trade::MeshData grid3DSolid(const Vector2i& subdivisions, const GridFlags flags) ++attributeCount; } Containers::Array vertexData{NoInit, stride*vertexCount.product()}; - Containers::Array attributes{attributeCount}; + Containers::Array attributes{ValueInit, attributeCount}; std::size_t attributeIndex = 0; std::size_t attributeOffset = 0; diff --git a/src/Magnum/Primitives/Implementation/Spheroid.cpp b/src/Magnum/Primitives/Implementation/Spheroid.cpp index ca1c97c7a..684e444d6 100644 --- a/src/Magnum/Primitives/Implementation/Spheroid.cpp +++ b/src/Magnum/Primitives/Implementation/Spheroid.cpp @@ -245,7 +245,7 @@ Trade::MeshData Spheroid::finalize() { Trade::MeshIndexData indices{_indexData}; std::size_t attributeOffset = 0; - Containers::Array attributes{_attributeCount}; + Containers::Array attributes{ValueInit, _attributeCount}; attributes[attributeOffset++] = Trade::MeshAttributeData{ Trade::MeshAttribute::Position, VertexFormat::Vector3, Containers::StridedArrayView1D{_vertexData, diff --git a/src/Magnum/Primitives/Plane.cpp b/src/Magnum/Primitives/Plane.cpp index 196a00b18..60584361c 100644 --- a/src/Magnum/Primitives/Plane.cpp +++ b/src/Magnum/Primitives/Plane.cpp @@ -83,7 +83,7 @@ Trade::MeshData planeSolid(const PlaneFlags flags) { /* Set up the layout */ Containers::Array vertexData{NoInit, 4*stride}; - Containers::Array attributeData{attributeCount}; + Containers::Array attributeData{ValueInit, attributeCount}; std::size_t attributeIndex = 0; std::size_t attributeOffset = 0; diff --git a/src/Magnum/SceneTools/Implementation/combine.h b/src/Magnum/SceneTools/Implementation/combine.h index a0fa2fba7..ca3df09dd 100644 --- a/src/Magnum/SceneTools/Implementation/combine.h +++ b/src/Magnum/SceneTools/Implementation/combine.h @@ -148,7 +148,7 @@ inline Trade::SceneData combineFields(const Trade::SceneMappingType mappingType, reallocation so the array is made with an upper bound on size. */ /** @todo once never-reallocating allocators are present, use them instead of the manual offset */ - Containers::Array itemViews{fields.size()*3}; + Containers::Array itemViews{ValueInit, fields.size()*3}; std::size_t itemViewOffset = 0; const std::size_t mappingTypeSize = sceneMappingTypeSize(mappingType); @@ -362,7 +362,7 @@ inline Trade::SceneData combineFields(const Trade::SceneMappingType mappingType, } /* Map the fields to the new data */ - Containers::Array outFields{fields.size()}; + Containers::Array outFields{ValueInit, fields.size()}; for(std::size_t i = 0; i != fields.size(); ++i) { const Trade::SceneFieldData& field = fields[i]; const Trade::SceneFieldType fieldType = field.fieldType(); diff --git a/src/Magnum/SceneTools/Implementation/convertToSingleFunctionObjects.h b/src/Magnum/SceneTools/Implementation/convertToSingleFunctionObjects.h index a006d4e22..f50f75960 100644 --- a/src/Magnum/SceneTools/Implementation/convertToSingleFunctionObjects.h +++ b/src/Magnum/SceneTools/Implementation/convertToSingleFunctionObjects.h @@ -118,7 +118,7 @@ inline Trade::SceneData convertToSingleFunctionObjects(const Trade::SceneData& s /* Copy the fields over, enlarging them as necessary */ const UnsignedInt parentFieldId = scene.fieldId(Trade::SceneField::Parent); - Containers::Array fields{scene.fieldCount()}; + Containers::Array fields{ValueInit, scene.fieldCount()}; for(std::size_t i = 0; i != scene.fieldCount(); ++i) { const Trade::SceneFieldData& field = scene.fieldData(i); diff --git a/src/Magnum/SceneTools/Implementation/sceneConverterUtilities.h b/src/Magnum/SceneTools/Implementation/sceneConverterUtilities.h index e3097ece1..604060053 100644 --- a/src/Magnum/SceneTools/Implementation/sceneConverterUtilities.h +++ b/src/Magnum/SceneTools/Implementation/sceneConverterUtilities.h @@ -179,7 +179,7 @@ bool printInfo(const Debug::Flags useColor, const bool useColor24, const Utility /* Object properties */ Containers::Array objectInfos; if(args.isSet("info") || args.isSet("info-objects")) { - objectInfos = Containers::Array{std::size_t(importer.objectCount())}; + objectInfos = Containers::Array{ValueInit, std::size_t(importer.objectCount())}; for(UnsignedLong i = 0; i != importer.objectCount(); ++i) { objectInfos[i].object = i; @@ -205,12 +205,12 @@ bool printInfo(const Debug::Flags useColor, const bool useColor24, const Utility Containers::Array skin3DReferenceCount; if((args.isSet("info") || args.isSet("info-scenes") || args.isSet("object-hierarchy")) && importer.sceneCount()) { if(args.isSet("info") || args.isSet("info-scenes")) { - materialReferenceCount = Containers::Array{importer.materialCount()}; - lightReferenceCount = Containers::Array{importer.lightCount()}; - cameraReferenceCount = Containers::Array{importer.cameraCount()}; - meshReferenceCount = Containers::Array{importer.meshCount()}; - skin2DReferenceCount = Containers::Array{importer.skin2DCount()}; - skin3DReferenceCount = Containers::Array{importer.skin3DCount()}; + materialReferenceCount = Containers::Array{ValueInit, importer.materialCount()}; + lightReferenceCount = Containers::Array{ValueInit, importer.lightCount()}; + cameraReferenceCount = Containers::Array{ValueInit, importer.cameraCount()}; + meshReferenceCount = Containers::Array{ValueInit, importer.meshCount()}; + skin2DReferenceCount = Containers::Array{ValueInit, importer.skin2DCount()}; + skin3DReferenceCount = Containers::Array{ValueInit, importer.skin3DCount()}; } for(UnsignedInt i = 0; i != importer.sceneCount(); ++i) { @@ -424,7 +424,7 @@ bool printInfo(const Debug::Flags useColor, const bool useColor24, const Utility Containers::Array materialInfos; Containers::Array textureReferenceCount; if((args.isSet("info") || args.isSet("info-materials")) && importer.materialCount()) { - textureReferenceCount = Containers::Array{importer.textureCount()}; + textureReferenceCount = Containers::Array{ValueInit, importer.textureCount()}; for(UnsignedInt i = 0; i != importer.materialCount(); ++i) { Containers::Optional material; @@ -563,9 +563,9 @@ bool printInfo(const Debug::Flags useColor, const bool useColor24, const Utility Containers::Array image2DReferenceCount; Containers::Array image3DReferenceCount; if((args.isSet("info") || args.isSet("info-textures")) && importer.textureCount()) { - image1DReferenceCount = Containers::Array{importer.image1DCount()}; - image2DReferenceCount = Containers::Array{importer.image2DCount()}; - image3DReferenceCount = Containers::Array{importer.image3DCount()}; + image1DReferenceCount = Containers::Array{ValueInit, importer.image1DCount()}; + image2DReferenceCount = Containers::Array{ValueInit, importer.image2DCount()}; + image3DReferenceCount = Containers::Array{ValueInit, importer.image3DCount()}; for(UnsignedInt i = 0; i != importer.textureCount(); ++i) { Containers::Optional texture; { diff --git a/src/Magnum/SceneTools/Test/CombineTest.cpp b/src/Magnum/SceneTools/Test/CombineTest.cpp index 9de6a4313..ef6d076c4 100644 --- a/src/Magnum/SceneTools/Test/CombineTest.cpp +++ b/src/Magnum/SceneTools/Test/CombineTest.cpp @@ -607,10 +607,10 @@ void CombineTest::fieldsAlignment() { Containers::arrayView(meshFieldData), TestSuite::Compare::Container); CORRADE_COMPARE_AS(reinterpret_cast(scene.mapping(0).data()), 2, TestSuite::Compare::Divisible); - CORRADE_COMPARE(scene.mapping(0).data(), scene.data()); + CORRADE_COMPARE(scene.mapping(0).data(), scene.data().data()); CORRADE_COMPARE(scene.mapping(0).stride()[0], 2); CORRADE_COMPARE_AS(reinterpret_cast(scene.field(0).data()), 1, TestSuite::Compare::Divisible); - CORRADE_COMPARE(scene.field(0).data(), scene.data() + 3*2); + CORRADE_COMPARE(scene.field(0).data(), scene.data().data() + 3*2); CORRADE_COMPARE(scene.field(0).stride()[0], 1); CORRADE_COMPARE(scene.fieldName(1), Trade::SceneField::Translation); @@ -623,10 +623,10 @@ void CombineTest::fieldsAlignment() { Containers::arrayView(translationFieldData), TestSuite::Compare::Container); CORRADE_COMPARE_AS(reinterpret_cast(scene.mapping(1).data()), 2, TestSuite::Compare::Divisible); - CORRADE_COMPARE(scene.mapping(1).data(), scene.data() + 3*2 + 3 + 1); + CORRADE_COMPARE(scene.mapping(1).data(), scene.data().data() + 3*2 + 3 + 1); CORRADE_COMPARE(scene.mapping(1).stride()[0], 2); CORRADE_COMPARE_AS(reinterpret_cast(scene.field(1).data()), 8, TestSuite::Compare::Divisible); - CORRADE_COMPARE(scene.field(1).data(), scene.data() + 3*2 + 3 + 1 + 2 + 4); + CORRADE_COMPARE(scene.field(1).data(), scene.data().data() + 3*2 + 3 + 1 + 2 + 4); CORRADE_COMPARE(scene.field(1).stride()[0], 16); } @@ -750,9 +750,9 @@ void CombineTest::fieldsMappingPlaceholderFieldPlaceholder() { CORRADE_COMPARE(scene.fieldType(Trade::SceneField::Camera), Trade::SceneFieldType::UnsignedShort); CORRADE_COMPARE(scene.fieldSize(Trade::SceneField::Camera), 1); CORRADE_COMPARE(scene.fieldArraySize(Trade::SceneField::Camera), 0); - CORRADE_COMPARE(scene.mapping(Trade::SceneField::Camera).data(), scene.data()); + CORRADE_COMPARE(scene.mapping(Trade::SceneField::Camera).data(), scene.data().data()); CORRADE_COMPARE(scene.mapping(Trade::SceneField::Camera).stride()[0], 2); - CORRADE_COMPARE(scene.field(Trade::SceneField::Camera).data(), scene.data() + 2); + CORRADE_COMPARE(scene.field(Trade::SceneField::Camera).data(), scene.data().data() + 2); CORRADE_COMPARE(scene.field(Trade::SceneField::Camera).stride()[0], 2); CORRADE_COMPARE(scene.fieldType(Trade::SceneField::Mesh), Trade::SceneFieldType::UnsignedByte); @@ -768,30 +768,30 @@ void CombineTest::fieldsMappingPlaceholderFieldPlaceholder() { CORRADE_COMPARE(scene.fieldSize(Trade::SceneField::Light), 2); CORRADE_COMPARE(scene.fieldArraySize(Trade::SceneField::Light), 0); CORRADE_COMPARE(scene.mapping(Trade::SceneField::Light).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1); CORRADE_COMPARE(scene.mapping(Trade::SceneField::Light).stride()[0], 2); CORRADE_COMPARE(scene.field(Trade::SceneField::Light).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2); CORRADE_COMPARE(scene.field(Trade::SceneField::Light).stride()[0], 4); CORRADE_COMPARE(scene.fieldType(Trade::sceneFieldCustom(15)), Trade::SceneFieldType::Short); CORRADE_COMPARE(scene.fieldSize(Trade::sceneFieldCustom(15)), 2); CORRADE_COMPARE(scene.fieldArraySize(Trade::sceneFieldCustom(15)), 4); CORRADE_COMPARE(scene.mapping(Trade::sceneFieldCustom(15)).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4); CORRADE_COMPARE(scene.mapping(Trade::sceneFieldCustom(15)).stride()[0], 2); CORRADE_COMPARE(scene.field(Trade::sceneFieldCustom(15)).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2); CORRADE_COMPARE(scene.field(Trade::sceneFieldCustom(15)).stride()[0], 4*2); CORRADE_COMPARE(scene.fieldType(Trade::sceneFieldCustom(16)), Trade::SceneFieldType::Bit); CORRADE_COMPARE(scene.fieldSize(Trade::sceneFieldCustom(16)), 3); CORRADE_COMPARE(scene.fieldArraySize(Trade::sceneFieldCustom(16)), 2); CORRADE_COMPARE(scene.mapping(Trade::sceneFieldCustom(16)).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2 + 2*8); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2 + 2*8); CORRADE_COMPARE(scene.mapping(Trade::sceneFieldCustom(16)).stride()[0], 2); CORRADE_COMPARE(scene.fieldBitArrays(Trade::sceneFieldCustom(16)).data(), - scene.data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2 + 2*8 + 3*2); + scene.data().data() + 2 + 2 + 3*2 + 3 + 1 + 2*2 + 2 + 2*4 + 2*2 + 2*8 + 3*2); CORRADE_COMPARE(scene.fieldBitArrays(Trade::sceneFieldCustom(16)).offset(), 0); CORRADE_COMPARE(scene.fieldBitArrays(Trade::sceneFieldCustom(16)).stride()[0], 2); } @@ -830,7 +830,7 @@ void CombineTest::fieldsMappingSharedFieldPlaceholder() { CORRADE_COMPARE_AS(scene.mapping(Trade::SceneField::MeshMaterial), Containers::arrayView(meshMappingData), TestSuite::Compare::Container); - CORRADE_COMPARE(scene.field(Trade::SceneField::MeshMaterial).data(), scene.data() + 3*4 + 3 + 1); + CORRADE_COMPARE(scene.field(Trade::SceneField::MeshMaterial).data(), scene.data().data() + 3*4 + 3 + 1); CORRADE_COMPARE(scene.field(Trade::SceneField::MeshMaterial).stride()[0], 4); } diff --git a/src/Magnum/SceneTools/Test/CopyTest.cpp b/src/Magnum/SceneTools/Test/CopyTest.cpp index 1012642b9..6134870fe 100644 --- a/src/Magnum/SceneTools/Test/CopyTest.cpp +++ b/src/Magnum/SceneTools/Test/CopyTest.cpp @@ -241,7 +241,7 @@ void CopyTest::copyRvalueDataFieldsOwned() { fields[0] = Trade::SceneFieldData{Trade::SceneField::Parent, Containers::arrayView(view[0].parentMapping), Containers::arrayView(view[0].parent)}; - const Trade::SceneFieldData* originalFields = fields; + const Trade::SceneFieldData* originalFields = fields.data(); Trade::SceneData copy = SceneTools::copy(Trade::SceneData{Trade::SceneMappingType::UnsignedShort, 12, Utility::move(data), Utility::move(fields)}); @@ -316,7 +316,7 @@ void CopyTest::copyRvalueFieldsOwned() { fields[0] = Trade::SceneFieldData{Trade::SceneField::Parent, Containers::arrayView(data->parentMapping), Containers::arrayView(data->parent)}; - const Trade::SceneFieldData* originalFields = fields; + const Trade::SceneFieldData* originalFields = fields.data(); Trade::SceneData copy = SceneTools::copy(Trade::SceneData{Trade::SceneMappingType::UnsignedShort, 12, Trade::DataFlag::ExternallyOwned, data, Utility::move(fields)}); diff --git a/src/Magnum/SceneTools/Test/FilterTest.cpp b/src/Magnum/SceneTools/Test/FilterTest.cpp index 7681fa3a9..6da381d4f 100644 --- a/src/Magnum/SceneTools/Test/FilterTest.cpp +++ b/src/Magnum/SceneTools/Test/FilterTest.cpp @@ -202,7 +202,7 @@ void FilterTest::fieldsRvalue() { UnsignedInt light[3]; bool visible[3]; }; - Containers::Array sceneData{sizeof(Data)}; + Containers::Array sceneData{ValueInit, sizeof(Data)}; Data& d = *reinterpret_cast(sceneData.data()); Containers::Array fields{InPlaceInit, { Trade::SceneFieldData{Trade::SceneField::Mesh, @@ -338,7 +338,7 @@ void FilterTest::onlyFieldsRvalue() { UnsignedByte lightMapping[3]; UnsignedInt light[3]; }; - Containers::Array data{sizeof(Data)}; + Containers::Array data{ValueInit, sizeof(Data)}; Data& d = *reinterpret_cast(data.data()); Trade::SceneData scene{Trade::SceneMappingType::UnsignedByte, 133, Utility::move(data), { @@ -447,7 +447,7 @@ void FilterTest::exceptFieldsRvalue() { UnsignedInt light[3]; bool visible[3]; }; - Containers::Array data{sizeof(Data)}; + Containers::Array data{ValueInit, sizeof(Data)}; Data& d = *reinterpret_cast(data.data()); Trade::SceneData scene{Trade::SceneMappingType::UnsignedLong, 12, Utility::move(data), { diff --git a/src/Magnum/SceneTools/Test/MapTest.cpp b/src/Magnum/SceneTools/Test/MapTest.cpp index f5c7a2cea..9af19ecf2 100644 --- a/src/Magnum/SceneTools/Test/MapTest.cpp +++ b/src/Magnum/SceneTools/Test/MapTest.cpp @@ -554,7 +554,7 @@ void MapTest::indexFieldRvalue() { Containers::arrayView(view[0].mapping), Containers::arrayView(view[0].mesh)}, }}; - const Trade::SceneFieldData* originalFields = scene.fieldData(); + const Trade::SceneFieldData* originalFields = scene.fieldData().data(); const UnsignedInt mapping[]{ 15, 16, 0xffffffffu, 7, 9 @@ -611,7 +611,7 @@ void MapTest::indexFieldRvalueSigned() { Containers::arrayView(view[0].mapping), Containers::arrayView(view[0].meshMaterial)}, }}; - const Trade::SceneFieldData* originalFields = scene.fieldData(); + const Trade::SceneFieldData* originalFields = scene.fieldData().data(); const UnsignedInt mapping[]{ 15, 0xffffffffu, 16, 7 @@ -667,7 +667,7 @@ void MapTest::indexFieldRvalueNotOwned() { Containers::arrayView(sceneData->mapping), Containers::arrayView(sceneData->mesh)}, }}; - const Trade::SceneFieldData* originalFields = scene.fieldData(); + const Trade::SceneFieldData* originalFields = scene.fieldData().data(); const UnsignedInt mapping[]{ 15, 16, 0xffffffffu, 7, 9 @@ -721,7 +721,7 @@ void MapTest::indexFieldRvalueNotFullType() { Containers::arrayView(view[0].mapping), Containers::arrayView(view[0].mesh)}, }}; - const Trade::SceneFieldData* originalFields = scene.fieldData(); + const Trade::SceneFieldData* originalFields = scene.fieldData().data(); const UnsignedInt mapping[]{ 15, 16, 0xffffffffu, 7, 9 @@ -749,7 +749,7 @@ void MapTest::indexFieldRvalueNotFullType() { }), TestSuite::Compare::Container); /* Data should be copied */ - CORRADE_VERIFY(mapped.data().data() != static_cast(sceneData)); + CORRADE_VERIFY(mapped.data().data() != static_cast(sceneData.data())); CORRADE_VERIFY(mapped.fieldData().data() != originalFields); } diff --git a/src/Magnum/SceneTools/Test/SceneConverterImplementationTest.cpp b/src/Magnum/SceneTools/Test/SceneConverterImplementationTest.cpp index ddea96279..d416188b2 100644 --- a/src/Magnum/SceneTools/Test/SceneConverterImplementationTest.cpp +++ b/src/Magnum/SceneTools/Test/SceneConverterImplementationTest.cpp @@ -325,7 +325,7 @@ void SceneConverterImplementationTest::infoScenesObjects() { bool _omitParent; } importer{data.defaultScene, data.omitParent}; - CORRADE_VERIFY(_infoArgs.tryParse(data.args.size(), data.args)); + CORRADE_VERIFY(_infoArgs.tryParse(data.args.size(), data.args.data())); std::chrono::high_resolution_clock::duration time; diff --git a/src/Magnum/ShaderTools/AbstractConverter.cpp b/src/Magnum/ShaderTools/AbstractConverter.cpp index 1057c1d50..ba0c12555 100644 --- a/src/Magnum/ShaderTools/AbstractConverter.cpp +++ b/src/Magnum/ShaderTools/AbstractConverter.cpp @@ -708,7 +708,7 @@ bool AbstractConverter::doLinkFilesToFile(const Containers::ArrayView> fileData{from.size()}; + Containers::Array> fileData{ValueInit, from.size()}; for(std::size_t i = 0; i != from.size(); ++i) { Containers::Optional> data = Utility::Path::read(from[i].second()); if(!data) { @@ -806,7 +806,7 @@ Containers::Optional> AbstractConverter::doLinkFilesToDa /* Otherwise open the files directly */ } else { - Containers::Array> fileData{filenames.size()}; + Containers::Array> fileData{ValueInit, filenames.size()}; for(std::size_t i = 0; i != filenames.size(); ++i) { Containers::Optional> data = Utility::Path::read(filenames[i].second()); if(!data) { diff --git a/src/Magnum/ShaderTools/Implementation/spirv.h b/src/Magnum/ShaderTools/Implementation/spirv.h index 2fd77f5f0..684e30d87 100644 --- a/src/Magnum/ShaderTools/Implementation/spirv.h +++ b/src/Magnum/ShaderTools/Implementation/spirv.h @@ -121,8 +121,8 @@ Containers::Optional spirvNextEntrypoint(Containers::ArrayView< } return SpirvEntrypoint{ - *reinterpret_cast(entryPoint + 1), - reinterpret_cast(entryPoint + 3), + *reinterpret_cast(entryPoint.data() + 1), + reinterpret_cast(entryPoint.data() + 3), interfaces }; } @@ -157,7 +157,7 @@ void spirvEntrypointInterface(Containers::ArrayView data, con for(std::size_t i = 0; i != entrypoint.interfaces.size(); ++i) { if(decoration[1] == entrypoint.interfaces[i]) { - out[i].location = decoration + 3; + out[i].location = decoration.data() + 3; break; } } @@ -175,7 +175,7 @@ void spirvEntrypointInterface(Containers::ArrayView data, con for(std::size_t i = 0; i != entrypoint.interfaces.size(); ++i) { if(variable[2] == entrypoint.interfaces[i]) { - out[i].storageClass = reinterpret_cast(variable + 3); + out[i].storageClass = reinterpret_cast(variable.data() + 3); break; } } diff --git a/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp b/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp index 1555db17c..d2571ad50 100644 --- a/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp +++ b/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp @@ -1255,7 +1255,7 @@ void AbstractConverterTest::convertDataToFileThroughDataNotWritable() { void doSetOutputFormat(Format, Containers::StringView) override {} Containers::Optional> doConvertDataToData(Stage, Containers::ArrayView) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; @@ -1438,7 +1438,7 @@ void AbstractConverterTest::convertFileToFileThroughDataNotWritable() { void doSetOutputFormat(Format, Containers::StringView) override {} Containers::Optional> doConvertDataToData(Stage, Containers::ArrayView) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; @@ -1869,7 +1869,7 @@ void AbstractConverterTest::linkDataToFileThroughDataNotWritable() { void doSetOutputFormat(Format, Containers::StringView) override {} Containers::Optional> doLinkDataToData(Containers::ArrayView>>) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; @@ -2108,7 +2108,7 @@ void AbstractConverterTest::linkFilesToFileThroughDataNotWritable() { void doSetOutputFormat(Format, Containers::StringView) override {} Containers::Optional> doLinkDataToData(Containers::ArrayView>>) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; @@ -2946,7 +2946,7 @@ void AbstractConverterTest::setInputFileCallbackConvertFileToFileAsDataNotWritab } Containers::Optional> doConvertDataToData(Stage, Containers::ArrayView) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; @@ -3459,7 +3459,7 @@ void AbstractConverterTest::setInputFileCallbackLinkFilesToFileAsDataNotWritable } Containers::Optional> doLinkDataToData(Containers::ArrayView>>) override { - return Containers::Array{1}; + return Containers::Array{NoInit, 1}; } } converter; diff --git a/src/Magnum/ShaderTools/Test/SpirvTest.cpp b/src/Magnum/ShaderTools/Test/SpirvTest.cpp index 9537c20c2..8a7e0b665 100644 --- a/src/Magnum/ShaderTools/Test/SpirvTest.cpp +++ b/src/Magnum/ShaderTools/Test/SpirvTest.cpp @@ -94,13 +94,14 @@ SpirvTest::SpirvTest() { } void SpirvTest::data() { - CORRADE_COMPARE(Implementation::spirvData(Data, sizeof(Data)), Containers::arrayView(Data + 5, 1)); + CORRADE_COMPARE(Implementation::spirvData(Data, sizeof(Data)).data(), Data + 5); + CORRADE_COMPARE(Implementation::spirvData(Data, sizeof(Data)).size(), 1); } void SpirvTest::dataInvalid() { auto&& data = InvalidData[testCaseInstanceId()]; setTestCaseDescription(data.name); - CORRADE_VERIFY(!Implementation::spirvData(data.data, data.data.size())); + CORRADE_VERIFY(!Implementation::spirvData(data.data.data(), data.data.size())); } UnsignedInt op(UnsignedInt length, SpvOp op) { @@ -155,7 +156,7 @@ void SpirvTest::nextEntrypoint() { CORRADE_VERIFY(data); /* The file is a full SPIR-V, strip the header first */ - Containers::ArrayView view = Implementation::spirvData(*data, data->size()); + Containers::ArrayView view = Implementation::spirvData(data->data(), data->size()); CORRADE_VERIFY(view); Containers::Optional vert = Implementation::spirvNextEntrypoint(view); @@ -194,7 +195,7 @@ void SpirvTest::entrypointInterface() { CORRADE_VERIFY(data); /* The file is a full SPIR-V, strip the header first */ - Containers::ArrayView view = Implementation::spirvData(*data, data->size()); + Containers::ArrayView view = Implementation::spirvData(data->data(), data->size()); CORRADE_VERIFY(view); Containers::Optional vert = Implementation::spirvNextEntrypoint(view); diff --git a/src/Magnum/ShaderTools/shaderconverter.cpp b/src/Magnum/ShaderTools/shaderconverter.cpp index 23e30ba17..19db5f999 100644 --- a/src/Magnum/ShaderTools/shaderconverter.cpp +++ b/src/Magnum/ShaderTools/shaderconverter.cpp @@ -361,7 +361,7 @@ see documentation of a particular converter for more information.)") return 24; } - if(Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(*data, data->size())) { + if(Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(data->data(), data->size())) { printSpirvInfo(spirv); return 0; } @@ -523,7 +523,7 @@ see documentation of a particular converter for more information.)") return 20; /* same code as the same message below */ } - Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(data, data.size()); + Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(data.data(), data.size()); if(!spirv) { Error{} << "The output is not a SPIR-V binary, can't print info"; return 23; diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index cda2f3d03..a512ffa13 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -1683,7 +1683,7 @@ void DistanceFieldVectorGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = DistanceFieldVectorMaterialUniform{} .setColor(0x00ff00_rgbf); materialData[1*data.uniformIncrement] = DistanceFieldVectorMaterialUniform{} @@ -1692,7 +1692,7 @@ void DistanceFieldVectorGLTest::renderMulti2D() { .setOutlineRange(0.6f, 0.4f); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -1713,7 +1713,7 @@ void DistanceFieldVectorGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( /* Additional Y shift + scale in the array slice */ @@ -1742,7 +1742,7 @@ void DistanceFieldVectorGLTest::renderMulti2D() { .setLayer(1); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = DistanceFieldVectorDrawUniform{} @@ -1983,7 +1983,7 @@ void DistanceFieldVectorGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = DistanceFieldVectorMaterialUniform{} .setColor(0x00ff00_rgbf); materialData[1*data.uniformIncrement] = DistanceFieldVectorMaterialUniform{} @@ -1992,7 +1992,7 @@ void DistanceFieldVectorGLTest::renderMulti3D() { .setOutlineRange(0.6f, 0.4f); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::perspectiveProjection(60.0_degf, 1.0f, 0.1f, 10.0f)* @@ -2018,7 +2018,7 @@ void DistanceFieldVectorGLTest::renderMulti3D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( /* Additional Y shift + scale in the array slice */ @@ -2047,7 +2047,7 @@ void DistanceFieldVectorGLTest::renderMulti3D() { .setLayer(1); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = DistanceFieldVectorDrawUniform{} diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 7cead7544..73f8362d9 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -5076,7 +5076,7 @@ void FlatGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = FlatMaterialUniform{} .setColor(data.flags & FlatGL2D::Flag::Textured ? 0xffffff_rgbf : 0x0000ff_rgbf); @@ -5085,7 +5085,7 @@ void FlatGLTest::renderMulti2D() { 0xffffff_rgbf : 0xff0000_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -5106,7 +5106,7 @@ void FlatGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( data.flags & FlatGL2D::Flag::TextureArrays ? @@ -5133,7 +5133,7 @@ void FlatGLTest::renderMulti2D() { .setLayer(2); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = FlatDrawUniform{} @@ -5441,7 +5441,7 @@ void FlatGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = FlatMaterialUniform{} .setColor(data.flags & FlatGL2D::Flag::Textured ? 0xffffff_rgbf : 0x0000ff_rgbf); @@ -5450,7 +5450,7 @@ void FlatGLTest::renderMulti3D() { 0xffffff_rgbf : 0xff0000_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::perspectiveProjection(60.0_degf, 1.0f, 0.1f, 10.0f)* @@ -5477,7 +5477,7 @@ void FlatGLTest::renderMulti3D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( data.flags & FlatGL2D::Flag::TextureArrays ? @@ -5504,7 +5504,7 @@ void FlatGLTest::renderMulti3D() { .setLayer(2); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = FlatDrawUniform{} @@ -5749,14 +5749,14 @@ void FlatGLTest::renderMultiSkinning2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = FlatMaterialUniform{} .setColor(0x33ffff_rgbf); materialData[1*data.uniformIncrement] = FlatMaterialUniform{} .setColor(0xffff33_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::scaling(Vector2{0.3f})* @@ -5771,7 +5771,7 @@ void FlatGLTest::renderMultiSkinning2D() { Matrix3::translation({-1.5f, 1.5f})); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array jointData{Math::max(2*data.uniformIncrement + 4, 10u)}; + Containers::Array jointData{ValueInit, Math::max(2*data.uniformIncrement + 4, 10u)}; /* First draw moves both bottom corners */ jointData[Math::max(0*data.uniformIncrement, 0u) + 0] = TransformationUniform2D{} .setTransformationMatrix(Matrix3::translation({ 0.5f, -0.5f})); @@ -5797,7 +5797,7 @@ void FlatGLTest::renderMultiSkinning2D() { GL::Buffer jointUniform{GL::Buffer::TargetHint::Uniform, jointData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / joint offsets are zero if we have single draw, as those are done with UBO offset bindings instead */ drawData[0*data.uniformIncrement] = FlatDrawUniform{} @@ -6001,14 +6001,14 @@ void FlatGLTest::renderMultiSkinning3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = FlatMaterialUniform{} .setColor(0x33ffff_rgbf); materialData[1*data.uniformIncrement] = FlatMaterialUniform{} .setColor(0xffff33_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::scaling(Vector3{0.3f})* @@ -6023,7 +6023,7 @@ void FlatGLTest::renderMultiSkinning3D() { Matrix4::translation({-1.5f, 1.5f, 0.0f})); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array jointData{Math::max(2*data.uniformIncrement + 4, 10u)}; + Containers::Array jointData{ValueInit, Math::max(2*data.uniformIncrement + 4, 10u)}; /* First draw moves both bottom corners */ jointData[Math::max(0*data.uniformIncrement, 0u) + 0] = TransformationUniform3D{} .setTransformationMatrix(Matrix4::translation({ 0.5f, -0.5f, 0.0f})); @@ -6049,7 +6049,7 @@ void FlatGLTest::renderMultiSkinning3D() { GL::Buffer jointUniform{GL::Buffer::TargetHint::Uniform, jointData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / joint offsets are zero if we have single draw, as those are done with UBO offset bindings instead */ drawData[0*data.uniformIncrement] = FlatDrawUniform{} diff --git a/src/Magnum/Shaders/Test/LineGLTest.cpp b/src/Magnum/Shaders/Test/LineGLTest.cpp index 2cae1670d..e30295bd4 100644 --- a/src/Magnum/Shaders/Test/LineGLTest.cpp +++ b/src/Magnum/Shaders/Test/LineGLTest.cpp @@ -2751,7 +2751,7 @@ void LineGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = LineMaterialUniform{} .setColor(0x0000ff_rgbf) .setWidth(3.0f) @@ -2762,7 +2762,7 @@ void LineGLTest::renderMulti2D() { .setSmoothness(1.0f); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -2783,7 +2783,7 @@ void LineGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = LineDrawUniform{} @@ -2982,7 +2982,7 @@ void LineGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = LineMaterialUniform{} .setColor(0x0000ff_rgbf) .setWidth(3.0f) @@ -2993,7 +2993,7 @@ void LineGLTest::renderMulti3D() { .setSmoothness(1.0f); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::orthographicProjection({2.1f, 2.1f}, -1.0f, 1.0f)* @@ -3014,7 +3014,7 @@ void LineGLTest::renderMulti3D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = LineDrawUniform{} diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 4075284f6..0c82613d1 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -3657,7 +3657,7 @@ template void MeshVisualizerGLTest::renderDefault .setSubImage(0, {}, ImageView2D{PixelFormat::RGB8Srgb, size, map}); /* Generate per-face IDs going from 0 to 240 to cover the whole range */ - Containers::Array ids{16}; + Containers::Array ids{NoInit, 16}; for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i*16; GL::Mesh circle = MeshTools::compile(MeshTools::combineFaceAttributes( MeshTools::generateIndices(Primitives::circle2DSolid(16)), { @@ -3756,7 +3756,7 @@ template void MeshVisualizerGLTest::renderDefault .setSubImage(0, {}, ImageView2D{PixelFormat::RGB8Srgb, size, map}); /* Generate per-face IDs going from 0 to 228 to cover the whole range */ - Containers::Array ids{20}; + Containers::Array ids{NoInit, 20}; for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i*12; GL::Mesh icosphere = MeshTools::compile(MeshTools::combineFaceAttributes( Primitives::icosphereSolid(0), { @@ -4321,7 +4321,7 @@ template void MeshVisualizerGLTest::renderWirefra if(!GL::Context::current().isExtensionSupported()) #endif { - Containers::Array vertexIndex{circleDataIndexed.indexCount()}; + Containers::Array vertexIndex{NoInit, circleDataIndexed.indexCount()}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexId; @@ -4473,7 +4473,7 @@ template void MeshVisualizerGLTest::renderWirefra if(!GL::Context::current().isExtensionSupported()) #endif { - Containers::Array vertexIndex{sphereData.indexCount()}; + Containers::Array vertexIndex{NoInit, sphereData.indexCount()}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexId; @@ -4658,7 +4658,7 @@ template void MeshVisualizerGLTest::renderObjectV /* Add the instanced Object ID data even if visualizing just uniform object ID, to test the attribute isn't accidentally accessed always */ if(data.flags2D & MeshVisualizerGL2D::Flag::ObjectId) { - Containers::Array ids{16}; + Containers::Array ids{NoInit, 16}; /* Each two faces share the same ID */ for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i/2; circleData = MeshTools::combineFaceAttributes( @@ -4874,7 +4874,7 @@ template void MeshVisualizerGLTest::renderObjectV /* Add the instanced Object ID data even if visualizing just uniform object ID, to test the attribute isn't accidentally accessed always */ if(data.flags3D & MeshVisualizerGL3D::Flag::ObjectId) { - Containers::Array ids{sphereData.indexCount()/3}; + Containers::Array ids{NoInit, sphereData.indexCount()/3}; /* Each two faces share the same ID */ for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i/2; sphereData = MeshTools::combineFaceAttributes( @@ -5713,7 +5713,7 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isExtensionSupported()) #endif { - Containers::Array vertexIndex{circleDataIndexed.indexCount()}; + Containers::Array vertexIndex{NoInit, circleDataIndexed.indexCount()}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexId; @@ -6007,7 +6007,7 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isExtensionSupported()) #endif { - Containers::Array vertexIndex{sphereData.indexCount()}; + Containers::Array vertexIndex{NoInit, sphereData.indexCount()}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexId; @@ -6691,7 +6691,7 @@ void MeshVisualizerGLTest::renderMulti2D() { attribute. Use the same numbers for all meshes, it'll get differentiated by the per-draw object ID. */ if(data.flags & MeshVisualizerGL2D::Flag::ObjectId) { - Containers::Array ids{8}; + Containers::Array ids{NoInit, 8}; /* Each two faces share the same ID */ for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i/2; for(Trade::MeshData* i: {&circleData, &squareData, &triangleData}) { @@ -6729,7 +6729,7 @@ void MeshVisualizerGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = MeshVisualizerMaterialUniform{} .setColor(0xffffcc_rgbf) .setWireframeColor(0xcc0000_rgbf); @@ -6755,7 +6755,7 @@ void MeshVisualizerGLTest::renderMulti2D() { materialData[1*data.uniformIncrement].setColorMapTransformation(0.5f/12, 1.0f/12); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -6776,7 +6776,7 @@ void MeshVisualizerGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( data.flags & MeshVisualizerGL2D::Flag::TextureArrays ? @@ -6803,7 +6803,7 @@ void MeshVisualizerGLTest::renderMulti2D() { .setLayer(2); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = MeshVisualizerDrawUniform2D{} @@ -7033,7 +7033,7 @@ void MeshVisualizerGLTest::renderMulti3D() { attribute. Use the same numbers for all meshes, it'll get differentiated by the per-draw object ID. */ if(data.flags & MeshVisualizerGL3D::Flag::ObjectId) { - Containers::Array ids{20}; + Containers::Array ids{NoInit, 20}; /* Each two faces share the same ID */ for(std::size_t i = 0; i != ids.size(); ++i) ids[i] = i/2; for(Trade::MeshData* i: {&sphereData, &planeData, &coneData}) { @@ -7078,7 +7078,7 @@ void MeshVisualizerGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = MeshVisualizerMaterialUniform{} .setColor(0xffffcc_rgbf) .setWireframeColor(0xcc0000_rgbf) @@ -7106,7 +7106,7 @@ void MeshVisualizerGLTest::renderMulti3D() { materialData[1*data.uniformIncrement].setColorMapTransformation(0.5f/30, 1.0f/30); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationData{2*data.uniformIncrement + 1}; + Containers::Array transformationData{ValueInit, 2*data.uniformIncrement + 1}; transformationData[0*data.uniformIncrement] = TransformationUniform3D{} .setTransformationMatrix( Matrix4::translation(Vector3::zAxis(-2.15f))* @@ -7127,7 +7127,7 @@ void MeshVisualizerGLTest::renderMulti3D() { ); GL::Buffer transformationUniform{GL::Buffer::TargetHint::Uniform, transformationData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( data.flags & MeshVisualizerGL3D::Flag::TextureArrays ? @@ -7154,7 +7154,7 @@ void MeshVisualizerGLTest::renderMulti3D() { .setLayer(2); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. Also no need to supply a normal matrix. */ drawData[0*data.uniformIncrement] = MeshVisualizerDrawUniform3D{} @@ -7370,7 +7370,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = MeshVisualizerMaterialUniform{} .setColor(0xffffcc_rgbf) .setWireframeColor(0xcc0000_rgbf); @@ -7379,7 +7379,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe2D() { .setWireframeColor(0x0000cc_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::scaling(Vector2{0.3f})* @@ -7394,7 +7394,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe2D() { Matrix3::translation({-1.5f, 1.5f})); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array jointData{Math::max(2*data.uniformIncrement + 4, 10u)}; + Containers::Array jointData{ValueInit, Math::max(2*data.uniformIncrement + 4, 10u)}; /* First draw moves both bottom corners */ jointData[Math::max(0*data.uniformIncrement, 0u) + 0] = TransformationUniform2D{} .setTransformationMatrix(Matrix3::translation({ 0.5f, -0.5f})); @@ -7420,7 +7420,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe2D() { GL::Buffer jointUniform{GL::Buffer::TargetHint::Uniform, jointData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / joint offsets are zero if we have single draw, as those are done with UBO offset bindings instead */ drawData[0*data.uniformIncrement] = MeshVisualizerDrawUniform2D{} @@ -7621,7 +7621,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = MeshVisualizerMaterialUniform{} .setColor(0xffffcc_rgbf) .setWireframeColor(0xcc0000_rgbf); @@ -7630,7 +7630,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe3D() { .setWireframeColor(0x0000cc_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationData{2*data.uniformIncrement + 1}; + Containers::Array transformationData{ValueInit, 2*data.uniformIncrement + 1}; transformationData[0*data.uniformIncrement] = TransformationUniform3D{} .setTransformationMatrix( Matrix4::scaling(Vector3{0.3f})* @@ -7645,7 +7645,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe3D() { Matrix4::translation({-1.5f, 1.5f, 0.0f})); GL::Buffer transformationUniform{GL::Buffer::TargetHint::Uniform, transformationData}; - Containers::Array jointData{Math::max(2*data.uniformIncrement + 4, 10u)}; + Containers::Array jointData{ValueInit, Math::max(2*data.uniformIncrement + 4, 10u)}; /* First draw moves both bottom corners */ jointData[Math::max(0*data.uniformIncrement, 0u) + 0] = TransformationUniform3D{} .setTransformationMatrix(Matrix4::translation({ 0.5f, -0.5f, 0.0f})); @@ -7671,7 +7671,7 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe3D() { GL::Buffer jointUniform{GL::Buffer::TargetHint::Uniform, jointData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / joint offsets are zero if we have single draw, as those are done with UBO offset bindings instead */ drawData[0*data.uniformIncrement] = MeshVisualizerDrawUniform3D{} diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 4090dbf93..586dcddd8 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -5518,7 +5518,7 @@ void PhongGLTest::renderMulti() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = PhongMaterialUniform{} .setDiffuseColor(data.flags & PhongGL::Flag::DiffuseTexture ? 0xffffff_rgbf : 0x00ffff_rgbf); @@ -5530,7 +5530,7 @@ void PhongGLTest::renderMulti() { /* The shader has two lights hardcoded, so make sure the buffer can fit 2 items enough even though the last draw needs just one light. Not a problem on desktop, but WebGL complains. */ - Containers::Array lightData{2*data.uniformIncrement + 2}; + Containers::Array lightData{ValueInit, 2*data.uniformIncrement + 2}; lightData[0*data.uniformIncrement] = PhongLightUniform{} .setPosition(Vector4{0.0f, 0.0f, 1.0f, 0.0f}) .setColor(data.flags & PhongGL::Flag::DiffuseTexture ? @@ -5551,7 +5551,7 @@ void PhongGLTest::renderMulti() { 0xffffff_rgbf : 0xff00ff_rgbf); GL::Buffer lightUniform{GL::Buffer::TargetHint::Uniform, lightData}; - Containers::Array transformationData{2*data.uniformIncrement + 1}; + Containers::Array transformationData{ValueInit, 2*data.uniformIncrement + 1}; transformationData[0*data.uniformIncrement] = TransformationUniform3D{} .setTransformationMatrix( Matrix4::translation(Vector3::zAxis(-2.15f))* @@ -5574,7 +5574,7 @@ void PhongGLTest::renderMulti() { ); GL::Buffer transformationUniform{GL::Buffer::TargetHint::Uniform, transformationData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( data.flags & PhongGL::Flag::TextureArrays ? @@ -5601,7 +5601,7 @@ void PhongGLTest::renderMulti() { .setLayer(2); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / light offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = PhongDrawUniform{} @@ -5865,14 +5865,14 @@ void PhongGLTest::renderMultiSkinning() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = PhongMaterialUniform{} .setAmbientColor(0x33ffff_rgbf); materialData[1*data.uniformIncrement] = PhongMaterialUniform{} .setAmbientColor(0xffff33_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationData{2*data.uniformIncrement + 1}; + Containers::Array transformationData{ValueInit, 2*data.uniformIncrement + 1}; transformationData[0*data.uniformIncrement] = TransformationUniform3D{} .setTransformationMatrix(Matrix4::scaling(Vector3{0.3f})* Matrix4::translation({ 0.0f, -1.5f, 0.0f})); @@ -5884,7 +5884,7 @@ void PhongGLTest::renderMultiSkinning() { Matrix4::translation({-1.5f, 1.5f, 0.0f})); GL::Buffer transformationUniform{GL::Buffer::TargetHint::Uniform, transformationData}; - Containers::Array jointData{Math::max(2*data.uniformIncrement + 4, 10u)}; + Containers::Array jointData{ValueInit, Math::max(2*data.uniformIncrement + 4, 10u)}; /* First draw moves both bottom corners */ jointData[Math::max(0*data.uniformIncrement, 0u) + 0] = TransformationUniform3D{} .setTransformationMatrix(Matrix4::translation({ 0.5f, -0.5f, 0.0f})); @@ -5910,7 +5910,7 @@ void PhongGLTest::renderMultiSkinning() { GL::Buffer jointUniform{GL::Buffer::TargetHint::Uniform, jointData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material / joint offsets are zero if we have single draw, as those are done with UBO offset bindings instead */ drawData[0*data.uniformIncrement] = PhongDrawUniform{} diff --git a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp index 4cb63f467..37aba255e 100644 --- a/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp +++ b/src/Magnum/Shaders/Test/ShadersGLBenchmark.cpp @@ -609,16 +609,16 @@ template void ShadersGLBenchmark::flat() { GL::Buffer textureTransformationUniform{NoCreate}; GL::Buffer materialUniform{NoCreate}; if(data.flags & FlatGL2D::Flag::UniformBuffers) { - transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - Containers::Array materialData{data.materialCount}; + transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{ValueInit, data.drawCount}}; + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + Containers::Array materialData{ValueInit, data.materialCount}; materialData[0].setAlphaMask(0.0f); materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, materialData}; shader.bindTransformationProjectionBuffer(transformationProjectionUniform) .bindDrawBuffer(drawUniform) .bindMaterialBuffer(materialUniform); if(data.flags & FlatGL2D::Flag::TextureTransformation) { - textureTransformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; + textureTransformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; shader.bindTextureTransformationBuffer(textureTransformationUniform); } } else @@ -732,16 +732,16 @@ void ShadersGLBenchmark::phong() { lightUniform = GL::Buffer{}; textureTransformationUniform = GL::Buffer{}; - Containers::Array transformationData{data.drawCount}; - Containers::Array drawData{data.drawCount}; + Containers::Array transformationData{ValueInit, data.drawCount}; + Containers::Array drawData{ValueInit, data.drawCount}; drawData[0].lightCount = 5; /* Cap at 5 lights, even if more is set */ - Containers::Array materialData{data.materialCount}; + Containers::Array materialData{ValueInit, data.materialCount}; materialData[0] /* White ambient so we always have a white output */ .setAmbientColor(0xffffffff_rgbaf) .setAlphaMask(0.0f); - Containers::Array lightData{data.lightCount}; - Containers::Array textureTransformationData{data.drawCount}; + Containers::Array lightData{ValueInit, data.lightCount}; + Containers::Array textureTransformationData{ValueInit, data.drawCount}; #ifndef MAGNUM_TARGET_GLES if(data.bufferStorage) { @@ -890,7 +890,7 @@ template void ShadersGLBenchmark::vertexColor() { GL::Buffer transformationProjectionUniform{NoCreate}; GL::Buffer textureTransformationUniform{NoCreate}; if(data.flags & VertexColorGL::Flag::UniformBuffers) { - transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{data.drawCount}}; + transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{ValueInit, data.drawCount}}; shader.bindTransformationProjectionBuffer(transformationProjectionUniform); } #endif @@ -954,9 +954,9 @@ template void ShadersGLBenchmark::vector() { GL::Buffer textureTransformationUniform{NoCreate}; GL::Buffer materialUniform{NoCreate}; if(data.flags & VectorGL2D::Flag::UniformBuffers) { - transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.materialCount}}; + transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{ValueInit, data.drawCount}}; + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.materialCount}}; shader.bindTransformationProjectionBuffer(transformationProjectionUniform) .bindDrawBuffer(drawUniform) .bindMaterialBuffer(materialUniform); @@ -1028,14 +1028,14 @@ template void ShadersGLBenchmark::distanceFieldVector() GL::Buffer materialUniform{NoCreate}; GL::Buffer textureTransformationUniform{NoCreate}; if(data.flags & DistanceFieldVectorGL2D::Flag::UniformBuffers) { - transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.materialCount}}; + transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array::TransformationProjection>{ValueInit, data.drawCount}}; + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.materialCount}}; shader.bindTransformationProjectionBuffer(transformationProjectionUniform) .bindDrawBuffer(drawUniform) .bindMaterialBuffer(materialUniform); if(data.flags & DistanceFieldVectorGL2D::Flag::TextureTransformation) { - textureTransformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; + textureTransformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; shader.bindTextureTransformationBuffer(textureTransformationUniform); } } @@ -1144,9 +1144,9 @@ void ShadersGLBenchmark::meshVisualizer2D() { GL::Buffer drawUniform{NoCreate}; GL::Buffer materialUniform{NoCreate}; if(data.flags & MeshVisualizerGL2D::Flag::UniformBuffers) { - transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - Containers::Array materialData{data.materialCount}; + transformationProjectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + Containers::Array materialData{ValueInit, data.materialCount}; materialData[0].setWireframeColor(0xffffffff_rgbaf); materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, materialData}; shader.bindTransformationProjectionBuffer(transformationProjectionUniform) @@ -1284,9 +1284,9 @@ void ShadersGLBenchmark::meshVisualizer3D() { projectionUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, { ProjectionUniform3D{} }}; - transformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{data.drawCount}}; - Containers::Array materialData{data.materialCount}; + transformationUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + drawUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, Containers::Array{ValueInit, data.drawCount}}; + Containers::Array materialData{ValueInit, data.materialCount}; materialData[0].setWireframeColor(0xffffffff_rgbaf); materialData[0].setLineLength(0.0f); materialUniform = GL::Buffer{GL::Buffer::TargetHint::Uniform, materialData}; diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index c16c613ee..b6cc9f1f3 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -1645,7 +1645,7 @@ void VectorGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = VectorMaterialUniform{} .setColor(0xff0000_rgbf) .setBackgroundColor(0xffcccc_rgbf); @@ -1654,7 +1654,7 @@ void VectorGLTest::renderMulti2D() { .setBackgroundColor(0xccffcc_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -1675,7 +1675,7 @@ void VectorGLTest::renderMulti2D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( /* Additional Y shift + scale in the array slice */ @@ -1704,7 +1704,7 @@ void VectorGLTest::renderMulti2D() { .setLayer(1); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = VectorDrawUniform{} @@ -1945,7 +1945,7 @@ void VectorGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array materialData{data.uniformIncrement + 1}; + Containers::Array materialData{ValueInit, data.uniformIncrement + 1}; materialData[0*data.uniformIncrement] = VectorMaterialUniform{} .setColor(0xff0000_rgbf) .setBackgroundColor(0xffcccc_rgbf); @@ -1954,7 +1954,7 @@ void VectorGLTest::renderMulti3D() { .setBackgroundColor(0xccffcc_rgbf); GL::Buffer materialUniform{GL::Buffer::TargetHint::Uniform, materialData}; - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::perspectiveProjection(60.0_degf, 1.0f, 0.1f, 10.0f)* @@ -1980,7 +1980,7 @@ void VectorGLTest::renderMulti3D() { ); GL::Buffer transformationProjectionUniform{GL::Buffer::TargetHint::Uniform, transformationProjectionData}; - Containers::Array textureTransformationData{2*data.uniformIncrement + 1}; + Containers::Array textureTransformationData{ValueInit, 2*data.uniformIncrement + 1}; textureTransformationData[0*data.uniformIncrement] = TextureTransformationUniform{} .setTextureMatrix( /* Additional Y shift + scale in the array slice */ @@ -2009,7 +2009,7 @@ void VectorGLTest::renderMulti3D() { .setLayer(1); /* ignored if not array */ GL::Buffer textureTransformationUniform{GL::Buffer::TargetHint::Uniform, textureTransformationData}; - Containers::Array drawData{2*data.uniformIncrement + 1}; + Containers::Array drawData{ValueInit, 2*data.uniformIncrement + 1}; /* Material offsets are zero if we have single draw, as those are done with UBO offset bindings instead. */ drawData[0*data.uniformIncrement] = VectorDrawUniform{} diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index ab0820376..d63a6b630 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -1063,7 +1063,7 @@ void VertexColorGLTest::renderMulti2D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform2D{} .setTransformationProjectionMatrix( Matrix3::projection({2.1f, 2.1f})* @@ -1209,7 +1209,7 @@ void VertexColorGLTest::renderMulti3D() { The data.uniformIncrement is set high enough to ensure that, in the non-offset-bind case this value is 1. */ - Containers::Array transformationProjectionData{2*data.uniformIncrement + 1}; + Containers::Array transformationProjectionData{ValueInit, 2*data.uniformIncrement + 1}; transformationProjectionData[0*data.uniformIncrement] = TransformationProjectionUniform3D{} .setTransformationProjectionMatrix( Matrix4::perspectiveProjection(60.0_degf, 1.0f, 0.1f, 10.0f)* diff --git a/src/Magnum/Test/ImageTest.cpp b/src/Magnum/Test/ImageTest.cpp index 49d4386b0..b6df75455 100644 --- a/src/Magnum/Test/ImageTest.cpp +++ b/src/Magnum/Test/ImageTest.cpp @@ -237,7 +237,7 @@ void ImageTest::constructGeneric() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 4); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 4*4); } { auto data = new char[3*2]; @@ -250,7 +250,7 @@ void ImageTest::constructGeneric() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 2); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*2); } } @@ -265,7 +265,7 @@ void ImageTest::constructGenericPlaceholder() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 8); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { Image2D a{ PixelStorage{} @@ -281,7 +281,7 @@ void ImageTest::constructGenericPlaceholder() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -297,7 +297,7 @@ void ImageTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*12); } { auto data = new char[3*12]; @@ -310,7 +310,7 @@ void ImageTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*12); } @@ -325,7 +325,7 @@ void ImageTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*8); } { auto data = new char[3*6]; @@ -337,7 +337,7 @@ void ImageTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); } @@ -352,7 +352,7 @@ void ImageTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); } } @@ -368,7 +368,7 @@ void ImageTest::constructImplementationSpecificPlaceholder() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { Image2D a{ PixelStorage{} @@ -384,7 +384,7 @@ void ImageTest::constructImplementationSpecificPlaceholder() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } /* Format + extra */ @@ -397,7 +397,7 @@ void ImageTest::constructImplementationSpecificPlaceholder() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { Image2D a{ PixelStorage{} @@ -413,7 +413,7 @@ void ImageTest::constructImplementationSpecificPlaceholder() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } /* Manual pixel size */ @@ -430,7 +430,7 @@ void ImageTest::constructImplementationSpecificPlaceholder() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -447,7 +447,7 @@ void ImageTest::constructCompressedGeneric() { CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*8); } { auto data = new char[8*16]; @@ -462,7 +462,7 @@ void ImageTest::constructCompressedGeneric() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); } } @@ -477,7 +477,7 @@ void ImageTest::constructCompressedGenericPlaceholder() { CORRADE_COMPARE(a.blockSize(), (Vector3i{})); CORRADE_COMPARE(a.blockDataSize(), 0); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { CompressedImage2D a{ CompressedPixelStorage{} @@ -492,7 +492,7 @@ void ImageTest::constructCompressedGenericPlaceholder() { CORRADE_COMPARE(a.blockSize(), (Vector3i{})); CORRADE_COMPARE(a.blockDataSize(), 0); CORRADE_COMPARE(a.size(), Vector2i{}); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -510,7 +510,7 @@ void ImageTest::constructCompressedImplementationSpecific() { CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*8); } { auto data = new char[8*16]; @@ -525,7 +525,7 @@ void ImageTest::constructCompressedImplementationSpecific() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); } @@ -544,7 +544,7 @@ void ImageTest::constructCompressedImplementationSpecific() { CORRADE_COMPARE(a.blockSize(), (Vector3i{3, 4, 5})); CORRADE_COMPARE(a.blockDataSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{3, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*12); } } @@ -594,7 +594,7 @@ void ImageTest::constructInvalidSize() { Error redirectError{&out}; /* Doesn't consider alignment */ - Image2D{PixelFormat::RGB8Unorm, {1, 3}, Containers::Array{3*3}}; + Image2D{PixelFormat::RGB8Unorm, {1, 3}, Containers::Array{NoInit, 3*3}}; CORRADE_COMPARE(out, "Image: data too small, got 9 but expected at least 12 bytes\n"); } @@ -603,10 +603,10 @@ void ImageTest::constructInvalidCubeMap() { Containers::String out; Error redirectError{&out}; - Image3D{PixelFormat::RGBA8Unorm, {3, 3, 5}, Containers::Array{3*3*5*4}, ImageFlag3D::CubeMap}; - Image3D{PixelFormat::RGBA8Unorm, {3, 4, 6}, Containers::Array{3*4*6*4}, ImageFlag3D::CubeMap}; - Image3D{PixelFormat::RGBA8Unorm, {3, 3, 17}, Containers::Array{3*3*17*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; - Image3D{PixelFormat::RGBA8Unorm, {4, 3, 18}, Containers::Array{4*3*18*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + Image3D{PixelFormat::RGBA8Unorm, {3, 3, 5}, Containers::Array{NoInit, 3*3*5*4}, ImageFlag3D::CubeMap}; + Image3D{PixelFormat::RGBA8Unorm, {3, 4, 6}, Containers::Array{NoInit, 3*4*6*4}, ImageFlag3D::CubeMap}; + Image3D{PixelFormat::RGBA8Unorm, {3, 3, 17}, Containers::Array{NoInit, 3*3*17*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + Image3D{PixelFormat::RGBA8Unorm, {4, 3, 18}, Containers::Array{NoInit, 4*3*18*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; CORRADE_COMPARE(out, "Image: expected exactly 6 faces for a cube map, got 5\n" "Image: expected square faces for a cube map, got {3, 4}\n" @@ -677,14 +677,14 @@ void ImageTest::constructCompressedInvalidSize() { { Containers::String out; Error redirectError{&out}; - CompressedImage2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{15}}; + CompressedImage2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{NoInit, 15}}; CORRADE_COMPARE(out, "CompressedImage: data too small, got 15 but expected at least 16 bytes\n"); /* Size should be rounded up even if the image size is not full block */ } { Containers::String out; Error redirectError{&out}; - CompressedImage2D{CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{15}}; + CompressedImage2D{CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{NoInit, 15}}; CORRADE_COMPARE(out, "CompressedImage: data too small, got 15 but expected at least 16 bytes\n"); } } @@ -694,10 +694,10 @@ void ImageTest::constructCompressedInvalidCubeMap() { Containers::String out; Error redirectError{&out}; - CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 5}, Containers::Array{8*5}, ImageFlag3D::CubeMap}; - CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 4, 6}, Containers::Array{8*6}, ImageFlag3D::CubeMap}; - CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 17}, Containers::Array{8*17}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; - CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 3, 18}, Containers::Array{8*18}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 5}, Containers::Array{NoInit, 8*5}, ImageFlag3D::CubeMap}; + CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 4, 6}, Containers::Array{NoInit, 8*6}, ImageFlag3D::CubeMap}; + CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 17}, Containers::Array{NoInit, 8*17}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + CompressedImage3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 3, 18}, Containers::Array{NoInit, 8*18}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; CORRADE_COMPARE(out, "CompressedImage: expected exactly 6 faces for a cube map, got 5\n" "CompressedImage: expected square faces for a cube map, got {3, 4}\n" @@ -721,7 +721,7 @@ void ImageTest::constructMoveGeneric() { PixelFormat::RGBA32F, {1, 3}, Containers::Array{data, 3*16}, ImageFlag2D::Array}; Image2D b(Utility::move(a)); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.flags(), ImageFlag2D::Array); @@ -730,14 +730,14 @@ void ImageTest::constructMoveGeneric() { CORRADE_COMPARE(b.formatExtra(), 0); CORRADE_COMPARE(b.pixelSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*16); auto data2 = new char[24]; Image2D c{PixelFormat::R8I, {2, 6}, Containers::Array{data2, 24}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{2, 6})); CORRADE_COMPARE(c.flags(), ImageFlag2D::Array); @@ -746,7 +746,7 @@ void ImageTest::constructMoveGeneric() { CORRADE_COMPARE(c.formatExtra(), 0); CORRADE_COMPARE(c.pixelSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 3*16); CORRADE_VERIFY(std::is_nothrow_move_constructible::value); @@ -759,7 +759,7 @@ void ImageTest::constructMoveImplementationSpecific() { GL::PixelFormat::RGB, GL::PixelType::UnsignedShort, {1, 3}, Containers::Array{data, 3*6}, ImageFlag2D::Array}; Image2D b(Utility::move(a)); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.flags(), ImageFlag2D::Array); @@ -768,7 +768,7 @@ void ImageTest::constructMoveImplementationSpecific() { CORRADE_COMPARE(b.formatExtra(), 1337); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); auto data2 = new char[12*4*2]; @@ -776,7 +776,7 @@ void ImageTest::constructMoveImplementationSpecific() { 1, 2, 8, {2, 6}, Containers::Array{data2, 12*4*2}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), Vector2i(2, 6)); CORRADE_COMPARE(c.flags(), ImageFlag2D::Array); @@ -785,7 +785,7 @@ void ImageTest::constructMoveImplementationSpecific() { CORRADE_COMPARE(c.formatExtra(), 1337); CORRADE_COMPARE(c.pixelSize(), 6); CORRADE_COMPARE(c.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 3*6); } @@ -797,7 +797,7 @@ void ImageTest::constructMoveCompressedGeneric() { Containers::Array{data, 8*16}, ImageFlag2D::Array}; CompressedImage2D b{Utility::move(a)}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.flags(), ImageFlag2D::Array); @@ -806,14 +806,14 @@ void ImageTest::constructMoveCompressedGeneric() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); auto data2 = new char[2*8]; CompressedImage2D c{CompressedPixelFormat::Bc1RGBAUnorm, {8, 4}, Containers::Array{data2, 2*8}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{8, 4})); CORRADE_COMPARE(c.flags(), ImageFlag2D::Array); @@ -822,7 +822,7 @@ void ImageTest::constructMoveCompressedGeneric() { CORRADE_COMPARE(c.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(c.blockDataSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 8*16); CORRADE_VERIFY(std::is_nothrow_move_constructible::value); @@ -837,7 +837,7 @@ void ImageTest::constructMoveCompressedImplementationSpecific() { Containers::Array{data, 8*16}, ImageFlag2D::Array}; CompressedImage2D b{Utility::move(a)}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.flags(), ImageFlag2D::Array); @@ -846,14 +846,14 @@ void ImageTest::constructMoveCompressedImplementationSpecific() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); auto data2 = new char[2*8]; CompressedImage2D c{CompressedPixelFormat::Bc1RGBAUnorm, {8, 4}, Containers::Array{data2, 2*8}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{8, 4})); CORRADE_COMPARE(c.flags(), ImageFlag2D::Array); @@ -862,7 +862,7 @@ void ImageTest::constructMoveCompressedImplementationSpecific() { CORRADE_COMPARE(c.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(c.blockDataSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 8*16); } @@ -880,7 +880,7 @@ template void ImageTest::toViewGeneric() { CORRADE_COMPARE(b.formatExtra(), 0); CORRADE_COMPARE(b.pixelSize(), 4); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); } template void ImageTest::toViewImplementationSpecific() { @@ -897,7 +897,7 @@ template void ImageTest::toViewImplementationSpecific() { CORRADE_COMPARE(b.formatExtra(), 1337); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); } template void ImageTest::toViewCompressedGeneric() { @@ -916,7 +916,7 @@ template void ImageTest::toViewCompressedGeneric() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); } @@ -936,7 +936,7 @@ template void ImageTest::toViewCompressedImplementationSpecific() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); } @@ -944,8 +944,8 @@ void ImageTest::data() { auto data = new char[4*4]; Image2D a{PixelFormat::RGBA8Unorm, {1, 3}, Containers::Array{data, 4*4}}; const Image2D& ca = a; - CORRADE_COMPARE(a.data(), static_cast(data)); - CORRADE_COMPARE(ca.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); + CORRADE_COMPARE(ca.data().data(), static_cast(data)); } void ImageTest::dataCompressed() { @@ -954,8 +954,8 @@ void ImageTest::dataCompressed() { CompressedPixelFormat::Bc1RGBAUnorm, {12, 8}, Containers::Array{data, 6*8}, ImageFlag2D::Array}; const CompressedImage2D& ca = a; - CORRADE_COMPARE(a.data(), static_cast(data)); - CORRADE_COMPARE(ca.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); + CORRADE_COMPARE(ca.data().data(), static_cast(data)); } void ImageTest::dataRvalue() { @@ -979,7 +979,7 @@ void ImageTest::dataProperties() { .setAlignment(8) .setSkip({3, 2, 1}), PixelFormat::R8Unorm, {2, 4, 6}, - Containers::Array{224}}; + Containers::Array{NoInit, 224}}; CORRADE_COMPARE(image.dataProperties(), (std::pair, Math::Vector3>{{3, 16, 32}, {8, 4, 6}})); } @@ -1002,7 +1002,7 @@ void ImageTest::release() { const char* const pointer = a.release().release(); CORRADE_COMPARE(pointer, data); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i()); } @@ -1014,7 +1014,7 @@ void ImageTest::releaseCompressed() { const char* const pointer = a.release().release(); CORRADE_COMPARE(pointer, data); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i()); } @@ -1033,14 +1033,14 @@ void ImageTest::pixels1D() { Containers::StridedArrayView1D pixels = image.pixels(); CORRADE_COMPARE(pixels.size(), 2); CORRADE_COMPARE(pixels.stride(), 3); - CORRADE_COMPARE(pixels.data(), image.data() + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 3*3); CORRADE_COMPARE(pixels[0], (Color3ub{3, 4, 5})); CORRADE_COMPARE(pixels[1], (Color3ub{6, 7, 8})); } { Containers::StridedArrayView1D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), 2); CORRADE_COMPARE(pixels.stride(), 3); - CORRADE_COMPARE(pixels.data(), cimage.data() + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 3*3); CORRADE_COMPARE(pixels[0], (Color3ub{3, 4, 5})); CORRADE_COMPARE(pixels[1], (Color3ub{6, 7, 8})); } @@ -1067,14 +1067,14 @@ void ImageTest::pixels2D() { Containers::StridedArrayView2D pixels = image.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size2D{4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride2D{20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 2*20 + 3*3); CORRADE_COMPARE(pixels[3][0], (Color3ub{4, 5, 6})); CORRADE_COMPARE(pixels[3][1], (Color3ub{7, 8, 9})); } { Containers::StridedArrayView2D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size2D{4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride2D{20, 3})); - CORRADE_COMPARE(pixels.data(), cimage.data() + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 2*20 + 3*3); CORRADE_COMPARE(pixels[3][0], (Color3ub{4, 5, 6})); CORRADE_COMPARE(pixels[3][1], (Color3ub{7, 8, 9})); } @@ -1127,14 +1127,14 @@ void ImageTest::pixels3D() { Containers::StridedArrayView3D pixels = image.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size3D{3, 4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride3D{140, 20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 140 + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 140 + 2*20 + 3*3); CORRADE_COMPARE(pixels[1][3][0], (Color3ub{9, 8, 7})); CORRADE_COMPARE(pixels[1][3][1], (Color3ub{6, 5, 4})); } { Containers::StridedArrayView3D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size3D{3, 4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride3D{140, 20, 3})); - CORRADE_COMPARE(pixels.data(), cimage.data() + 140 + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 140 + 2*20 + 3*3); CORRADE_COMPARE(pixels[1][3][0], (Color3ub{9, 8, 7})); CORRADE_COMPARE(pixels[1][3][1], (Color3ub{6, 5, 4})); } diff --git a/src/Magnum/Test/ImageViewTest.cpp b/src/Magnum/Test/ImageViewTest.cpp index efccc5a31..fd639ddb5 100644 --- a/src/Magnum/Test/ImageViewTest.cpp +++ b/src/Magnum/Test/ImageViewTest.cpp @@ -231,7 +231,7 @@ template void ImageViewTest::constructGeneric() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 4); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 4*4); } { T data[3*2]{}; @@ -244,7 +244,7 @@ template void ImageViewTest::constructGeneric() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 2); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*2); } } @@ -261,7 +261,7 @@ template void ImageViewTest::constructGenericEmpty() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{2, 6})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { ImageView<2, T> a{PixelStorage{}.setAlignment(1), PixelFormat::RGB16F, {8, 3}, ImageFlag2D::Array}; @@ -272,7 +272,7 @@ template void ImageViewTest::constructGenericEmpty() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{8, 3})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -290,7 +290,7 @@ template void ImageViewTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*12); } { T data[3*12]{}; @@ -303,7 +303,7 @@ template void ImageViewTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*12); } @@ -318,7 +318,7 @@ template void ImageViewTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i(1, 3)); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*8); } { T data[3*6]{}; @@ -330,7 +330,7 @@ template void ImageViewTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i(1, 3)); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); } @@ -345,7 +345,7 @@ template void ImageViewTest::constructImplementationSpecific() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i(1, 3)); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); } } @@ -363,7 +363,7 @@ template void ImageViewTest::constructImplementationSpecificEmpty() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{2, 16})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { ImageView<2, T> a{PixelStorage{}.setAlignment(1), Vk::PixelFormat::R32G32B32F, {1, 2}, ImageFlag2D::Array}; @@ -374,7 +374,7 @@ template void ImageViewTest::constructImplementationSpecificEmpty() { CORRADE_COMPARE(a.formatExtra(), 0); CORRADE_COMPARE(a.pixelSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{1, 2})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } /* Format + extra */ @@ -387,7 +387,7 @@ template void ImageViewTest::constructImplementationSpecificEmpty() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { ImageView<2, T> a{PixelStorage{}.setAlignment(1), GL::PixelFormat::RGB, GL::PixelType::UnsignedShort, {8, 2}, ImageFlag2D::Array}; @@ -397,7 +397,7 @@ template void ImageViewTest::constructImplementationSpecificEmpty() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{8, 2})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } /* Manual pixel size */ @@ -410,7 +410,7 @@ template void ImageViewTest::constructImplementationSpecificEmpty() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{3, 3})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -429,7 +429,7 @@ template void ImageViewTest::constructCompressedGeneric() { CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*8); } { T data[8*16]{}; @@ -444,7 +444,7 @@ template void ImageViewTest::constructCompressedGeneric() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); } } @@ -461,7 +461,7 @@ template void ImageViewTest::constructCompressedGenericEmpty() { CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { CompressedImageView<2, T> a{ CompressedPixelStorage{}.setRowLength(20), @@ -474,7 +474,7 @@ template void ImageViewTest::constructCompressedGenericEmpty() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -494,7 +494,7 @@ template void ImageViewTest::constructCompressedImplementationSpecific( CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*8); } { T data[8*16]{}; @@ -509,7 +509,7 @@ template void ImageViewTest::constructCompressedImplementationSpecific( CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); } @@ -528,7 +528,7 @@ template void ImageViewTest::constructCompressedImplementationSpecific( CORRADE_COMPARE(a.blockSize(), (Vector3i{3, 4, 5})); CORRADE_COMPARE(a.blockDataSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{3, 8})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 6*12); } } @@ -548,7 +548,7 @@ template void ImageViewTest::constructCompressedImplementationSpecificE CORRADE_COMPARE(a.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(a.blockDataSize(), 8); CORRADE_COMPARE(a.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } { CompressedImageView<2, T> a{ CompressedPixelStorage{}.setRowLength(20), @@ -560,7 +560,7 @@ template void ImageViewTest::constructCompressedImplementationSpecificE CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } /* Manual block properties */ @@ -577,7 +577,7 @@ template void ImageViewTest::constructCompressedImplementationSpecificE CORRADE_COMPARE(a.blockSize(), (Vector3i{3, 4, 5})); CORRADE_COMPARE(a.blockDataSize(), 12); CORRADE_COMPARE(a.size(), (Vector2i{3, 8})); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); } } @@ -593,7 +593,7 @@ void ImageViewTest::construct3DFrom1D() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), 3); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); /* Not testing the flags parameter here to be sure implicit conversion @@ -605,7 +605,7 @@ void ImageViewTest::construct3DFrom1D() { CORRADE_COMPARE(b.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector3i{3, 1, 1})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); /* Conversion the other way is not allowed (will be later, but explicitly @@ -627,7 +627,7 @@ void ImageViewTest::construct3DFrom2D() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); MutableImageView3D b = {a, ImageFlag3D(0x00a0)}; @@ -639,7 +639,7 @@ void ImageViewTest::construct3DFrom2D() { CORRADE_COMPARE(b.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector3i{1, 3, 1})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); /* Conversion the other way is not allowed (will be later, but explicitly @@ -664,7 +664,7 @@ void ImageViewTest::constructCompressed3DFrom1D() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), 15); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 4*16); /* Not testing the flags parameter here to be sure implicit conversion @@ -677,7 +677,7 @@ void ImageViewTest::constructCompressed3DFrom1D() { CORRADE_COMPARE(b.blockDataSize(), 16); /* The size doesn't get expanded */ CORRADE_COMPARE(b.size(), (Vector3i{15, 1, 1})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 4*16); /* Conversion the other way is not allowed (will be later, but explicitly @@ -703,7 +703,7 @@ void ImageViewTest::constructCompressed3DFrom2D() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); MutableCompressedImageView3D b = {a, ImageFlag3D(0x00a0)}; @@ -715,7 +715,7 @@ void ImageViewTest::constructCompressed3DFrom2D() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector3i{15, 10, 1})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); /* Conversion the other way is not allowed (will be later, but explicitly @@ -735,7 +735,7 @@ void ImageViewTest::constructFromMutable() { CORRADE_COMPARE(a.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(a.pixelSize(), 6); CORRADE_COMPARE(a.size(), Vector2i(1, 3)); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 3*6); ImageView2D b = a; @@ -745,7 +745,7 @@ void ImageViewTest::constructFromMutable() { CORRADE_COMPARE(b.formatExtra(), UnsignedInt(GL::PixelType::UnsignedShort)); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), Vector2i(1, 3)); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); } @@ -764,7 +764,7 @@ void ImageViewTest::constructCompressedFromMutable() { CORRADE_COMPARE(a.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(a.blockDataSize(), 16); CORRADE_COMPARE(a.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(a.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); CORRADE_COMPARE(a.data().size(), 8*16); CompressedImageView2D b = a; @@ -774,7 +774,7 @@ void ImageViewTest::constructCompressedFromMutable() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); } @@ -1048,7 +1048,7 @@ template void ImageViewTest::setData() { CORRADE_COMPARE(a.storage().alignment(), 1); CORRADE_COMPARE(a.format(), PixelFormat::RGB8Snorm); CORRADE_COMPARE(a.size(), Vector2i(1, 3)); - CORRADE_COMPARE(a.data(), static_cast(data2)); + CORRADE_COMPARE(a.data().data(), static_cast(data2)); } template void ImageViewTest::setDataCompressed() { @@ -1064,7 +1064,7 @@ template void ImageViewTest::setDataCompressed() { CORRADE_COMPARE(a.storage().rowLength(), 8); CORRADE_COMPARE(a.format(), CompressedPixelFormat::Bc1RGBAUnorm); CORRADE_COMPARE(a.size(), Vector2i(4, 4)); - CORRADE_COMPARE(a.data(), static_cast(data2)); + CORRADE_COMPARE(a.data().data(), static_cast(data2)); } void ImageViewTest::setDataInvalidSize() { @@ -1121,7 +1121,7 @@ template void ImageViewTest::pixels1D() { CORRADE_COMPARE(std::is_const::value, std::is_const::value); CORRADE_COMPARE(pixels.size(), 2); CORRADE_COMPARE(pixels.stride(), 3); - CORRADE_COMPARE(pixels.data(), image.data() + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 3*3); } template void ImageViewTest::pixels2D() { @@ -1142,7 +1142,7 @@ template void ImageViewTest::pixels2D() { CORRADE_COMPARE(std::is_const::value, std::is_const::value); CORRADE_COMPARE(pixels.size(), (Containers::Size2D{4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride2D{20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 2*20 + 3*3); } template void ImageViewTest::pixels3D() { @@ -1164,13 +1164,13 @@ template void ImageViewTest::pixels3D() { CORRADE_COMPARE(std::is_const::value, std::is_const::value); CORRADE_COMPARE(pixels.size(), (Containers::Size3D{3, 4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride3D{140, 20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 140 + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 140 + 2*20 + 3*3); } void ImageViewTest::pixelsNullptr() { ImageView3D image{PixelFormat::RGB8Unorm, {2, 4, 3}}; - CORRADE_COMPARE(image.data(), static_cast(nullptr)); + CORRADE_COMPARE(image.data().data(), static_cast(nullptr)); CORRADE_COMPARE(image.data().size(), 0); CORRADE_COMPARE(image.pixels().data(), nullptr); diff --git a/src/Magnum/Text/Test/RendererTest.cpp b/src/Magnum/Text/Test/RendererTest.cpp index ae25e49bc..86d7f80d5 100644 --- a/src/Magnum/Text/Test/RendererTest.cpp +++ b/src/Magnum/Text/Test/RendererTest.cpp @@ -4960,12 +4960,12 @@ void RendererTest::allocateIndexAllocator() { CORRADE_COMPARE(renderer.renderingRunCount(), 1); /* No need to verify the actual contents, just that the view didn't change since last time */ - CORRADE_COMPARE(renderer.indices().data(), indices); + CORRADE_COMPARE(renderer.indices().data(), indices.data()); } /* Reserve / render / set index type second time. Pass with a size that's not a multiple of 6 times type size, it should round that down. */ - allocation.expectedData = indices; + allocation.expectedData = indices.data(); /* Using a heap allocation to not go over limited stack sizes on Emscripten etc */ Containers::Array indices2{NoInit, 20000*6*4}; @@ -5016,10 +5016,10 @@ void RendererTest::allocateIndexAllocator() { to perform the data copy, the one in this test deliberately doesn't. */ if(data.expectNoReallocation) { CORRADE_COMPARE(allocation.called, 1); - CORRADE_COMPARE(renderer.indices().data(), indices); + CORRADE_COMPARE(renderer.indices().data(), indices.data()); } else { CORRADE_COMPARE(allocation.called, 2); - CORRADE_COMPARE(renderer.indices().data(), indices2); + CORRADE_COMPARE(renderer.indices().data(), indices2.data()); } } diff --git a/src/Magnum/Trade/AbstractImporter.cpp b/src/Magnum/Trade/AbstractImporter.cpp index e8add28d7..0529d91b5 100644 --- a/src/Magnum/Trade/AbstractImporter.cpp +++ b/src/Magnum/Trade/AbstractImporter.cpp @@ -628,7 +628,7 @@ void AbstractImporter::populateCachedScenes() { return; _cachedScenes.emplace(); - _cachedScenes->scenes = Containers::Array>{sceneCount()}; + _cachedScenes->scenes = Containers::Array>{ValueInit, sceneCount()}; UnsignedLong newObjectOffset = objectCount(); for(UnsignedInt i = 0; i != _cachedScenes->scenes.size(); ++i) { @@ -813,7 +813,7 @@ Containers::Pointer AbstractImporter::doObject2D(const UnsignedInt new MeshObjectData2D{Utility::move(children), *transformation, mesh.front().first(), mesh.front().second(), - skin ? Int(*skin) : -1, + skin.isEmpty() ? -1 : Int(skin.front()), importerState ? *importerState : nullptr}); } @@ -821,7 +821,7 @@ Containers::Pointer AbstractImporter::doObject2D(const UnsignedInt UnsignedInt instance; if(camera) { instanceType = ObjectInstanceType2D::Camera; - instance = *camera; + instance = camera.front(); } else { instanceType = ObjectInstanceType2D::Empty; instance = UnsignedInt(-1); /* Old APIs, you suck! */ @@ -993,7 +993,7 @@ Containers::Pointer AbstractImporter::doObject3D(const UnsignedInt new MeshObjectData3D{Utility::move(children), *transformation, mesh.front().first(), mesh.front().second(), - skin ? Int(*skin) : -1, + skin.isEmpty() ? -1 : Int(skin.front()), importerState ? *importerState : nullptr}); } @@ -1001,10 +1001,10 @@ Containers::Pointer AbstractImporter::doObject3D(const UnsignedInt UnsignedInt instance; if(camera) { instanceType = ObjectInstanceType3D::Camera; - instance = *camera; + instance = camera.front(); } else if(light) { instanceType = ObjectInstanceType3D::Light; - instance = *light; + instance = light.front(); } else { instanceType = ObjectInstanceType3D::Empty; instance = UnsignedInt(-1); /* Old APIs, you suck! */ diff --git a/src/Magnum/Trade/Implementation/arrayUtilities.h b/src/Magnum/Trade/Implementation/arrayUtilities.h index 724412e6e..f1508d338 100644 --- a/src/Magnum/Trade/Implementation/arrayUtilities.h +++ b/src/Magnum/Trade/Implementation/arrayUtilities.h @@ -38,7 +38,7 @@ namespace Magnum { namespace Trade { namespace Implementation { /** @todo isn't there some C++56 feature that would allow me to allocate without calling constructors? */ template Containers::Array initializerListToArrayWithDefaultDeleter(const std::initializer_list list) { - Containers::Array out{list.size()}; + Containers::Array out{ValueInit, list.size()}; /* FFS why initializer list doesn't have an operator[] */ std::size_t i = 0; for(auto&& item: list) diff --git a/src/Magnum/Trade/MaterialData.cpp b/src/Magnum/Trade/MaterialData.cpp index f0f2a2cac..cd4c3a058 100644 --- a/src/Magnum/Trade/MaterialData.cpp +++ b/src/Magnum/Trade/MaterialData.cpp @@ -300,7 +300,7 @@ MaterialData::MaterialData(const MaterialTypes types, Containers::Array MeshData::jointIdsAsArray(const UnsignedInt id) c CORRADE_ASSERT(attributeId != ~UnsignedInt{}, "Trade::MeshData::jointIdsAsArray(): index" << id << "out of range for" << attributeCount(MeshAttribute::JointIds) << "joint ID attributes", {}); const MeshAttributeData& attribute = _attributes[attributeId]; - Containers::Array out{_vertexCount*attribute._arraySize}; + Containers::Array out{NoInit, _vertexCount*attribute._arraySize}; jointIdsInto(Containers::StridedArrayView2D{out, {_vertexCount, attribute._arraySize}}, id); return out; } @@ -1052,7 +1052,7 @@ Containers::Array MeshData::weightsAsArray(const UnsignedInt id) const { const UnsignedInt attributeId = findAttributeIdInternal(MeshAttribute::Weights, id, -1); CORRADE_ASSERT(attributeId != ~UnsignedInt{}, "Trade::MeshData::weightsAsArray(): index" << id << "out of range for" << attributeCount(MeshAttribute::JointIds) << "weight attributes", {}); const MeshAttributeData& attribute = _attributes[attributeId]; - Containers::Array out{_vertexCount*attribute._arraySize}; + Containers::Array out{NoInit, _vertexCount*attribute._arraySize}; weightsInto(Containers::StridedArrayView2D{out, {_vertexCount, attribute._arraySize}}, id); return out; } diff --git a/src/Magnum/Trade/SceneData.cpp b/src/Magnum/Trade/SceneData.cpp index 1321ca373..82faf579a 100644 --- a/src/Magnum/Trade/SceneData.cpp +++ b/src/Magnum/Trade/SceneData.cpp @@ -736,7 +736,7 @@ Containers::StridedBitArrayView2D SceneFieldData::fieldBitData(const Containers: CORRADE_ASSERT(fieldType() == SceneFieldType::Bit, "Trade::SceneFieldData::fieldBitData(): the field is" << fieldType() << Debug::nospace << ", not a bit", {}); return Containers::StridedBitArrayView2D{ - {data, 0, data.size()*8}, + {data.data(), 0, data.size()*8}, _flags & SceneFieldFlag::OffsetOnly ? static_cast(data.data()) + _fieldData.offset : _fieldData.pointer, _field.data.bitOffset, {std::size_t(_size), _field.data.arraySize ? _field.data.arraySize : 1}, {_field.data.stride, 1}}; @@ -1060,7 +1060,7 @@ SceneData::SceneData(std::vector children2D, std::vector{1}; + _fields = Containers::Array{ValueInit, 1}; _fields[0] = SceneFieldData{SceneField::Parent, mapping, parents}; Utility::copy(children, mapping); constexpr Int parent[]{-1}; diff --git a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp index 6a012e79d..94d92e782 100644 --- a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp @@ -967,7 +967,7 @@ void AbstractImageConverterTest::convert1D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert1D; } Containers::Optional doConvert(const ImageView1D& image) override { - return ImageData1D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{16}}; + return ImageData1D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{NoInit, 16}}; } } converter; @@ -982,7 +982,7 @@ void AbstractImageConverterTest::convert2D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2D; } Containers::Optional doConvert(const ImageView2D& image) override { - return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{96}}; + return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1000,7 +1000,7 @@ void AbstractImageConverterTest::convert2DDeprecated() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2D; } Containers::Optional doConvert(const ImageView2D& image) override { - return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{96}}; + return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1016,7 +1016,7 @@ void AbstractImageConverterTest::convert2DDeprecatedInvalid() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2D; } Containers::Optional doConvert(const ImageView2D& image) override { - return ImageData2D{CompressedPixelFormat::Bc1RGBAUnorm, image.size(), Containers::Array{96}}; + return ImageData2D{CompressedPixelFormat::Bc1RGBAUnorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1034,7 +1034,7 @@ void AbstractImageConverterTest::convert2DDeprecatedCompressed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2D; } Containers::Optional doConvert(const ImageView2D& image) override { - return ImageData2D{CompressedPixelFormat::Bc1RGBAUnorm, image.size(), Containers::Array{96}}; + return ImageData2D{CompressedPixelFormat::Bc1RGBAUnorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1050,7 +1050,7 @@ void AbstractImageConverterTest::convert2DDeprecatedCompressedInvalid() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2D; } Containers::Optional doConvert(const ImageView2D& image) override { - return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{96}}; + return ImageData2D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1067,7 +1067,7 @@ void AbstractImageConverterTest::convert3D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert3D; } Containers::Optional doConvert(const ImageView3D& image) override { - return ImageData3D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{96}}; + return ImageData3D{PixelFormat::RGBA8Unorm, image.size(), Containers::Array{NoInit, 96}}; } } converter; @@ -1260,7 +1260,7 @@ void AbstractImageConverterTest::convertCompressed1D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed1D; } Containers::Optional doConvert(const CompressedImageView1D& image) override { - return ImageData1D{image.format(), image.size(), Containers::Array{64}}; + return ImageData1D{image.format(), image.size(), Containers::Array{NoInit, 64}}; } } converter; @@ -1275,7 +1275,7 @@ void AbstractImageConverterTest::convertCompressed2D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed2D; } Containers::Optional doConvert(const CompressedImageView2D& image) override { - return ImageData2D{image.format(), image.size(), Containers::Array{64}}; + return ImageData2D{image.format(), image.size(), Containers::Array{NoInit, 64}}; } } converter; @@ -1290,7 +1290,7 @@ void AbstractImageConverterTest::convertCompressed3D() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed3D; } Containers::Optional doConvert(const CompressedImageView3D& image) override { - return ImageData3D{image.format(), image.size(), Containers::Array{64}}; + return ImageData3D{image.format(), image.size(), Containers::Array{NoInit, 64}}; } } converter; @@ -2273,7 +2273,7 @@ void AbstractImageConverterTest::convertImageData1DToData() { /* Should get "B" when converting uncompressed */ { - Containers::Optional> out = converter.convertToData(ImageData1D{PixelFormat::RGBA8Unorm, 1, Containers::Array{4}}); + Containers::Optional> out = converter.convertToData(ImageData1D{PixelFormat::RGBA8Unorm, 1, Containers::Array{NoInit, 4}}); CORRADE_VERIFY(out); CORRADE_COMPARE_AS(*out, Containers::arrayView({'B'}), @@ -2282,7 +2282,7 @@ void AbstractImageConverterTest::convertImageData1DToData() { /* Should get "C" when converting compressed */ { - Containers::Optional> out = converter.convertToData(ImageData1D{CompressedPixelFormat::Bc1RGBUnorm, 4, Containers::Array{8}}); + Containers::Optional> out = converter.convertToData(ImageData1D{CompressedPixelFormat::Bc1RGBUnorm, 4, Containers::Array{NoInit, 8}}); CORRADE_VERIFY(out); CORRADE_COMPARE_AS(*out, Containers::arrayView({'C'}), @@ -2295,7 +2295,7 @@ void AbstractImageConverterTest::convertImageData2DToData() { /* Should get "B" when converting uncompressed */ { - Containers::Optional> out = converter.convertToData(ImageData2D{PixelFormat::RGBA8Unorm, {1, 1}, Containers::Array{4}}); + Containers::Optional> out = converter.convertToData(ImageData2D{PixelFormat::RGBA8Unorm, {1, 1}, Containers::Array{NoInit, 4}}); CORRADE_VERIFY(out); CORRADE_COMPARE_AS(*out, Containers::arrayView({'B'}), @@ -2321,7 +2321,7 @@ void AbstractImageConverterTest::convertImageData2DToDataDeprecated() { /* Should get "B" when converting uncompressed */ { CORRADE_IGNORE_DEPRECATED_PUSH - Containers::Array out = converter.exportToData(ImageData2D{PixelFormat::RGBA8Unorm, {1, 1}, Containers::Array{4}}); + Containers::Array out = converter.exportToData(ImageData2D{PixelFormat::RGBA8Unorm, {1, 1}, Containers::Array{NoInit, 4}}); CORRADE_IGNORE_DEPRECATED_POP CORRADE_VERIFY(out); CORRADE_COMPARE_AS(out, @@ -2347,7 +2347,7 @@ void AbstractImageConverterTest::convertImageData3DToData() { /* Should get "B" when converting uncompressed */ { - Containers::Optional> out = converter.convertToData(ImageData3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, Containers::Array{4}}); + Containers::Optional> out = converter.convertToData(ImageData3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, Containers::Array{NoInit, 4}}); CORRADE_VERIFY(out); CORRADE_COMPARE_AS(*out, Containers::arrayView({'B'}), @@ -3530,7 +3530,7 @@ void AbstractImageConverterTest::convert1DToFile() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{NoInit, 0x0f*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f", TestSuite::Compare::FileToString); } @@ -3549,7 +3549,7 @@ void AbstractImageConverterTest::convert2DToFile() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d", TestSuite::Compare::FileToString); } @@ -3572,7 +3572,7 @@ void AbstractImageConverterTest::convert2DToFileDeprecated() { CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_IGNORE_DEPRECATED_PUSH - CORRADE_VERIFY(converter.exportToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, filename)); + CORRADE_VERIFY(converter.exportToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}}, filename)); CORRADE_IGNORE_DEPRECATED_POP CORRADE_COMPARE_AS(filename, "\x0f\x0d", TestSuite::Compare::FileToString); @@ -3593,7 +3593,7 @@ void AbstractImageConverterTest::convert3DToFile() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{0x0f*0x0d*0x02*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{NoInit, 0x0f*0x0d*0x02*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d\x02", TestSuite::Compare::FileToString); } @@ -3711,7 +3711,7 @@ void AbstractImageConverterTest::convert1DToFileThroughData() { CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ - CORRADE_VERIFY(converter.convertToFile(ImageView1D(PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}), filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView1D(PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{NoInit, 0x0f*4}), filename)); CORRADE_COMPARE_AS(filename, "\x0f", TestSuite::Compare::FileToString); } @@ -3731,7 +3731,7 @@ void AbstractImageConverterTest::convert2DToFileThroughData() { CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ - CORRADE_VERIFY(converter.convertToFile(ImageView2D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}), filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView2D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}), filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d", TestSuite::Compare::FileToString); } @@ -3751,7 +3751,7 @@ void AbstractImageConverterTest::convert3DToFileThroughData() { CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ - CORRADE_VERIFY(converter.convertToFile(ImageView3D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{0x0f*0x0d*0x02*4}), filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView3D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{NoInit, 0x0f*0x0d*0x02*4}), filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d\x02", TestSuite::Compare::FileToString); } @@ -3992,7 +3992,7 @@ void AbstractImageConverterTest::convertCompressed1DToFile() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); + CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{NoInit, 64}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f", TestSuite::Compare::FileToString); } @@ -4174,7 +4174,7 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughData() { CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ - CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); + CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{NoInit, 64}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f", TestSuite::Compare::FileToString); } @@ -4445,7 +4445,7 @@ void AbstractImageConverterTest::convertImageData1DToFile() { ImageData1DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData1D{PixelFormat::RGBA16F, 1, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_VERIFY(converter.convertToFile(ImageData1D{PixelFormat::RGBA16F, 1, Containers::Array{NoInit, 8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); @@ -4459,7 +4459,7 @@ void AbstractImageConverterTest::convertImageData2DToFile() { ImageData2DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_VERIFY(converter.convertToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{NoInit, 8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); @@ -4477,7 +4477,7 @@ void AbstractImageConverterTest::convertImageData2DToFileDeprecated() { /* Should get "B" when converting uncompressed */ CORRADE_IGNORE_DEPRECATED_PUSH - CORRADE_VERIFY(converter.exportToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_VERIFY(converter.exportToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{NoInit, 8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); CORRADE_IGNORE_DEPRECATED_POP CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); @@ -4495,7 +4495,7 @@ void AbstractImageConverterTest::convertImageData3DToFile() { ImageData3DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData3D{PixelFormat::RGBA16F, {1, 1, 1}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_VERIFY(converter.convertToFile(ImageData3D{PixelFormat::RGBA16F, {1, 1, 1}, Containers::Array{NoInit, 8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); @@ -4652,7 +4652,7 @@ void AbstractImageConverterTest::convertLevels1DToFile() { const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ - ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, + ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{NoInit, 0x0f*4}}, ImageView1D{PixelFormat::RGBA8Unorm, 1, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -4679,7 +4679,7 @@ void AbstractImageConverterTest::convertLevels2DToFile() { const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ - ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, + ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}}, ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -4706,7 +4706,7 @@ void AbstractImageConverterTest::convertLevels3DToFile() { const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ - ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{0x0f*0x0d*0x0e*4}}, + ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{NoInit, 0x0f*0x0d*0x0e*4}}, ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -4807,7 +4807,7 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughData() { /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ - ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, + ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{NoInit, 0x0f*4}}, ImageView1D{PixelFormat::RGBA8Unorm, 1, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -4835,7 +4835,7 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughData() { /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ - ImageView2D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}), + ImageView2D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}), ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -4863,7 +4863,7 @@ void AbstractImageConverterTest::convertLevels3DToFileThroughData() { /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ - ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{0x0f*0x0d*0x0e*4}}, + ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{NoInit, 0x0f*0x0d*0x0e*4}}, ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -5146,7 +5146,7 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFile() { const char data[8]{}; CORRADE_VERIFY(converter.convertToFile({ - CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, + CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{NoInit, 64}}, CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -5298,7 +5298,7 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughData() { /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ - CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, + CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{NoInit, 64}}, CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data} }, filename)); CORRADE_COMPARE_AS(filename, @@ -5636,7 +5636,7 @@ void AbstractImageConverterTest::convert1DToFileThroughLevels() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{NoInit, 0x0f*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x01", TestSuite::Compare::FileToString); } @@ -5658,7 +5658,7 @@ void AbstractImageConverterTest::convert2DToFileThroughLevels() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{NoInit, 0x0f*0x0d*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d\x01", TestSuite::Compare::FileToString); } @@ -5680,7 +5680,7 @@ void AbstractImageConverterTest::convert3DToFileThroughLevels() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{0x0f*0x0d*0x0e*4}}, filename)); + CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{NoInit, 0x0f*0x0d*0x0e*4}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x0d\x0e\x01", TestSuite::Compare::FileToString); } @@ -5774,7 +5774,7 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughLevels() { if(Utility::Path::exists(filename)) CORRADE_VERIFY(Utility::Path::remove(filename)); - CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); + CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{NoInit, 64}}, filename)); CORRADE_COMPARE_AS(filename, "\x0f\x01", TestSuite::Compare::FileToString); } diff --git a/src/Magnum/Trade/Test/AbstractImporterTest.cpp b/src/Magnum/Trade/Test/AbstractImporterTest.cpp index 9b48efde5..75f0bbf0b 100644 --- a/src/Magnum/Trade/Test/AbstractImporterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImporterTest.cpp @@ -4049,8 +4049,8 @@ void AbstractImporterTest::sceneNonOwningDeleters() { auto data = importer.scene(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->data()), importer.data); - CORRADE_COMPARE(static_cast(data->fieldData()), importer.fields); + CORRADE_COMPARE(static_cast(data->data().data()), importer.data); + CORRADE_COMPARE(static_cast(data->fieldData().data()), importer.fields); } void AbstractImporterTest::sceneCustomDataDeleter() { @@ -4373,7 +4373,7 @@ void AbstractImporterTest::animationNonOwningDeleters() { auto data = importer.animation(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->data()), importer.data); + CORRADE_COMPARE(static_cast(data->data().data()), importer.data); } void AbstractImporterTest::animationGrowableDeleters() { @@ -5578,8 +5578,8 @@ void AbstractImporterTest::skin2DNonOwningDeleters() { Error redirectError{&out}; auto data = importer.skin2D(0); - CORRADE_COMPARE(data->joints(), importer.jointData); - CORRADE_COMPARE(data->inverseBindMatrices(), importer.inverseBindMatrixData); + CORRADE_COMPARE(data->joints().data(), importer.jointData); + CORRADE_COMPARE(data->inverseBindMatrices().data(), importer.inverseBindMatrixData); } void AbstractImporterTest::skin2DCustomJointDataDeleter() { @@ -5593,7 +5593,7 @@ void AbstractImporterTest::skin2DCustomJointDataDeleter() { UnsignedInt doSkin2DCount() const override { return 1; } Int doSkin2DForName(Containers::StringView) override { return 0; } Containers::Optional doSkin2D(UnsignedInt) override { - return SkinData2D{Containers::Array{jointData, 1, [](UnsignedInt*, std::size_t){}}, Containers::Array{1}}; + return SkinData2D{Containers::Array{jointData, 1, [](UnsignedInt*, std::size_t){}}, Containers::Array{NoInit, 1}}; } UnsignedInt jointData[1]{}; @@ -5620,7 +5620,7 @@ void AbstractImporterTest::skin2DCustomInverseBindMatrixDataDeleter() { UnsignedInt doSkin2DCount() const override { return 1; } Int doSkin2DForName(Containers::StringView) override { return 0; } Containers::Optional doSkin2D(UnsignedInt) override { - return SkinData2D{Containers::Array{1}, Containers::Array{inverseBindMatrixData, 1, [](Matrix3*, std::size_t){}}}; + return SkinData2D{Containers::Array{NoInit, 1}, Containers::Array{inverseBindMatrixData, 1, [](Matrix3*, std::size_t){}}}; } Matrix3 inverseBindMatrixData[1]{}; @@ -5825,8 +5825,8 @@ void AbstractImporterTest::skin3DNonOwningDeleters() { Error redirectError{&out}; auto data = importer.skin3D(0); - CORRADE_COMPARE(data->joints(), importer.jointData); - CORRADE_COMPARE(data->inverseBindMatrices(), importer.inverseBindMatrixData); + CORRADE_COMPARE(data->joints().data(), importer.jointData); + CORRADE_COMPARE(data->inverseBindMatrices().data(), importer.inverseBindMatrixData); } void AbstractImporterTest::skin3DCustomJointDataDeleter() { @@ -5840,7 +5840,7 @@ void AbstractImporterTest::skin3DCustomJointDataDeleter() { UnsignedInt doSkin3DCount() const override { return 1; } Int doSkin3DForName(Containers::StringView) override { return 0; } Containers::Optional doSkin3D(UnsignedInt) override { - return SkinData3D{Containers::Array{jointData, 1, [](UnsignedInt*, std::size_t){}}, Containers::Array{1}}; + return SkinData3D{Containers::Array{jointData, 1, [](UnsignedInt*, std::size_t){}}, Containers::Array{NoInit, 1}}; } UnsignedInt jointData[1]{}; @@ -5867,7 +5867,7 @@ void AbstractImporterTest::skin3DCustomInverseBindMatrixDataDeleter() { UnsignedInt doSkin3DCount() const override { return 1; } Int doSkin3DForName(Containers::StringView) override { return 0; } Containers::Optional doSkin3D(UnsignedInt) override { - return SkinData3D{Containers::Array{1}, Containers::Array{inverseBindMatrixData, 1, [](Matrix4*, std::size_t){}}}; + return SkinData3D{Containers::Array{NoInit, 1}, Containers::Array{inverseBindMatrixData, 1, [](Matrix4*, std::size_t){}}}; } Matrix4 inverseBindMatrixData[1]{}; @@ -6197,7 +6197,7 @@ void AbstractImporterTest::meshNonOwningDeleters() { auto data = importer.mesh(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->indexData()), importer.indexData); + CORRADE_COMPARE(static_cast(data->indexData().data()), importer.indexData); } void AbstractImporterTest::meshGrowableDeleters() { @@ -7027,8 +7027,8 @@ void AbstractImporterTest::materialNonOwningDeleters() { auto data = importer.material(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->attributeData()), importer.attributeData); - CORRADE_COMPARE(static_cast(data->layerData()), importer.layerData); + CORRADE_COMPARE(static_cast(data->attributeData().data()), importer.attributeData); + CORRADE_COMPARE(static_cast(data->layerData().data()), importer.layerData); } void AbstractImporterTest::materialCustomAttributeDataDeleter() { @@ -7518,7 +7518,7 @@ void AbstractImporterTest::image1DNonOwningDeleter() { auto data = importer.image1D(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->data()), importer.data); + CORRADE_COMPARE(static_cast(data->data().data()), importer.data); } void AbstractImporterTest::image1DGrowableDeleter() { @@ -7830,7 +7830,7 @@ void AbstractImporterTest::image2DNonOwningDeleter() { auto data = importer.image2D(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->data()), importer.data); + CORRADE_COMPARE(static_cast(data->data().data()), importer.data); } void AbstractImporterTest::image2DGrowableDeleter() { @@ -8142,7 +8142,7 @@ void AbstractImporterTest::image3DNonOwningDeleter() { auto data = importer.image3D(0); CORRADE_VERIFY(data); - CORRADE_COMPARE(static_cast(data->data()), importer.data); + CORRADE_COMPARE(static_cast(data->data().data()), importer.data); } void AbstractImporterTest::image3DGrowableDeleter() { diff --git a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp index e73ab7559..10110c288 100644 --- a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp @@ -1437,7 +1437,7 @@ void AbstractSceneConverterTest::convertMeshNonOwningDeleters() { Containers::Optional out = converter.convert(MeshData{MeshPrimitive::Triangles, 6}); CORRADE_VERIFY(out); - CORRADE_COMPARE(static_cast(out->indexData()), converter.indexData); + CORRADE_COMPARE(static_cast(out->indexData().data()), converter.indexData); } void AbstractSceneConverterTest::convertMeshGrowableDeleters() { diff --git a/src/Magnum/Trade/Test/AnimationDataTest.cpp b/src/Magnum/Trade/Test/AnimationDataTest.cpp index 6af844855..418954881 100644 --- a/src/Magnum/Trade/Test/AnimationDataTest.cpp +++ b/src/Magnum/Trade/Test/AnimationDataTest.cpp @@ -679,7 +679,7 @@ void AnimationDataTest::construct() { Vector3 position; Quaternion rotation; }; - Containers::Array buffer{sizeof(Data)*3}; + Containers::Array buffer{NoInit, sizeof(Data)*3}; auto view = Containers::arrayCast(buffer); view[0] = {0.0f, {3.0f, 1.0f, 0.1f}, Quaternion::rotation(45.0_degf, Vector3::yAxis())}; view[1] = {5.0f, {0.3f, 0.6f, 1.0f}, Quaternion::rotation(20.0_degf, Vector3::yAxis())}; @@ -758,7 +758,7 @@ void AnimationDataTest::constructImplicitDuration() { Float time; bool value; }; - Containers::Array buffer{sizeof(Data)*4}; + Containers::Array buffer{NoInit, sizeof(Data)*4}; auto view = Containers::arrayCast(buffer); view[0] = {1.0f, true}; view[1] = {5.0f, false}; @@ -951,7 +951,7 @@ void AnimationDataTest::constructMove() { Vector3 position; Quaternion rotation; }; - Containers::Array buffer{sizeof(Data)*3}; + Containers::Array buffer{NoInit, sizeof(Data)*3}; auto view = Containers::arrayCast(buffer); view[0] = {0.0f, {3.0f, 1.0f, 0.1f}, Quaternion::rotation(45.0_degf, Vector3::yAxis())}; view[1] = {5.0f, {0.3f, 0.6f, 1.0f}, Quaternion::rotation(20.0_degf, Vector3::yAxis())}; @@ -1073,7 +1073,7 @@ void AnimationDataTest::trackCustomResultType() { Float time; Vector3i position; }; - Containers::Array buffer{sizeof(Data)*3}; + Containers::Array buffer{NoInit, sizeof(Data)*3}; auto view = Containers::arrayCast(buffer); view[0] = {0.0f, {300, 100, 10}}; view[1] = {5.0f, {30, 60, 100}}; @@ -1159,7 +1159,7 @@ void AnimationDataTest::release() { CORRADE_COMPARE(data.trackCount(), 1); Containers::Array released = data.release(); - CORRADE_COMPARE(data.data(), static_cast(nullptr)); + CORRADE_COMPARE(data.data().data(), static_cast(nullptr)); CORRADE_COMPARE(data.trackCount(), 0); CORRADE_COMPARE(static_cast(released.data()), keyframes); } diff --git a/src/Magnum/Trade/Test/ImageDataTest.cpp b/src/Magnum/Trade/Test/ImageDataTest.cpp index 8bcddb933..ee03e901e 100644 --- a/src/Magnum/Trade/Test/ImageDataTest.cpp +++ b/src/Magnum/Trade/Test/ImageDataTest.cpp @@ -1318,7 +1318,7 @@ void ImageDataTest::constructInvalidSize() { Error redirectError{&out}; /* Doesn't consider alignment */ - ImageData2D{PixelFormat::RGB8Unorm, {1, 3}, Containers::Array{3*3}}; + ImageData2D{PixelFormat::RGB8Unorm, {1, 3}, Containers::Array{NoInit, 3*3}}; CORRADE_COMPARE(out, "Trade::ImageData: data too small, got 9 but expected at least 12 bytes\n"); } @@ -1327,10 +1327,10 @@ void ImageDataTest::constructInvalidCubeMap() { Containers::String out; Error redirectError{&out}; - ImageData3D{PixelFormat::RGBA8Unorm, {3, 3, 5}, Containers::Array{3*3*5*4}, ImageFlag3D::CubeMap}; - ImageData3D{PixelFormat::RGBA8Unorm, {3, 4, 6}, Containers::Array{3*4*6*4}, ImageFlag3D::CubeMap}; - ImageData3D{PixelFormat::RGBA8Unorm, {3, 3, 17}, Containers::Array{3*3*17*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; - ImageData3D{PixelFormat::RGBA8Unorm, {4, 3, 18}, Containers::Array{4*3*18*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + ImageData3D{PixelFormat::RGBA8Unorm, {3, 3, 5}, Containers::Array{NoInit, 3*3*5*4}, ImageFlag3D::CubeMap}; + ImageData3D{PixelFormat::RGBA8Unorm, {3, 4, 6}, Containers::Array{NoInit, 3*4*6*4}, ImageFlag3D::CubeMap}; + ImageData3D{PixelFormat::RGBA8Unorm, {3, 3, 17}, Containers::Array{NoInit, 3*3*17*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + ImageData3D{PixelFormat::RGBA8Unorm, {4, 3, 18}, Containers::Array{NoInit, 4*3*18*4}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; CORRADE_COMPARE(out, "Trade::ImageData: expected exactly 6 faces for a cube map, got 5\n" "Trade::ImageData: expected square faces for a cube map, got {3, 4}\n" @@ -1416,14 +1416,14 @@ void ImageDataTest::constructCompressedInvalidSize() { { Containers::String out; Error redirectError{&out}; - ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{15}}; + ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{NoInit, 15}}; CORRADE_COMPARE(out, "Trade::ImageData: data too small, got 15 but expected at least 16 bytes\n"); /* Size should be rounded up even if the image size is not full block */ } { Containers::String out; Error redirectError{&out}; - ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{15}}; + ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {2, 2}, Containers::Array{NoInit, 15}}; CORRADE_COMPARE(out, "Trade::ImageData: data too small, got 15 but expected at least 16 bytes\n"); } } @@ -1433,10 +1433,10 @@ void ImageDataTest::constructCompressedInvalidCubeMap() { Containers::String out; Error redirectError{&out}; - ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 5}, Containers::Array{8*5}, ImageFlag3D::CubeMap}; - ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 4, 6}, Containers::Array{8*6}, ImageFlag3D::CubeMap}; - ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 17}, Containers::Array{8*17}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; - ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 3, 18}, Containers::Array{8*18}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 5}, Containers::Array{NoInit, 8*5}, ImageFlag3D::CubeMap}; + ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 4, 6}, Containers::Array{NoInit, 8*6}, ImageFlag3D::CubeMap}; + ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {3, 3, 17}, Containers::Array{NoInit, 8*17}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; + ImageData3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 3, 18}, Containers::Array{NoInit, 8*18}, ImageFlag3D::CubeMap |ImageFlag3D::Array}; CORRADE_COMPARE(out, "Trade::ImageData: expected exactly 6 faces for a cube map, got 5\n" "Trade::ImageData: expected square faces for a cube map, got {3, 4}\n" @@ -1456,7 +1456,7 @@ void ImageDataTest::constructMoveGeneric() { PixelFormat::RGBA32F, {1, 3}, Containers::Array{data, 3*16}, ImageFlag2D::Array, &state}; ImageData2D b(Utility::move(a)); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1467,7 +1467,7 @@ void ImageDataTest::constructMoveGeneric() { CORRADE_COMPARE(b.formatExtra(), 0); CORRADE_COMPARE(b.pixelSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*16); CORRADE_COMPARE(b.importerState(), &state); @@ -1475,7 +1475,7 @@ void ImageDataTest::constructMoveGeneric() { ImageData2D c{PixelFormat::R8I, {2, 6}, Containers::Array{data2, 24}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{2, 6})); CORRADE_COMPARE(c.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1486,7 +1486,7 @@ void ImageDataTest::constructMoveGeneric() { CORRADE_COMPARE(c.formatExtra(), 0); CORRADE_COMPARE(c.pixelSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 3*16); CORRADE_COMPARE(c.importerState(), &state); @@ -1501,7 +1501,7 @@ void ImageDataTest::constructMoveImplementationSpecific() { GL::PixelFormat::RGB, GL::PixelType::UnsignedShort, {1, 3}, Containers::Array{data, 3*6}, ImageFlag2D::Array, &state}; ImageData2D b(Utility::move(a)); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1512,7 +1512,7 @@ void ImageDataTest::constructMoveImplementationSpecific() { CORRADE_COMPARE(b.formatExtra(), 1337); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); CORRADE_COMPARE(b.importerState(), &state); @@ -1521,7 +1521,7 @@ void ImageDataTest::constructMoveImplementationSpecific() { 1, 2, 8, {2, 6}, Containers::Array{data2, 12*4*2}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), Vector2i(2, 6)); CORRADE_COMPARE(c.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1532,7 +1532,7 @@ void ImageDataTest::constructMoveImplementationSpecific() { CORRADE_COMPARE(c.formatExtra(), 1337); CORRADE_COMPARE(c.pixelSize(), 6); CORRADE_COMPARE(c.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 3*6); CORRADE_COMPARE(c.importerState(), &state); } @@ -1546,7 +1546,7 @@ void ImageDataTest::constructMoveCompressedGeneric() { Containers::Array{data, 8*16}, ImageFlag2D::Array, &state}; ImageData2D b{Utility::move(a)}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1557,7 +1557,7 @@ void ImageDataTest::constructMoveCompressedGeneric() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); CORRADE_COMPARE(b.importerState(), &state); @@ -1565,7 +1565,7 @@ void ImageDataTest::constructMoveCompressedGeneric() { ImageData2D c{CompressedPixelFormat::Bc1RGBAUnorm, {8, 4}, Containers::Array{data2, 16}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{8, 4})); CORRADE_COMPARE(c.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1576,7 +1576,7 @@ void ImageDataTest::constructMoveCompressedGeneric() { CORRADE_COMPARE(c.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(c.blockDataSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 8*16); CORRADE_COMPARE(c.importerState(), &state); } @@ -1590,7 +1590,7 @@ void ImageDataTest::constructMoveCompressedImplementationSpecific() { Containers::Array{data, 8*16}, ImageFlag2D::Array, &state}; ImageData2D b{Utility::move(a)}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1601,7 +1601,7 @@ void ImageDataTest::constructMoveCompressedImplementationSpecific() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); CORRADE_COMPARE(b.importerState(), &state); @@ -1609,7 +1609,7 @@ void ImageDataTest::constructMoveCompressedImplementationSpecific() { ImageData2D c{CompressedPixelFormat::Bc1RGBAUnorm, {8, 4}, Containers::Array{data2, 16}}; c = Utility::move(b); - CORRADE_COMPARE(b.data(), static_cast(data2)); + CORRADE_COMPARE(b.data().data(), static_cast(data2)); CORRADE_COMPARE(b.size(), (Vector2i{8, 4})); CORRADE_COMPARE(c.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1620,7 +1620,7 @@ void ImageDataTest::constructMoveCompressedImplementationSpecific() { CORRADE_COMPARE(c.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(c.blockDataSize(), 16); CORRADE_COMPARE(c.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(c.data(), static_cast(data)); + CORRADE_COMPARE(c.data().data(), static_cast(data)); CORRADE_COMPARE(c.data().size(), 8*16); CORRADE_COMPARE(c.importerState(), &state); } @@ -1633,7 +1633,7 @@ void ImageDataTest::constructMoveAttachState() { GL::PixelFormat::RGB, GL::PixelType::UnsignedShort, {1, 3}, Containers::Array{data, 3*6}, ImageFlag2D::Array, &stateOld}; ImageData2D b{Utility::move(a), &stateNew}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1644,7 +1644,7 @@ void ImageDataTest::constructMoveAttachState() { CORRADE_COMPARE(b.formatExtra(), 1337); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 3*6); CORRADE_COMPARE(b.importerState(), &stateNew); } @@ -1659,7 +1659,7 @@ void ImageDataTest::constructMoveCompressedAttachState() { Containers::Array{data, 8*8}, ImageFlag2D::Array, &stateOld}; ImageData2D b{Utility::move(a), &stateNew}; - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i{}); CORRADE_COMPARE(b.dataFlags(), DataFlag::Owned|DataFlag::Mutable); @@ -1670,7 +1670,7 @@ void ImageDataTest::constructMoveCompressedAttachState() { CORRADE_COMPARE(b.blockSize(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(b.blockDataSize(), 8); CORRADE_COMPARE(b.size(), (Vector2i{12, 8})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*8); CORRADE_COMPARE(b.importerState(), &stateNew); } @@ -1712,7 +1712,7 @@ void ImageDataTest::moveCompressedToUncompressed() { CORRADE_COMPARE(a.formatExtra(), 0x12345678); CORRADE_COMPARE(a.pixelSize(), 1); CORRADE_COMPARE(a.size(), (Vector2i{2, 5})); - CORRADE_COMPARE(a.data(), static_cast(data2)); + CORRADE_COMPARE(a.data().data(), static_cast(data2)); CORRADE_COMPARE(a.data().size(), 24); CORRADE_COMPARE(a.importerState(), &state2); @@ -1726,7 +1726,7 @@ void ImageDataTest::moveCompressedToUncompressed() { CORRADE_COMPARE(b.compressedStorage().compressedBlockDataSize(), 16); CORRADE_COMPARE(b.compressedFormat(), CompressedPixelFormat::Bc3RGBAUnorm); CORRADE_COMPARE(b.size(), (Vector2i{4, 4})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); CORRADE_COMPARE(b.importerState(), &state); } @@ -1767,7 +1767,7 @@ void ImageDataTest::moveUncompressedToCompressed() { CORRADE_COMPARE(a.compressedStorage().compressedBlockDataSize(), 16); CORRADE_COMPARE(a.compressedFormat(), CompressedPixelFormat::Bc3RGBAUnorm); CORRADE_COMPARE(a.size(), (Vector2i{4, 4})); - CORRADE_COMPARE(a.data(), static_cast(data2)); + CORRADE_COMPARE(a.data().data(), static_cast(data2)); CORRADE_COMPARE(a.data().size(), 8*16); CORRADE_COMPARE(a.importerState(), &state2); @@ -1782,7 +1782,7 @@ void ImageDataTest::moveUncompressedToCompressed() { CORRADE_COMPARE(b.formatExtra(), 0x12345678); CORRADE_COMPARE(b.pixelSize(), 1); CORRADE_COMPARE(b.size(), (Vector2i{2, 5})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 24); CORRADE_COMPARE(b.importerState(), &state); } @@ -1842,7 +1842,7 @@ template void ImageDataTest::toViewGeneric() { CORRADE_COMPARE(b.formatExtra(), 0); CORRADE_COMPARE(b.pixelSize(), 4); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); } template void ImageDataTest::toViewImplementationSpecific() { @@ -1859,7 +1859,7 @@ template void ImageDataTest::toViewImplementationSpecific() { CORRADE_COMPARE(b.formatExtra(), 1337); CORRADE_COMPARE(b.pixelSize(), 6); CORRADE_COMPARE(b.size(), (Vector2i{1, 3})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); } template void ImageDataTest::toViewCompressedGeneric() { @@ -1878,7 +1878,7 @@ template void ImageDataTest::toViewCompressedGeneric() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); } @@ -1898,7 +1898,7 @@ template void ImageDataTest::toViewCompressedImplementationSpecific() { CORRADE_COMPARE(b.blockSize(), (Vector3i{5, 5, 4})); CORRADE_COMPARE(b.blockDataSize(), 16); CORRADE_COMPARE(b.size(), (Vector2i{15, 10})); - CORRADE_COMPARE(b.data(), static_cast(data)); + CORRADE_COMPARE(b.data().data(), static_cast(data)); CORRADE_COMPARE(b.data().size(), 8*16); } @@ -1906,8 +1906,8 @@ void ImageDataTest::data() { auto data = new char[4*4]; ImageData2D a{PixelFormat::RGBA8Unorm, {1, 3}, Containers::Array{data, 4*4}}; const ImageData2D& ca = a; - CORRADE_COMPARE(a.data(), static_cast(data)); - CORRADE_COMPARE(ca.data(), static_cast(data)); + CORRADE_COMPARE(a.data().data(), static_cast(data)); + CORRADE_COMPARE(ca.data().data(), static_cast(data)); } void ImageDataTest::dataRvalue() { @@ -1951,7 +1951,7 @@ void ImageDataTest::dataProperties() { .setAlignment(8) .setSkip({3, 2, 1}), PixelFormat::R8Unorm, {2, 4, 6}, - Containers::Array{224}}; + Containers::Array{NoInit, 224}}; CORRADE_COMPARE(image.dataProperties(), (std::pair, Math::Vector3>{{3, 16, 32}, {8, 4, 6}})); } @@ -1974,7 +1974,7 @@ void ImageDataTest::release() { const char* const pointer = a.release().release(); CORRADE_COMPARE(pointer, data); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i()); } @@ -1984,7 +1984,7 @@ void ImageDataTest::releaseCompressed() { const char* const pointer = a.release().release(); CORRADE_COMPARE(pointer, data); - CORRADE_COMPARE(a.data(), static_cast(nullptr)); + CORRADE_COMPARE(a.data().data(), static_cast(nullptr)); CORRADE_COMPARE(a.size(), Vector2i()); } @@ -1994,7 +1994,7 @@ void ImageDataTest::pixels1D() { .setAlignment(1) /** @todo alignment 4 expects 17 bytes. what */ .setSkip({3, 0, 0}), PixelFormat::RGB8Unorm, 2, - Containers::Array{15}}; + Containers::Array{NoInit, 15}}; const ImageData1D& cimage = image; /* Full test is in ImageTest, this is just a sanity check */ @@ -2003,12 +2003,12 @@ void ImageDataTest::pixels1D() { Containers::StridedArrayView1D pixels = image.mutablePixels(); CORRADE_COMPARE(pixels.size(), 2); CORRADE_COMPARE(pixels.stride(), 3); - CORRADE_COMPARE(pixels.data(), image.data() + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 3*3); } { Containers::StridedArrayView1D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), 2); CORRADE_COMPARE(pixels.stride(), 3); - CORRADE_COMPARE(pixels.data(), cimage.data() + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 3*3); } } @@ -2019,7 +2019,7 @@ void ImageDataTest::pixels2D() { .setSkip({3, 2, 0}) .setRowLength(6), PixelFormat::RGB8Unorm, {2, 4}, - Containers::Array{120}}; + Containers::Array{NoInit, 120}}; const ImageData2D& cimage = image; /* Full test is in ImageTest, this is just a sanity check */ @@ -2028,12 +2028,12 @@ void ImageDataTest::pixels2D() { Containers::StridedArrayView2D pixels = image.mutablePixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size2D{4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride2D{20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 2*20 + 3*3); } { Containers::StridedArrayView2D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size2D{4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride2D{20, 3})); - CORRADE_COMPARE(pixels.data(), cimage.data() + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 2*20 + 3*3); } } @@ -2045,7 +2045,7 @@ void ImageDataTest::pixels3D() { .setRowLength(6) .setImageHeight(7), PixelFormat::RGB8Unorm, {2, 4, 3}, - Containers::Array{560}}; + Containers::Array{NoInit, 560}}; const ImageData3D& cimage = image; /* Full test is in ImageTest, this is just a sanity check */ @@ -2054,12 +2054,12 @@ void ImageDataTest::pixels3D() { Containers::StridedArrayView3D pixels = image.mutablePixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size3D{3, 4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride3D{140, 20, 3})); - CORRADE_COMPARE(pixels.data(), image.data() + 140 + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), image.data().data() + 140 + 2*20 + 3*3); } { Containers::StridedArrayView3D pixels = cimage.pixels(); CORRADE_COMPARE(pixels.size(), (Containers::Size3D{3, 4, 2})); CORRADE_COMPARE(pixels.stride(), (Containers::Stride3D{140, 20, 3})); - CORRADE_COMPARE(pixels.data(), cimage.data() + 140 + 2*20 + 3*3); + CORRADE_COMPARE(pixels.data(), cimage.data().data() + 140 + 2*20 + 3*3); } } diff --git a/src/Magnum/Trade/Test/MeshDataTest.cpp b/src/Magnum/Trade/Test/MeshDataTest.cpp index db371701a..41d1d2bb8 100644 --- a/src/Magnum/Trade/Test/MeshDataTest.cpp +++ b/src/Magnum/Trade/Test/MeshDataTest.cpp @@ -1607,13 +1607,13 @@ void MeshDataTest::construct() { Byte idMorphTarget[3]; }; - Containers::Array indexData{8*sizeof(UnsignedShort)}; + Containers::Array indexData{NoInit, 8*sizeof(UnsignedShort)}; auto indices = Containers::arrayCast(indexData).slice(1, 7); Utility::copy({0, 1, 2, 0, 2, 1}, indices); /* Enough vertex data to fit also the case with large explicit vertex count (but fill just the first 3, as those are only tested) */ - Containers::Array vertexData{17*sizeof(Vertex)}; + Containers::Array vertexData{NoInit, 17*sizeof(Vertex)}; auto vertices = stridedArrayView(Containers::arrayCast(vertexData)).prefix(3); Utility::copy({ {{0.1f, 0.2f, 0.3f}, @@ -1675,10 +1675,10 @@ void MeshDataTest::construct() { CORRADE_COMPARE(data.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.primitive(), MeshPrimitive::Triangles); CORRADE_VERIFY(!data.attributeData().isEmpty()); - CORRADE_COMPARE(static_cast(data.indexData() + 2), indices.data()); - CORRADE_COMPARE(static_cast(data.vertexData()), vertices.data()); - CORRADE_COMPARE(static_cast(data.mutableIndexData() + 2), indices.data()); - CORRADE_COMPARE(static_cast(data.mutableVertexData()), vertices.data()); + CORRADE_COMPARE(static_cast(data.indexData().data() + 2), indices.data()); + CORRADE_COMPARE(static_cast(data.vertexData().data()), vertices.data()); + CORRADE_COMPARE(static_cast(data.mutableIndexData().data() + 2), indices.data()); + CORRADE_COMPARE(static_cast(data.mutableVertexData().data()), vertices.data()); CORRADE_COMPARE(data.importerState(), &importerState); /* Index access */ @@ -2072,7 +2072,7 @@ void MeshDataTest::constructZeroIndices() { /* This is a valid use case because this could be an empty slice of a well-defined indexed mesh. Explicitly use a non-null zero-sized array to check the importer is checking size and not pointer. */ - Containers::Array vertexData{3*sizeof(Vector3)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vector3)}; auto vertices = Containers::arrayCast(vertexData); char i; Containers::Array indexData{&i, 0, [](char*, std::size_t){}}; @@ -2096,8 +2096,8 @@ void MeshDataTest::constructZeroAttributes() { /* This is a valid use case because e.g. the index/vertex data can be shared by multiple meshes and this particular one is just a plain index array */ - Containers::Array indexData{3*sizeof(UnsignedInt)}; - Containers::Array vertexData{3}; + Containers::Array indexData{ValueInit, 3*sizeof(UnsignedInt)}; + Containers::Array vertexData{NoInit, 3}; auto indices = Containers::arrayCast(indexData); MeshData data{MeshPrimitive::Triangles, Utility::move(indexData), MeshIndexData{indices}, @@ -2114,7 +2114,7 @@ void MeshDataTest::constructZeroAttributes() { void MeshDataTest::constructZeroVertices() { /* This is a valid use case because this could be an empty slice of a well-defined indexed mesh */ - Containers::Array indexData{3*sizeof(UnsignedInt)}; + Containers::Array indexData{ValueInit, 3*sizeof(UnsignedInt)}; auto indices = Containers::arrayCast(indexData); MeshData data{MeshPrimitive::Triangles, Utility::move(indexData), MeshIndexData{indices}, @@ -2133,7 +2133,7 @@ void MeshDataTest::constructZeroVertices() { } void MeshDataTest::constructIndexless() { - Containers::Array vertexData{3*sizeof(Vector2)}; + Containers::Array vertexData{NoInit, 3*sizeof(Vector2)}; auto vertices = Containers::arrayCast(vertexData); Utility::copy({ {0.1f, 0.2f}, @@ -2156,7 +2156,7 @@ void MeshDataTest::constructIndexless() { allowed, to allow creation of MeshData instances referencing other MeshData without having to branch on isIndexed(). */ CORRADE_VERIFY(!data.isIndexed()); - CORRADE_COMPARE(data.indexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.indexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.indices().data(), nullptr); CORRADE_COMPARE(data.indices().size(), (Containers::Size2D{0, 0})); CORRADE_COMPARE(data.mutableIndices().data(), nullptr); @@ -2173,8 +2173,8 @@ void MeshDataTest::constructIndexlessZeroVertices() { MeshAttributeData{MeshAttribute::Position, VertexFormat::Vector2, nullptr} }}; CORRADE_COMPARE(data.primitive(), MeshPrimitive::LineLoop); - CORRADE_COMPARE(data.indexData(), static_cast(nullptr)); - CORRADE_COMPARE(data.vertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.indexData().data(), static_cast(nullptr)); + CORRADE_COMPARE(data.vertexData().data(), static_cast(nullptr)); CORRADE_VERIFY(!data.isIndexed()); CORRADE_COMPARE(data.vertexCount(), 0); @@ -2183,7 +2183,7 @@ void MeshDataTest::constructIndexlessZeroVertices() { } void MeshDataTest::constructAttributeless() { - Containers::Array indexData{6*sizeof(UnsignedInt)}; + Containers::Array indexData{ValueInit, 6*sizeof(UnsignedInt)}; auto indices = Containers::arrayCast(indexData); Utility::copy({0, 1, 2, 0, 2, 1}, indices); @@ -2197,7 +2197,7 @@ void MeshDataTest::constructAttributeless() { CORRADE_COMPARE(data.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.primitive(), MeshPrimitive::TriangleStrip); CORRADE_VERIFY(!data.attributeData()); - CORRADE_COMPARE(data.vertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.vertexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(data.isIndexed()); @@ -2220,8 +2220,8 @@ void MeshDataTest::constructIndexlessAttributeless() { CORRADE_COMPARE(data.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.primitive(), MeshPrimitive::TriangleStrip); CORRADE_VERIFY(!data.attributeData()); - CORRADE_COMPARE(data.indexData(), static_cast(nullptr)); - CORRADE_COMPARE(data.vertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.indexData().data(), static_cast(nullptr)); + CORRADE_COMPARE(data.vertexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.importerState(), &state); CORRADE_VERIFY(!data.isIndexed()); @@ -2234,8 +2234,8 @@ void MeshDataTest::constructIndexlessAttributelessZeroVertices() { MeshData data{MeshPrimitive::TriangleStrip, 0, &state}; CORRADE_COMPARE(data.primitive(), MeshPrimitive::TriangleStrip); CORRADE_VERIFY(!data.attributeData()); - CORRADE_COMPARE(data.indexData(), static_cast(nullptr)); - CORRADE_COMPARE(data.vertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.indexData().data(), static_cast(nullptr)); + CORRADE_COMPARE(data.vertexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.importerState(), &state); CORRADE_VERIFY(!data.isIndexed()); @@ -2329,7 +2329,7 @@ void MeshDataTest::constructImplementationSpecificVertexFormat() { void MeshDataTest::constructSpecialIndexStrides() { /* Every second index */ { - Containers::Array indexData{sizeof(UnsignedShort)*8}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)*8}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Utility::copy({1, 0, 2, 0, 3, 0, 4, 0}, indices); MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2361,7 +2361,7 @@ void MeshDataTest::constructSpecialIndexStrides() { /* Zero stride. Not sure how useful like this. */ } { - Containers::Array indexData{sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); indices[0] = 15; MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2393,7 +2393,7 @@ void MeshDataTest::constructSpecialIndexStrides() { /* Negative stride */ } { - Containers::Array indexData{sizeof(UnsignedShort)*4}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)*4}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Utility::copy({1, 2, 3, 4}, indices); MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2432,7 +2432,7 @@ void MeshDataTest::constructSpecialIndexStridesImplementationSpecificIndexType() /* Every second index */ { - Containers::Array indexData{sizeof(UnsignedShort)*8}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)*8}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Utility::copy({1, 0, 2, 0, 3, 0, 4, 0}, indices); MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2456,7 +2456,7 @@ void MeshDataTest::constructSpecialIndexStridesImplementationSpecificIndexType() access anything except for directly interpreting the data pointer. Which is actually as desired for implementation-specific index types. */ } { - Containers::Array indexData{sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); indices[0] = 15; MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2476,7 +2476,7 @@ void MeshDataTest::constructSpecialIndexStridesImplementationSpecificIndexType() /* Negative stride */ } { - Containers::Array indexData{sizeof(UnsignedShort)*4}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)*4}; Containers::StridedArrayView1D indices = Containers::arrayCast(indexData); Utility::copy({1, 2, 3, 4}, indices); MeshData mesh{MeshPrimitive::Points, Utility::move(indexData), @@ -2498,7 +2498,7 @@ void MeshDataTest::constructSpecialIndexStridesImplementationSpecificIndexType() } void MeshDataTest::constructSpecialAttributeStrides() { - Containers::Array vertexData{sizeof(UnsignedShort)*5}; + Containers::Array vertexData{NoInit, sizeof(UnsignedShort)*5}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Utility::copy({15, 1, 2, 3, 4}, vertices); @@ -2556,7 +2556,7 @@ void MeshDataTest::constructSpecialAttributeStridesImplementationSpecificVertexF formats, which causes the attribute() to return the full stride in second dimension */ - Containers::Array vertexData{sizeof(UnsignedShort)*5}; + Containers::Array vertexData{NoInit, sizeof(UnsignedShort)*5}; Containers::StridedArrayView1D vertices = Containers::arrayCast(vertexData); Utility::copy({15, 1, 2, 3, 4}, vertices); @@ -2609,12 +2609,12 @@ void MeshDataTest::constructNotOwned() { CORRADE_COMPARE(data.indexDataFlags(), instanceData.indexDataFlags); CORRADE_COMPARE(data.vertexDataFlags(), instanceData.vertexDataFlags); CORRADE_COMPARE(data.primitive(), MeshPrimitive::Triangles); - CORRADE_COMPARE(static_cast(data.indexData()), +indices); - CORRADE_COMPARE(static_cast(data.vertexData()), +vertices); + CORRADE_COMPARE(static_cast(data.indexData().data()), +indices); + CORRADE_COMPARE(static_cast(data.vertexData().data()), +vertices); if(instanceData.indexDataFlags & DataFlag::Mutable) - CORRADE_COMPARE(static_cast(data.mutableIndexData()), +indices); + CORRADE_COMPARE(static_cast(data.mutableIndexData().data()), +indices); if(instanceData.vertexDataFlags & DataFlag::Mutable) - CORRADE_COMPARE(static_cast(data.mutableVertexData()), +vertices); + CORRADE_COMPARE(static_cast(data.mutableVertexData().data()), +vertices); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(data.isIndexed()); @@ -2646,7 +2646,7 @@ void MeshDataTest::constructIndicesNotOwned() { setTestCaseDescription(instanceData.name); UnsignedShort indices[]{0, 1, 0}; - Containers::Array vertexData{2*sizeof(Vector2)}; + Containers::Array vertexData{NoInit, 2*sizeof(Vector2)}; auto vertices = Containers::arrayCast(vertexData); Utility::copy({ {0.1f, 0.2f}, @@ -2664,11 +2664,11 @@ void MeshDataTest::constructIndicesNotOwned() { CORRADE_COMPARE(data.indexDataFlags(), instanceData.dataFlags); CORRADE_COMPARE(data.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.primitive(), MeshPrimitive::Triangles); - CORRADE_COMPARE(static_cast(data.indexData()), +indices); - CORRADE_COMPARE(static_cast(data.vertexData()), vertices.data()); + CORRADE_COMPARE(static_cast(data.indexData().data()), +indices); + CORRADE_COMPARE(static_cast(data.vertexData().data()), vertices.data()); if(instanceData.dataFlags & DataFlag::Mutable) - CORRADE_COMPARE(static_cast(data.mutableIndexData()), +indices); - CORRADE_COMPARE(static_cast(data.mutableVertexData()), vertices.data()); + CORRADE_COMPARE(static_cast(data.mutableIndexData().data()), +indices); + CORRADE_COMPARE(static_cast(data.mutableVertexData().data()), vertices.data()); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(data.isIndexed()); @@ -2697,7 +2697,7 @@ void MeshDataTest::constructVerticesNotOwned() { auto&& instanceData = SingleNotOwnedData[testCaseInstanceId()]; setTestCaseDescription(instanceData.name); - Containers::Array indexData{3*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 3*sizeof(UnsignedShort)}; auto indices = Containers::arrayCast(indexData); Utility::copy({0, 1, 0}, indices); Vector2 vertices[]{{0.1f, 0.2f}, {0.4f, 0.5f}}; @@ -2714,11 +2714,11 @@ void MeshDataTest::constructVerticesNotOwned() { CORRADE_COMPARE(data.indexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.vertexDataFlags(), instanceData.dataFlags); CORRADE_COMPARE(data.primitive(), MeshPrimitive::Triangles); - CORRADE_COMPARE(static_cast(data.indexData()), indices.data()); - CORRADE_COMPARE(static_cast(data.vertexData()), +vertices); - CORRADE_COMPARE(static_cast(data.mutableIndexData()), indices.data()); + CORRADE_COMPARE(static_cast(data.indexData().data()), indices.data()); + CORRADE_COMPARE(static_cast(data.vertexData().data()), +vertices); + CORRADE_COMPARE(static_cast(data.mutableIndexData().data()), indices.data()); if(instanceData.dataFlags & DataFlag::Mutable) - CORRADE_COMPARE(static_cast(data.mutableVertexData()), +vertices); + CORRADE_COMPARE(static_cast(data.mutableVertexData().data()), +vertices); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(data.isIndexed()); @@ -2760,9 +2760,9 @@ void MeshDataTest::constructIndexlessNotOwned() { CORRADE_COMPARE(data.indexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.vertexDataFlags(), instanceData.dataFlags); CORRADE_COMPARE(data.primitive(), MeshPrimitive::LineLoop); - CORRADE_COMPARE(data.indexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.indexData().data(), static_cast(nullptr)); if(instanceData.dataFlags & DataFlag::Mutable) - CORRADE_COMPARE(data.mutableIndexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.mutableIndexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(!data.isIndexed()); @@ -2788,9 +2788,9 @@ void MeshDataTest::constructAttributelessNotOwned() { CORRADE_COMPARE(data.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(data.primitive(), MeshPrimitive::TriangleStrip); CORRADE_VERIFY(!data.attributeData()); - CORRADE_COMPARE(data.vertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.vertexData().data(), static_cast(nullptr)); if(instanceData.dataFlags & DataFlag::Mutable) - CORRADE_COMPARE(data.mutableVertexData(), static_cast(nullptr)); + CORRADE_COMPARE(data.mutableVertexData().data(), static_cast(nullptr)); CORRADE_COMPARE(data.importerState(), &importerState); CORRADE_VERIFY(data.isIndexed()); @@ -2835,7 +2835,7 @@ void MeshDataTest::constructAttributeOver4GB() { void MeshDataTest::constructIndexDataButNotIndexed() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array indexData{6}; + Containers::Array indexData{ValueInit, 6}; MeshAttributeData positions{MeshAttribute::Position, VertexFormat::Vector2, nullptr}; Containers::String out; @@ -2974,12 +2974,12 @@ void MeshDataTest::constructAttributeNotContained() { MeshAttributeData{MeshAttribute::Position, vertexDataIn} }}; /* Offset-only attributes with a different message */ - MeshData{MeshPrimitive::Triangles, Containers::Array{24}, { + MeshData{MeshPrimitive::Triangles, Containers::Array{NoInit, 24}, { MeshAttributeData{MeshAttribute::Position, VertexFormat::Vector2, 1, 3, 8} }}; /* This again spans 21 bytes if array size isn't taken into account, and 25 if it is */ - MeshData{MeshPrimitive::Triangles, Containers::Array{24}, { + MeshData{MeshPrimitive::Triangles, Containers::Array{NoInit, 24}, { MeshAttributeData{meshAttributeCustom(37), VertexFormat::UnsignedByte, 0, 5, 5, 5} }}; /* An implementation-specific vertex format has a size assumed to be 0, but @@ -2992,7 +2992,7 @@ void MeshDataTest::constructAttributeNotContained() { MeshData{MeshPrimitive::Triangles, {}, vertexData, { MeshAttributeData{MeshAttribute::Position, stridedArrayView(vertexDataSlightlyOut).flipped<0>()} }}; - MeshData{MeshPrimitive::Triangles, Containers::Array{24}, { + MeshData{MeshPrimitive::Triangles, Containers::Array{NoInit, 24}, { MeshAttributeData{meshAttributeCustom(37), VertexFormat::UnsignedByte, 24, 3, -8} }}; /* In this case the implementation-specific format is treated as having a @@ -3022,7 +3022,7 @@ void MeshDataTest::constructAttributeNotContained() { void MeshDataTest::constructInconsitentVertexCount() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array vertexData{136}; + Containers::Array vertexData{NoInit, 136}; MeshAttributeData positions{MeshAttribute::Position, Containers::arrayCast(vertexData).prefix(3)}; MeshAttributeData positions2{MeshAttribute::Position, @@ -3131,7 +3131,7 @@ void MeshDataTest::constructIndicesNotOwnedFlagOwned() { CORRADE_SKIP_IF_NO_ASSERT(); UnsignedShort indexData[]{0, 1, 0}; - Containers::Array vertexData{2*sizeof(Vector2)}; + Containers::Array vertexData{NoInit, 2*sizeof(Vector2)}; auto vertexView = Containers::arrayCast(vertexData); vertexView[0] = {0.1f, 0.2f}; vertexView[1] = {0.4f, 0.5f}; @@ -3149,7 +3149,7 @@ void MeshDataTest::constructIndicesNotOwnedFlagOwned() { void MeshDataTest::constructVerticesNotOwnedFlagOwned() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array indexData{3*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 3*sizeof(UnsignedShort)}; auto indexView = Containers::arrayCast(indexData); Utility::copy({0, 1, 0}, indexView); Vector2 vertexData[]{{0.1f, 0.2f}, {0.4f, 0.5f}}; @@ -3213,11 +3213,11 @@ void MeshDataTest::constructCopy() { } void MeshDataTest::constructMove() { - Containers::Array indexData{3*sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, 3*sizeof(UnsignedShort)}; auto indices = Containers::arrayCast(indexData); Utility::copy({0, 1, 0}, indices); - Containers::Array vertexData{2*sizeof(Vector2)}; + Containers::Array vertexData{NoInit, 2*sizeof(Vector2)}; auto vertices = Containers::arrayCast(vertexData); Utility::copy({ {0.1f, 0.2f}, @@ -3237,8 +3237,8 @@ void MeshDataTest::constructMove() { CORRADE_COMPARE(b.indexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(b.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(b.primitive(), MeshPrimitive::Triangles); - CORRADE_COMPARE(static_cast(b.indexData()), indices.data()); - CORRADE_COMPARE(static_cast(b.vertexData()), vertices.data()); + CORRADE_COMPARE(static_cast(b.indexData().data()), indices.data()); + CORRADE_COMPARE(static_cast(b.vertexData().data()), vertices.data()); CORRADE_COMPARE(b.importerState(), &importerState); CORRADE_VERIFY(b.isIndexed()); @@ -3262,8 +3262,8 @@ void MeshDataTest::constructMove() { CORRADE_COMPARE(c.indexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(c.vertexDataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_COMPARE(c.primitive(), MeshPrimitive::Triangles); - CORRADE_COMPARE(static_cast(c.indexData()), indices.data()); - CORRADE_COMPARE(static_cast(c.vertexData()), vertices.data()); + CORRADE_COMPARE(static_cast(c.indexData().data()), indices.data()); + CORRADE_COMPARE(static_cast(c.vertexData().data()), vertices.data()); CORRADE_COMPARE(c.importerState(), &importerState); CORRADE_VERIFY(c.isIndexed()); @@ -4470,7 +4470,7 @@ void MeshDataTest::indicesNotIndexed() { void MeshDataTest::indicesWrongType() { CORRADE_SKIP_IF_NO_ASSERT(); - Containers::Array indexData{sizeof(UnsignedShort)}; + Containers::Array indexData{ValueInit, sizeof(UnsignedShort)}; auto indices = Containers::arrayCast(indexData); indices[0] = 57616; MeshData data{MeshPrimitive::Points, Utility::move(indexData), MeshIndexData{indices}, 57617}; @@ -4708,7 +4708,7 @@ void MeshDataTest::attributeWrongArrayAccess() { } void MeshDataTest::releaseIndexData() { - Containers::Array indexData{23}; + Containers::Array indexData{ValueInit, 23}; auto indices = Containers::arrayCast(indexData.slice(6, 12)); MeshData data{MeshPrimitive::TriangleStrip, Utility::move(indexData), MeshIndexData{indices}, 10}; @@ -4719,7 +4719,7 @@ void MeshDataTest::releaseIndexData() { Containers::Array released = data.releaseIndexData(); CORRADE_COMPARE(static_cast(released.data() + 6), indices.data()); /* This is not null as we still need the value for calculating offsets */ - CORRADE_COMPARE(static_cast(data.indexData()), released.data()); + CORRADE_COMPARE(static_cast(data.indexData().data()), released.data()); CORRADE_COMPARE(data.indexData().size(), 0); CORRADE_VERIFY(data.isIndexed()); CORRADE_COMPARE(data.indexCount(), 0); @@ -4728,7 +4728,7 @@ void MeshDataTest::releaseIndexData() { } void MeshDataTest::releaseAttributeData() { - Containers::Array vertexData{16}; + Containers::Array vertexData{NoInit, 16}; auto vertices = Containers::arrayCast(vertexData); MeshData data{MeshPrimitive::LineLoop, Utility::move(vertexData), { @@ -4743,14 +4743,14 @@ void MeshDataTest::releaseAttributeData() { CORRADE_COMPARE(released[0].data().size(), 2); /* Unlike the other two, this is null as we don't need the value for calculating anything */ - CORRADE_COMPARE(static_cast(data.attributeData()), nullptr); + CORRADE_COMPARE(static_cast(data.attributeData().data()), nullptr); CORRADE_COMPARE(data.attributeCount(), 0); - CORRADE_COMPARE(static_cast(data.vertexData()), vertices); + CORRADE_COMPARE(static_cast(data.vertexData().data()), vertices.data()); CORRADE_COMPARE(data.vertexCount(), 2); } void MeshDataTest::releaseVertexData() { - Containers::Array vertexData{80}; + Containers::Array vertexData{NoInit, 80}; auto vertices = Containers::arrayCast(vertexData.slice(48, 72)); MeshData data{MeshPrimitive::LineLoop, Utility::move(vertexData), { @@ -4773,7 +4773,7 @@ void MeshDataTest::releaseVertexData() { CORRADE_COMPARE(data.attributeData()[0].data().size(), 3); CORRADE_COMPARE(static_cast(released.data() + 48), vertices.data()); /* This is not null as we still need the value for calculating offsets */ - CORRADE_COMPARE(static_cast(data.vertexData()), released.data()); + CORRADE_COMPARE(static_cast(data.vertexData().data()), released.data()); CORRADE_COMPARE(data.vertexCount(), 0); CORRADE_COMPARE(data.attributeOffset(0), 48); } diff --git a/src/Magnum/Trade/Test/SceneDataTest.cpp b/src/Magnum/Trade/Test/SceneDataTest.cpp index 6cc5c75e8..744a63884 100644 --- a/src/Magnum/Trade/Test/SceneDataTest.cpp +++ b/src/Magnum/Trade/Test/SceneDataTest.cpp @@ -2523,8 +2523,8 @@ void SceneDataTest::construct() { /* Basics */ CORRADE_COMPARE(scene.dataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_VERIFY(!scene.fieldData().isEmpty()); - CORRADE_COMPARE(static_cast(scene.data()), transformsParentFieldMappingData.data()); - CORRADE_COMPARE(static_cast(scene.mutableData()), transformsParentFieldMappingData.data()); + CORRADE_COMPARE(static_cast(scene.data().data()), transformsParentFieldMappingData.data()); + CORRADE_COMPARE(static_cast(scene.mutableData().data()), transformsParentFieldMappingData.data()); CORRADE_COMPARE(scene.mappingBound(), 8); CORRADE_COMPARE(scene.mappingType(), SceneMappingType::UnsignedShort); CORRADE_COMPARE(scene.fieldCount(), 4); @@ -2778,8 +2778,8 @@ void SceneDataTest::constructZeroFields() { SceneData scene{SceneMappingType::UnsignedShort, 37563, nullptr, {}, &importerState}; CORRADE_COMPARE(scene.dataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_VERIFY(scene.fieldData().isEmpty()); - CORRADE_COMPARE(static_cast(scene.data()), nullptr); - CORRADE_COMPARE(static_cast(scene.mutableData()), nullptr); + CORRADE_COMPARE(static_cast(scene.data().data()), nullptr); + CORRADE_COMPARE(static_cast(scene.mutableData().data()), nullptr); CORRADE_COMPARE(scene.importerState(), &importerState); CORRADE_COMPARE(scene.mappingBound(), 37563); CORRADE_COMPARE(scene.mappingType(), SceneMappingType::UnsignedShort); @@ -2797,8 +2797,8 @@ void SceneDataTest::constructZeroObjects() { SceneData scene{SceneMappingType::UnsignedInt, 0, nullptr, {meshes, materials}, &importerState}; CORRADE_COMPARE(scene.dataFlags(), DataFlag::Owned|DataFlag::Mutable); CORRADE_VERIFY(!scene.fieldData().isEmpty()); - CORRADE_COMPARE(static_cast(scene.data()), nullptr); - CORRADE_COMPARE(static_cast(scene.mutableData()), nullptr); + CORRADE_COMPARE(static_cast(scene.data().data()), nullptr); + CORRADE_COMPARE(static_cast(scene.mutableData().data()), nullptr); CORRADE_COMPARE(scene.importerState(), &importerState); CORRADE_COMPARE(scene.mappingBound(), 0); CORRADE_COMPARE(scene.mappingType(), SceneMappingType::UnsignedInt); @@ -2834,9 +2834,9 @@ void SceneDataTest::constructNotOwned() { SceneData scene{SceneMappingType::UnsignedShort, 7, instanceData.dataFlags, Containers::arrayView(data), {mesh}, &importerState}; CORRADE_COMPARE(scene.dataFlags(), instanceData.dataFlags); - CORRADE_COMPARE(static_cast(scene.data()), +data); + CORRADE_COMPARE(static_cast(scene.data().data()), +data); if(instanceData.dataFlags & DataFlag::Mutable) - CORRADE_COMPARE(static_cast(scene.mutableData()), static_cast(data)); + CORRADE_COMPARE(static_cast(scene.mutableData().data()), static_cast(data)); CORRADE_COMPARE(scene.mappingBound(), 7); CORRADE_COMPARE(scene.mappingType(), SceneMappingType::UnsignedShort); CORRADE_COMPARE(scene.fieldCount(), 1); @@ -3677,7 +3677,7 @@ void SceneDataTest::constructMappingDataNotContained() { SceneFieldData{SceneField::Mesh, dataOut, dataIn} }}; /* Offset-only fields with a different message */ - SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{24}, { + SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{NoInit, 24}, { SceneFieldData{SceneField::Mesh, 6, SceneMappingType::UnsignedByte, 4, 4, SceneFieldType::UnsignedByte, 0, 4} }}; /* And the final boss, negative strides. Both only caught if the element @@ -3685,7 +3685,7 @@ void SceneDataTest::constructMappingDataNotContained() { SceneData{SceneMappingType::UnsignedShort, 5, {}, data, { SceneFieldData{SceneField::Mesh, stridedArrayView(dataSlightlyOut).flipped<0>(), dataIn} }}; - SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{24}, { + SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{NoInit, 24}, { SceneFieldData{SceneField::Mesh, 6, SceneMappingType::UnsignedByte, 24, -4, SceneFieldType::UnsignedByte, 0, 4} }}; CORRADE_COMPARE(out, @@ -3734,12 +3734,12 @@ void SceneDataTest::constructFieldDataNotContained() { /* Not checking for nullptr data, since that got checked for mapping view already and there's no way to trigger it for fields */ /* Offset-only fields with a different message */ - SceneData{SceneMappingType::UnsignedShort, 6, Containers::Array{24}, { + SceneData{SceneMappingType::UnsignedShort, 6, Containers::Array{NoInit, 24}, { SceneFieldData{SceneField::Mesh, 6, SceneMappingType::UnsignedShort, 0, 4, SceneFieldType::UnsignedByte, 4, 4} }}; /* This again spans 21 bytes if array size isn't taken into account, and 25 if it is */ - SceneData{SceneMappingType::UnsignedShort, 5, Containers::Array{24}, { + SceneData{SceneMappingType::UnsignedShort, 5, Containers::Array{NoInit, 24}, { SceneFieldData{sceneFieldCustom(37), 5, SceneMappingType::UnsignedShort, 0, 5, SceneFieldType::UnsignedByte, 0, 5, 5} }}; /* And the final boss, negative strides. Both only caught if the element @@ -3747,7 +3747,7 @@ void SceneDataTest::constructFieldDataNotContained() { SceneData{SceneMappingType::UnsignedShort, 5, {}, data, { SceneFieldData{SceneField::Mesh, dataIn, stridedArrayView(dataSlightlyOut).flipped<0>()} }}; - SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{24}, { + SceneData{SceneMappingType::UnsignedByte, 6, Containers::Array{NoInit, 24}, { SceneFieldData{SceneField::Mesh, 6, SceneMappingType::UnsignedByte, 0, 4, SceneFieldType::UnsignedByte, 24, -4} }}; CORRADE_COMPARE(out, @@ -3812,17 +3812,17 @@ void SceneDataTest::constructBitFieldDataNotContained() { already and there's no way to trigger it for fields */ /* Offset-only fields with a different message, again both one byte and one bit off, one bit with offset */ - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 10, SceneMappingType::UnsignedByte, 0, 1, 1, 0, 8} }}; - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 10, SceneMappingType::UnsignedByte, 0, 1, 0, 0, 9} }}; - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 5, SceneMappingType::UnsignedByte, 0, 1, 0, 4, 19} }}; /* One with array */ - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 9, SceneMappingType::UnsignedByte, 0, 1, 0, 0, 9, 9} }}; /* And the final boss, negative strides -- one byte off and two bits off. @@ -3834,10 +3834,10 @@ void SceneDataTest::constructBitFieldDataNotContained() { SceneData{SceneMappingType::UnsignedByte, 10, {}, data, { SceneFieldData{sceneFieldCustom(773), mappingData, dataTwoBitsOut.flipped<0>()} }}; - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 10, SceneMappingType::UnsignedByte, 0, 1, 10, 0, -8} }}; - SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{10}, { + SceneData{SceneMappingType::UnsignedByte, 10, Containers::Array{NoInit, 10}, { SceneFieldData{sceneFieldCustom(773), 9, SceneMappingType::UnsignedByte, 0, 1, 10, 0, -9} }}; CORRADE_COMPARE(out, @@ -4221,7 +4221,7 @@ void SceneDataTest::constructMove() { CORRADE_COMPARE(b.mappingType(), SceneMappingType::UnsignedShort); CORRADE_COMPARE(b.fieldCount(), 1); CORRADE_COMPARE(b.importerState(), &importerState); - CORRADE_COMPARE(static_cast(b.data()), meshData.data()); + CORRADE_COMPARE(static_cast(b.data().data()), meshData.data()); CORRADE_COMPARE(b.fieldName(0), SceneField::Mesh); CORRADE_COMPARE(b.fieldType(0), SceneFieldType::UnsignedInt); CORRADE_COMPARE(b.fieldSize(0), 3); @@ -4236,7 +4236,7 @@ void SceneDataTest::constructMove() { CORRADE_COMPARE(c.mappingType(), SceneMappingType::UnsignedShort); CORRADE_COMPARE(c.fieldCount(), 1); CORRADE_COMPARE(c.importerState(), &importerState); - CORRADE_COMPARE(static_cast(c.data()), meshData.data()); + CORRADE_COMPARE(static_cast(c.data().data()), meshData.data()); CORRADE_COMPARE(c.fieldName(0), SceneField::Mesh); CORRADE_COMPARE(c.fieldType(0), SceneFieldType::UnsignedInt); CORRADE_COMPARE(c.fieldSize(0), 3); @@ -4462,7 +4462,7 @@ void SceneDataTest::mappingIntoArrayByIndex() { /* The offset variant only a subset */ } { - Containers::Array out{data.size}; + Containers::Array out{NoInit, data.size}; CORRADE_COMPARE(scene.mappingInto(1, data.offset, out), data.expectedSize); CORRADE_COMPARE_AS(out.prefix(data.expectedSize), view.slice(&Field::object) @@ -4508,7 +4508,7 @@ void SceneDataTest::mappingIntoArrayByName() { /* The offset variant only a subset */ } { - Containers::Array out{data.size}; + Containers::Array out{NoInit, data.size}; CORRADE_COMPARE(scene.mappingInto(SceneField::Mesh, data.offset, out), data.expectedSize); CORRADE_COMPARE_AS(out.prefix(data.expectedSize), view.slice(&Field::object) @@ -4616,8 +4616,8 @@ void SceneDataTest::parentsIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.parentsInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -5006,8 +5006,8 @@ void SceneDataTest::transformations2DIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.transformations2DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -5080,8 +5080,8 @@ void SceneDataTest::transformations2DTRSIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.transformations2DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -5158,10 +5158,10 @@ void SceneDataTest::transformations2DIntoArrayTRS() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array translations{data.size}; - Containers::Array rotations{data.size}; - Containers::Array scalings{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array translations{NoInit, data.size}; + Containers::Array rotations{NoInit, data.size}; + Containers::Array scalings{NoInit, data.size}; CORRADE_COMPARE(scene.translationsRotationsScalings2DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field1 ? arrayView(translations) : nullptr, @@ -5602,8 +5602,8 @@ void SceneDataTest::transformations3DIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.transformations3DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -5676,8 +5676,8 @@ void SceneDataTest::transformations3DTRSIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.transformations3DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -5754,10 +5754,10 @@ void SceneDataTest::transformations3DIntoArrayTRS() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array translations{data.size}; - Containers::Array rotations{data.size}; - Containers::Array scalings{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array translations{NoInit, data.size}; + Containers::Array rotations{NoInit, data.size}; + Containers::Array scalings{NoInit, data.size}; CORRADE_COMPARE(scene.translationsRotationsScalings3DInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field1 ? arrayView(translations) : nullptr, @@ -5967,9 +5967,9 @@ void SceneDataTest::meshesMaterialsIntoArray() { /* The offset variant should give back only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array meshes{data.size}; - Containers::Array meshMaterials{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array meshes{NoInit, data.size}; + Containers::Array meshMaterials{NoInit, data.size}; CORRADE_COMPARE(scene.meshesMaterialsInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field1 ? arrayView(meshes) : nullptr, @@ -6100,8 +6100,8 @@ void SceneDataTest::lightsIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.lightsInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -6219,8 +6219,8 @@ void SceneDataTest::camerasIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.camerasInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -6342,8 +6342,8 @@ void SceneDataTest::skinsIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.skinsInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -6468,8 +6468,8 @@ void SceneDataTest::importerStateIntoArray() { /* The offset variant only a subset */ } { - Containers::Array mapping{data.size}; - Containers::Array field{data.size}; + Containers::Array mapping{NoInit, data.size}; + Containers::Array field{NoInit, data.size}; CORRADE_COMPARE(scene.importerStateInto(data.offset, data.mapping ? arrayView(mapping) : nullptr, data.field ? arrayView(field) : nullptr @@ -7641,7 +7641,7 @@ void SceneDataTest::releaseFieldData() { SceneFieldData{SceneField::Parent, SceneMappingType::UnsignedByte, nullptr, SceneFieldType::Int, nullptr}, SceneFieldData{SceneField::Mesh, view.slice(&Field::object), view.slice(&Field::mesh)} }); - SceneFieldData* originalFields = fields; + SceneFieldData* originalFields = fields.data(); SceneData scene{SceneMappingType::UnsignedByte, 50, Utility::move(data), Utility::move(fields)}; @@ -7650,7 +7650,7 @@ void SceneDataTest::releaseFieldData() { CORRADE_COMPARE(released.size(), 2); /* Fields are all gone */ - CORRADE_COMPARE(static_cast(scene.fieldData()), nullptr); + CORRADE_COMPARE(static_cast(scene.fieldData().data()), nullptr); CORRADE_COMPARE(scene.fieldCount(), 0); /* Data stays untouched, object count and type as well, as it con't result @@ -7679,7 +7679,7 @@ void SceneDataTest::releaseData() { CORRADE_COMPARE(released.size(), 3*sizeof(Field)); /* Data are gone */ - CORRADE_COMPARE(static_cast(scene.data()), nullptr); + CORRADE_COMPARE(static_cast(scene.data().data()), nullptr); /* Fields stay untouched so it's possible to release them separately without being forced to order these two releases in any way */ diff --git a/src/Magnum/Trade/Test/SkinDataTest.cpp b/src/Magnum/Trade/Test/SkinDataTest.cpp index 9749dc0f5..a35b3ef38 100644 --- a/src/Magnum/Trade/Test/SkinDataTest.cpp +++ b/src/Magnum/Trade/Test/SkinDataTest.cpp @@ -130,8 +130,8 @@ void SkinDataTest::release() { Matrix3::translation(Vector2::yAxis(4.0f)) }}; - const void* jointsPointer = joints; - const void* inverseBindMatricesPointer = inverseBindMatrices; + const void* jointsPointer = joints.data(); + const void* inverseBindMatricesPointer = inverseBindMatrices.data(); SkinData2D data{Utility::move(joints), Utility::move(inverseBindMatrices)}; @@ -139,13 +139,13 @@ void SkinDataTest::release() { CORRADE_COMPARE(data.joints().size(), 0); CORRADE_COMPARE(data.inverseBindMatrices().size(), 3); CORRADE_COMPARE(releasedJoints.size(), 3); - CORRADE_COMPARE(releasedJoints, jointsPointer); + CORRADE_COMPARE(releasedJoints.data(), jointsPointer); Containers::Array releasedInverseBindMatrices = data.releaseInverseBindMatrixData(); CORRADE_COMPARE(data.joints().size(), 0); CORRADE_COMPARE(data.inverseBindMatrices().size(), 0); CORRADE_COMPARE(releasedInverseBindMatrices.size(), 3); - CORRADE_COMPARE(releasedInverseBindMatrices, inverseBindMatricesPointer); + CORRADE_COMPARE(releasedInverseBindMatrices.data(), inverseBindMatricesPointer); } }}}} diff --git a/src/Magnum/Vk/Buffer.cpp b/src/Magnum/Vk/Buffer.cpp index e3098118e..e380463ce 100644 --- a/src/Magnum/Vk/Buffer.cpp +++ b/src/Magnum/Vk/Buffer.cpp @@ -222,11 +222,11 @@ CopyBufferInfo::CopyBufferInfo(const VkBuffer source, const VkBuffer destination for(std::size_t i = 0; i != regions.size(); ++i) { /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkBufferCopies2 + i) VkBufferCopy2KHR(BufferCopy{regions[i]}); + new(vkBufferCopies2.data() + i) VkBufferCopy2KHR(BufferCopy{regions[i]}); } _info.regionCount = regions.size(); - _info.pRegions = vkBufferCopies2; + _info.pRegions = vkBufferCopies2.data(); } CopyBufferInfo::CopyBufferInfo(const VkBuffer source, const VkBuffer destination, const std::initializer_list regions): CopyBufferInfo{source, destination, Containers::arrayView(regions)} {} @@ -241,7 +241,7 @@ CopyBufferInfo::CopyBufferInfo(const VkCopyBufferInfo2KHR& info): Containers::Array CopyBufferInfo::vkBufferCopies() const { Containers::Array out{NoInit, _info.regionCount}; for(std::size_t i = 0; i != _info.regionCount; ++i) - new(out + i) VkBufferCopy(vkBufferCopy(_info.pRegions[i])); + new(out.data() + i) VkBufferCopy(vkBufferCopy(_info.pRegions[i])); return out; } @@ -258,7 +258,7 @@ CommandBuffer& CommandBuffer::copyBuffer(const CopyBufferInfo& info) { void CommandBuffer::copyBufferImplementationDefault(CommandBuffer& self, const CopyBufferInfo& info) { CORRADE_ASSERT(!info->pNext, "Vk::CommandBuffer::copyBuffer(): disallowing extraction of CopyBufferInfo with non-empty pNext to prevent information loss", ); - return (**self._device).CmdCopyBuffer(self, info->srcBuffer, info->dstBuffer, info->regionCount, info.vkBufferCopies()); + return (**self._device).CmdCopyBuffer(self, info->srcBuffer, info->dstBuffer, info->regionCount, info.vkBufferCopies().data()); } void CommandBuffer::copyBufferImplementationKHR(CommandBuffer& self, const CopyBufferInfo& info) { diff --git a/src/Magnum/Vk/DescriptorPool.cpp b/src/Magnum/Vk/DescriptorPool.cpp index 0848c0e78..2531e76e8 100644 --- a/src/Magnum/Vk/DescriptorPool.cpp +++ b/src/Magnum/Vk/DescriptorPool.cpp @@ -63,7 +63,7 @@ DescriptorPoolCreateInfo::DescriptorPoolCreateInfo(const UnsignedInt maxSets, co _info.flags = VkDescriptorPoolCreateFlags(flags); _info.maxSets = maxSets; _info.poolSizeCount = poolSizesCopy.size(); - _info.pPoolSizes = poolSizesCopy; + _info.pPoolSizes = poolSizesCopy.data(); } DescriptorPoolCreateInfo::DescriptorPoolCreateInfo(const UnsignedInt maxSets, const std::initializer_list> poolSizes, const Flags flags): DescriptorPoolCreateInfo{maxSets, Containers::arrayView(poolSizes), flags} {} diff --git a/src/Magnum/Vk/DescriptorSetLayout.cpp b/src/Magnum/Vk/DescriptorSetLayout.cpp index a5cafb7b8..f37d70f26 100644 --- a/src/Magnum/Vk/DescriptorSetLayout.cpp +++ b/src/Magnum/Vk/DescriptorSetLayout.cpp @@ -55,7 +55,7 @@ DescriptorSetLayoutBinding::DescriptorSetLayoutBinding(const UnsignedInt binding _binding.binding = binding; _binding.descriptorType = VkDescriptorType(descriptorType); _binding.descriptorCount = immutableSamplers.size(); - _binding.pImmutableSamplers = immutableSamplersCopy; + _binding.pImmutableSamplers = immutableSamplersCopy.data(); _binding.stageFlags = VkShaderStageFlags(stages); } @@ -131,7 +131,7 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::I for some reason */ Containers::arrayView(b->pImmutableSamplers, b->descriptorCount), immutableSamplersCopy.slice(immutableSamplerOffset, immutableSamplerOffset + b->descriptorCount)); - bindingsCopy[i].pImmutableSamplers = immutableSamplersCopy + immutableSamplerOffset; + bindingsCopy[i].pImmutableSamplers = immutableSamplersCopy.data() + immutableSamplerOffset; immutableSamplerOffset += b->descriptorCount; } if(hasBindingFlags) @@ -142,12 +142,12 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::I _info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; _info.flags = VkDescriptorSetLayoutCreateFlags(flags); _info.bindingCount = bindings.size(); - _info.pBindings = bindingsCopy; + _info.pBindings = bindingsCopy.data(); if(hasBindingFlags) { bindingsCreateInfoView[0].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO; bindingsCreateInfoView[0].bindingCount = bindings.size(); - bindingsCreateInfoView[0].pBindingFlags = bindingFlagsCopy; - _info.pNext = bindingsCreateInfoView; + bindingsCreateInfoView[0].pBindingFlags = bindingFlagsCopy.data(); + _info.pNext = bindingsCreateInfoView.data(); } } diff --git a/src/Magnum/Vk/Device.cpp b/src/Magnum/Vk/Device.cpp index 7d8a510f5..e43ae0298 100644 --- a/src/Magnum/Vk/Device.cpp +++ b/src/Magnum/Vk/Device.cpp @@ -589,7 +589,7 @@ DeviceCreateInfo& DeviceCreateInfo::addQueues(const UnsignedInt family, const Co info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; info.queueFamilyIndex = family; info.queueCount = priorities.size(); - info.pQueuePriorities = _state->queuePriorities + _state->nextQueuePriority; + info.pQueuePriorities = _state->queuePriorities.data() + _state->nextQueuePriority; /* Copy the passed queue priorities and output queue references to an internal storage that never reallocates. If this blows up, see the @@ -643,7 +643,7 @@ DeviceCreateInfo& DeviceCreateInfo::addQueues(const VkDeviceQueueCreateInfo& inf This handles a potential reallocation and also the case of replacing the default queue on the first call to addQueues(). */ arrayAppend(_state->queues, info); - _info.pQueueCreateInfos = _state->queues; + _info.pQueueCreateInfos = _state->queues.data(); _info.queueCreateInfoCount = _state->queues.size(); return *this; diff --git a/src/Magnum/Vk/DeviceProperties.cpp b/src/Magnum/Vk/DeviceProperties.cpp index c6e245e35..fb0aa0b56 100644 --- a/src/Magnum/Vk/DeviceProperties.cpp +++ b/src/Magnum/Vk/DeviceProperties.cpp @@ -392,7 +392,7 @@ Containers::ArrayView DeviceProperties::queueFam _state->queueFamilyProperties = Containers::Array{ValueInit, count}; for(VkQueueFamilyProperties2& i: _state->queueFamilyProperties) i.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2; - _state->getQueueFamilyPropertiesImplementation(*this, count, _state->queueFamilyProperties); + _state->getQueueFamilyPropertiesImplementation(*this, count, _state->queueFamilyProperties.data()); CORRADE_INTERNAL_ASSERT(count == _state->queueFamilyProperties.size()); } diff --git a/src/Magnum/Vk/ExtensionProperties.cpp b/src/Magnum/Vk/ExtensionProperties.cpp index 0589daf21..831a8ce70 100644 --- a/src/Magnum/Vk/ExtensionProperties.cpp +++ b/src/Magnum/Vk/ExtensionProperties.cpp @@ -76,7 +76,7 @@ ExtensionProperties::ExtensionProperties(const Containers::StringIterable& layer MAGNUM_VK_INTERNAL_ASSERT_SUCCESS(enumerator(state, i == 0 ? nullptr : Containers::String::nullTerminatedView(layers[i - 1]).data(), - &count, _extensions + offset)); + &count, _extensions.data() + offset)); for(std::size_t j = 0; j != count; ++j) _extensionLayers[offset + j] = i; offset += count; } @@ -99,8 +99,8 @@ ExtensionProperties::ExtensionProperties(const Containers::StringIterable& layer costly enumeration. */ if(offset < totalCount) { Warning{} << "Vk::ExtensionProperties: inconsistent extension count reported by the driver, expected" << totalCount << "but got only" << offset; - _names = {_names, offset}; - _extensionLayers = {_extensionLayers, offset}; + _names = {_names.data(), offset}; + _extensionLayers = {_extensionLayers.data(), offset}; } else CORRADE_INTERNAL_ASSERT(offset == totalCount); /* Populate the views, sort them and remove duplicates so we can search in diff --git a/src/Magnum/Vk/Framebuffer.cpp b/src/Magnum/Vk/Framebuffer.cpp index 6d56d1859..97af870a9 100644 --- a/src/Magnum/Vk/Framebuffer.cpp +++ b/src/Magnum/Vk/Framebuffer.cpp @@ -57,7 +57,7 @@ FramebufferCreateInfo::FramebufferCreateInfo(const VkRenderPass renderPass, cons for(std::size_t i = 0; i != attachments.size(); ++i) _state->attachments[i] = *attachments[i]; _info.attachmentCount = _state->attachments.size(); - _info.pAttachments = _state->attachments; + _info.pAttachments = _state->attachments.data(); } FramebufferCreateInfo::FramebufferCreateInfo(const VkRenderPass renderPass, const std::initializer_list> attachments, const Vector3i& size, const Flags flags): FramebufferCreateInfo{renderPass, Containers::arrayView(attachments), size, flags} {} diff --git a/src/Magnum/Vk/Image.cpp b/src/Magnum/Vk/Image.cpp index 58728a1d1..0633e3c29 100644 --- a/src/Magnum/Vk/Image.cpp +++ b/src/Magnum/Vk/Image.cpp @@ -310,11 +310,11 @@ CopyImageInfo::CopyImageInfo(const VkImage source, const ImageLayout sourceLayou for(std::size_t i = 0; i != regions.size(); ++i) { /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkImageCopies2 + i) VkImageCopy2KHR(ImageCopy{regions[i]}); + new(vkImageCopies2.data() + i) VkImageCopy2KHR(ImageCopy{regions[i]}); } _info.regionCount = regions.size(); - _info.pRegions = vkImageCopies2; + _info.pRegions = vkImageCopies2.data(); } CopyImageInfo::CopyImageInfo(const VkImage source, const ImageLayout sourceLayout, const VkImage destination, const ImageLayout destinationLayout, const std::initializer_list regions): CopyImageInfo{source, sourceLayout, destination, destinationLayout, Containers::arrayView(regions)} {} @@ -329,7 +329,7 @@ CopyImageInfo::CopyImageInfo(const VkCopyImageInfo2KHR& info): Containers::Array CopyImageInfo::vkImageCopies() const { Containers::Array out{NoInit, _info.regionCount}; for(std::size_t i = 0; i != _info.regionCount; ++i) - new(out + i) VkImageCopy(vkImageCopy(_info.pRegions[i])); + new(out.data() + i) VkImageCopy(vkImageCopy(_info.pRegions[i])); return out; } @@ -419,14 +419,14 @@ CopyBufferToImageInfo::CopyBufferToImageInfo(const VkBuffer source, const VkImag }; for(std::size_t i = 0; i != regions.size(); ++i) { - new(wrappers + i) BufferImageCopy{regions[i]}; + new(wrappers.data() + i) BufferImageCopy{regions[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkBufferImageCopies2 + i) VkBufferImageCopy2KHR(wrappers[i]); + new(vkBufferImageCopies2.data() + i) VkBufferImageCopy2KHR(wrappers[i]); } _info.regionCount = regions.size(); - _info.pRegions = vkBufferImageCopies2; + _info.pRegions = vkBufferImageCopies2.data(); } CopyBufferToImageInfo::CopyBufferToImageInfo(NoInitT) noexcept {} @@ -441,7 +441,7 @@ CopyBufferToImageInfo::CopyBufferToImageInfo(const VkBuffer source, const VkImag Containers::Array CopyBufferToImageInfo::vkBufferImageCopies() const { Containers::Array out{NoInit, _info.regionCount}; for(std::size_t i = 0; i != _info.regionCount; ++i) - new(out + i) VkBufferImageCopy(vkBufferImageCopy(_info.pRegions[i])); + new(out.data() + i) VkBufferImageCopy(vkBufferImageCopy(_info.pRegions[i])); return out; } @@ -491,14 +491,14 @@ CopyImageToBufferInfo::CopyImageToBufferInfo(const VkImage source, const ImageLa }; for(std::size_t i = 0; i != regions.size(); ++i) { - new(wrappers + i) BufferImageCopy{regions[i]}; + new(wrappers.data() + i) BufferImageCopy{regions[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkBufferImageCopies2 + i) VkBufferImageCopy2KHR(wrappers[i]); + new(vkBufferImageCopies2.data() + i) VkBufferImageCopy2KHR(wrappers[i]); } _info.regionCount = regions.size(); - _info.pRegions = vkBufferImageCopies2; + _info.pRegions = vkBufferImageCopies2.data(); } CopyImageToBufferInfo::CopyImageToBufferInfo(const VkImage source, const ImageLayout sourceLayout, const VkBuffer destination, const std::initializer_list regions): CopyImageToBufferInfo{source, sourceLayout, destination, Containers::arrayView(regions)} {} @@ -513,7 +513,7 @@ CopyImageToBufferInfo::CopyImageToBufferInfo(const VkCopyImageToBufferInfo2KHR& Containers::Array CopyImageToBufferInfo::vkBufferImageCopies() const { Containers::Array out{NoInit, _info.regionCount}; for(std::size_t i = 0; i != _info.regionCount; ++i) - new(out + i) VkBufferImageCopy(vkBufferImageCopy(_info.pRegions[i])); + new(out.data() + i) VkBufferImageCopy(vkBufferImageCopy(_info.pRegions[i])); return out; } @@ -668,7 +668,7 @@ void fixupImageCopySwiftShader(VkImageSubresourceLayers& subresource, VkOffset3D void CommandBuffer::copyImageImplementationDefault(CommandBuffer& self, const CopyImageInfo& info) { CORRADE_ASSERT(!info->pNext, "Vk::CommandBuffer::copyImage(): disallowing extraction of CopyImageInfo with non-empty pNext to prevent information loss", ); - return (**self._device).CmdCopyImage(self, info->srcImage, info->srcImageLayout, info->dstImage, info->dstImageLayout, info->regionCount, info.vkImageCopies()); + return (**self._device).CmdCopyImage(self, info->srcImage, info->srcImageLayout, info->dstImage, info->dstImageLayout, info->regionCount, info.vkImageCopies().data()); } void CommandBuffer::copyImageImplementationSwiftShader(CommandBuffer& self, const CopyImageInfo& info) { @@ -681,7 +681,7 @@ void CommandBuffer::copyImageImplementationSwiftShader(CommandBuffer& self, cons fixupImageCopySwiftShader(copy.dstSubresource, copy.dstOffset, copy.extent); } - return (**self._device).CmdCopyImage(self, info->srcImage, info->srcImageLayout, info->dstImage, info->dstImageLayout, info->regionCount, copies); + return (**self._device).CmdCopyImage(self, info->srcImage, info->srcImageLayout, info->dstImage, info->dstImageLayout, info->regionCount, copies.data()); } void CommandBuffer::copyImageImplementationKHR(CommandBuffer& self, const CopyImageInfo& info) { @@ -696,7 +696,7 @@ CommandBuffer& CommandBuffer::copyBufferToImage(const CopyBufferToImageInfo& inf void CommandBuffer::copyBufferToImageImplementationDefault(CommandBuffer& self, const CopyBufferToImageInfo& info) { CORRADE_ASSERT(!info->pNext, "Vk::CommandBuffer::copyBufferToImage(): disallowing extraction of CopyBufferToImageInfo with non-empty pNext to prevent information loss", ); - return (**self._device).CmdCopyBufferToImage(self, info->srcBuffer, info->dstImage, info->dstImageLayout, info->regionCount, info.vkBufferImageCopies()); + return (**self._device).CmdCopyBufferToImage(self, info->srcBuffer, info->dstImage, info->dstImageLayout, info->regionCount, info.vkBufferImageCopies().data()); } void CommandBuffer::copyBufferToImageImplementationSwiftShader(CommandBuffer& self, const CopyBufferToImageInfo& info) { @@ -708,7 +708,7 @@ void CommandBuffer::copyBufferToImageImplementationSwiftShader(CommandBuffer& se fixupImageCopySwiftShader(copy.imageSubresource, copy.imageOffset, copy.imageExtent); } - return (**self._device).CmdCopyBufferToImage(self, info->srcBuffer, info->dstImage, info->dstImageLayout, info->regionCount, copies); + return (**self._device).CmdCopyBufferToImage(self, info->srcBuffer, info->dstImage, info->dstImageLayout, info->regionCount, copies.data()); } void CommandBuffer::copyBufferToImageImplementationKHR(CommandBuffer& self, const CopyBufferToImageInfo& info) { @@ -723,7 +723,7 @@ CommandBuffer& CommandBuffer::copyImageToBuffer(const CopyImageToBufferInfo& inf void CommandBuffer::copyImageToBufferImplementationDefault(CommandBuffer& self, const CopyImageToBufferInfo& info) { CORRADE_ASSERT(!info->pNext, "Vk::CommandBuffer::copyImageToBuffer(): disallowing extraction of CopyImageToBufferInfo with non-empty pNext to prevent information loss", ); - return (**self._device).CmdCopyImageToBuffer(self, info->srcImage, info->srcImageLayout, info->dstBuffer, info->regionCount, info.vkBufferImageCopies()); + return (**self._device).CmdCopyImageToBuffer(self, info->srcImage, info->srcImageLayout, info->dstBuffer, info->regionCount, info.vkBufferImageCopies().data()); } void CommandBuffer::copyImageToBufferImplementationSwiftShader(CommandBuffer& self, const CopyImageToBufferInfo& info) { @@ -735,7 +735,7 @@ void CommandBuffer::copyImageToBufferImplementationSwiftShader(CommandBuffer& se fixupImageCopySwiftShader(copy.imageSubresource, copy.imageOffset, copy.imageExtent); } - return (**self._device).CmdCopyImageToBuffer(self, info->srcImage, info->srcImageLayout, info->dstBuffer, info->regionCount, copies); + return (**self._device).CmdCopyImageToBuffer(self, info->srcImage, info->srcImageLayout, info->dstBuffer, info->regionCount, copies.data()); } void CommandBuffer::copyImageToBufferImplementationKHR(CommandBuffer& self, const CopyImageToBufferInfo& info) { diff --git a/src/Magnum/Vk/Mesh.cpp b/src/Magnum/Vk/Mesh.cpp index 8532d076e..c165a4d5c 100644 --- a/src/Magnum/Vk/Mesh.cpp +++ b/src/Magnum/Vk/Mesh.cpp @@ -221,10 +221,10 @@ CommandBuffer& CommandBuffer::draw(Mesh& mesh) { /** @todo don't call this for each binding, detect ranges */ _device->state().cmdBindVertexBuffersImplementation(*this, bindings[i].binding, 1, - mesh.vertexBuffers() + i, - mesh.vertexBufferOffsets() + i, + mesh.vertexBuffers().data() + i, + mesh.vertexBufferOffsets().data() + i, _dynamicRasterizationStates & DynamicRasterizationState::VertexInputBindingStride ? - mesh.vertexBufferStrides() + i : nullptr + mesh.vertexBufferStrides().data() + i : nullptr ); } diff --git a/src/Magnum/Vk/MeshLayout.cpp b/src/Magnum/Vk/MeshLayout.cpp index dad6714bc..5af596651 100644 --- a/src/Magnum/Vk/MeshLayout.cpp +++ b/src/Magnum/Vk/MeshLayout.cpp @@ -136,12 +136,12 @@ bool MeshLayout::hasNoExternalPointers() const { /* Vertex binding descriptions should point to our data, if any, otherwise it should be null and the count zero */ - ((!_vertexInfo.vertexBindingDescriptionCount && !_vertexInfo.pVertexBindingDescriptions) || (_state && _vertexInfo.pVertexBindingDescriptions == _state->bindings)) && + ((!_vertexInfo.vertexBindingDescriptionCount && !_vertexInfo.pVertexBindingDescriptions) || (_state && _vertexInfo.pVertexBindingDescriptions == _state->bindings.data())) && /* Attribute descriptions should point to our data, if any, otherwise it should be null and the count zero */ - ((!_vertexInfo.vertexAttributeDescriptionCount && !_vertexInfo.pVertexAttributeDescriptions) || (_state && _vertexInfo.pVertexAttributeDescriptions == _state->attributes)) && + ((!_vertexInfo.vertexAttributeDescriptionCount && !_vertexInfo.pVertexAttributeDescriptions) || (_state && _vertexInfo.pVertexAttributeDescriptions == _state->attributes.data())) && /* Vertex divisor descriptions should point to our data, if any */ - (!_state || _state->vertexDivisorInfo.pVertexBindingDivisors == _state->bindingDivisors); + (!_state || _state->vertexDivisorInfo.pVertexBindingDivisors == _state->bindingDivisors.data()); } #endif @@ -169,9 +169,9 @@ bool MeshLayout::operator==(const MeshLayout& other) const { enforce), otherwise this wouldn't be enough */ /** @todo use Utility::equal() once it exists, this is way too error-prone */ - std::memcmp(other._state->bindings, _state->bindings, _vertexInfo.vertexBindingDescriptionCount*sizeof(decltype(_state->bindings)::Type)) == 0 && - std::memcmp(other._state->bindingDivisors, _state->bindingDivisors, _state->vertexDivisorInfo.vertexBindingDivisorCount*sizeof(decltype(_state->bindingDivisors)::Type)) == 0 && - std::memcmp(other._state->attributes, _state->attributes, _vertexInfo.vertexAttributeDescriptionCount*sizeof(decltype(_state->attributes)::Type)) == 0; + std::memcmp(other._state->bindings.data(), _state->bindings.data(), _vertexInfo.vertexBindingDescriptionCount*sizeof(decltype(_state->bindings)::Type)) == 0 && + std::memcmp(other._state->bindingDivisors.data(), _state->bindingDivisors.data(), _state->vertexDivisorInfo.vertexBindingDivisorCount*sizeof(decltype(_state->bindingDivisors)::Type)) == 0 && + std::memcmp(other._state->attributes.data(), _state->attributes.data(), _vertexInfo.vertexAttributeDescriptionCount*sizeof(decltype(_state->attributes)::Type)) == 0; #undef _c } @@ -189,7 +189,7 @@ MeshLayout& MeshLayout::addBinding(const UnsignedInt binding, const UnsignedInt description.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; arrayAppend(_state->bindings, description); _vertexInfo.vertexBindingDescriptionCount = _state->bindings.size(); - _vertexInfo.pVertexBindingDescriptions = _state->bindings; + _vertexInfo.pVertexBindingDescriptions = _state->bindings.data(); return *this; } @@ -212,7 +212,7 @@ MeshLayout& MeshLayout::addInstancedBinding(const UnsignedInt binding, const Uns description.inputRate = VK_VERTEX_INPUT_RATE_INSTANCE; arrayAppend(_state->bindings, description); _vertexInfo.vertexBindingDescriptionCount = _state->bindings.size(); - _vertexInfo.pVertexBindingDescriptions = _state->bindings; + _vertexInfo.pVertexBindingDescriptions = _state->bindings.data(); if(divisor != 1) { VkVertexInputBindingDivisorDescriptionEXT divisorDescription{}; @@ -220,7 +220,7 @@ MeshLayout& MeshLayout::addInstancedBinding(const UnsignedInt binding, const Uns divisorDescription.divisor = divisor; arrayAppend(_state->bindingDivisors, divisorDescription); _state->vertexDivisorInfo.vertexBindingDivisorCount = _state->bindingDivisors.size(); - _state->vertexDivisorInfo.pVertexBindingDivisors = _state->bindingDivisors; + _state->vertexDivisorInfo.pVertexBindingDivisors = _state->bindingDivisors.data(); /* Attach the structure if not already */ if(!_state->vertexDivisorInfo.sType) @@ -249,7 +249,7 @@ MeshLayout& MeshLayout::addAttribute(const UnsignedInt location, const UnsignedI description.offset = offset; arrayAppend(_state->attributes, description); _vertexInfo.vertexAttributeDescriptionCount = _state->attributes.size(); - _vertexInfo.pVertexAttributeDescriptions = _state->attributes; + _vertexInfo.pVertexAttributeDescriptions = _state->attributes.data(); return *this; } diff --git a/src/Magnum/Vk/Pipeline.cpp b/src/Magnum/Vk/Pipeline.cpp index 6e167f11b..2ea92b359 100644 --- a/src/Magnum/Vk/Pipeline.cpp +++ b/src/Magnum/Vk/Pipeline.cpp @@ -60,7 +60,7 @@ RasterizationPipelineCreateInfo::RasterizationPipelineCreateInfo(const ShaderSet _info.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; _info.flags = VkPipelineCreateFlags(flags); _info.stageCount = shaderSet.stages().size(); - _info.pStages = shaderSet.stages(); + _info.pStages = shaderSet.stages().data(); _info.pVertexInputState = meshLayout; _info.pInputAssemblyState = meshLayout; @@ -94,7 +94,7 @@ RasterizationPipelineCreateInfo::RasterizationPipelineCreateInfo(const ShaderSet _colorBlendInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; _colorBlendInfo.attachmentCount = subpassColorAttachmentCount; - _colorBlendInfo.pAttachments = _state->colorBlendAttachments; + _colorBlendInfo.pAttachments = _state->colorBlendAttachments.data(); _info.pColorBlendState = &_colorBlendInfo; /* pDynamicState left null, gets set by setDynamicStates() if needed */ @@ -266,7 +266,7 @@ RasterizationPipelineCreateInfo& RasterizationPipelineCreateInfo::setDynamicStat _dynamicInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; _dynamicInfo.dynamicStateCount = count; - _dynamicInfo.pDynamicStates = _state->dynamicStateList; + _dynamicInfo.pDynamicStates = _state->dynamicStateList.data(); _info.pDynamicState = &_dynamicInfo; return *this; } diff --git a/src/Magnum/Vk/PipelineLayout.cpp b/src/Magnum/Vk/PipelineLayout.cpp index 35f58dc9d..61b712249 100644 --- a/src/Magnum/Vk/PipelineLayout.cpp +++ b/src/Magnum/Vk/PipelineLayout.cpp @@ -46,7 +46,7 @@ PipelineLayoutCreateInfo::PipelineLayoutCreateInfo(const Containers::ArrayView{}} {} diff --git a/src/Magnum/Vk/Queue.cpp b/src/Magnum/Vk/Queue.cpp index c165888c3..65208b783 100644 --- a/src/Magnum/Vk/Queue.cpp +++ b/src/Magnum/Vk/Queue.cpp @@ -78,7 +78,7 @@ void Queue::submit(const Containers::ArrayView> infos, VkFence fence) { @@ -145,7 +145,7 @@ SubmitInfo& SubmitInfo::setCommandBuffers(const Containers::ArrayViewcommandBuffers = Containers::Array{NoInit, buffers.size()}; Utility::copy(buffers, _state->commandBuffers); _info.commandBufferCount = _state->commandBuffers.size(); - _info.pCommandBuffers = _state->commandBuffers; + _info.pCommandBuffers = _state->commandBuffers.data(); return *this; } diff --git a/src/Magnum/Vk/RenderPass.cpp b/src/Magnum/Vk/RenderPass.cpp index 6718b0503..be3b58ff0 100644 --- a/src/Magnum/Vk/RenderPass.cpp +++ b/src/Magnum/Vk/RenderPass.cpp @@ -253,14 +253,14 @@ template void SubpassDescription::setInputAttachmentsInternal(Container }; for(std::size_t i = 0; i != attachments.size(); ++i) { - new(wrappers + i) AttachmentReference{attachments[i]}; + new(wrappers.data() + i) AttachmentReference{attachments[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkAttachments2 + i) VkAttachmentReference2(wrappers[i]); + new(vkAttachments2.data() + i) VkAttachmentReference2(wrappers[i]); } _description.inputAttachmentCount = attachments.size(); - _description.pInputAttachments = vkAttachments2; + _description.pInputAttachments = vkAttachments2.data(); } SubpassDescription& SubpassDescription::setInputAttachments(Containers::ArrayView attachments) & { @@ -303,23 +303,23 @@ template void SubpassDescription::setColorAttachmentsInternal(Container }; for(std::size_t i = 0; i != attachments.size(); ++i) { - new(wrappers + i) AttachmentReference{attachments[i]}; + new(wrappers.data() + i) AttachmentReference{attachments[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkAttachments2 + i) VkAttachmentReference2(*wrappers[i]); + new(vkAttachments2.data() + i) VkAttachmentReference2(*wrappers[i]); } if(!resolveAttachments.isEmpty()) for(std::size_t i = 0; i != attachments.size(); ++i) { - new(resolveWrappers + i) AttachmentReference{resolveAttachments[i]}; + new(resolveWrappers.data() + i) AttachmentReference{resolveAttachments[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkResolveAttachments2 + i) VkAttachmentReference2(*resolveWrappers[i]); + new(vkResolveAttachments2.data() + i) VkAttachmentReference2(*resolveWrappers[i]); } _description.colorAttachmentCount = attachments.size(); - _description.pColorAttachments = vkAttachments2; + _description.pColorAttachments = vkAttachments2.data(); _description.pResolveAttachments = resolveAttachments.isEmpty() ? - nullptr : vkResolveAttachments2; + nullptr : vkResolveAttachments2.data(); } SubpassDescription& SubpassDescription::setColorAttachments(Containers::ArrayView attachments, Containers::ArrayView resolveAttachments) & { @@ -367,7 +367,7 @@ SubpassDescription& SubpassDescription::setPreserveAttachments(Containers::Array _state->preserveAttachments = Utility::move(attachments); _description.preserveAttachmentCount = _state->preserveAttachments.size(); - _description.pPreserveAttachments = _state->preserveAttachments; + _description.pPreserveAttachments = _state->preserveAttachments.data(); return *this; } @@ -460,7 +460,7 @@ Containers::Array SubpassDescription::vkSubpassDescription /* Fill it with data and return, faking a size of 1 and with a custom deleter that correctly deletes as a char array again */ - Containers::Pair out = vkSubpassDescriptionExtrasInto(_description, storage.exceptPrefix(sizeof(VkSubpassDescription))); + Containers::Pair out = vkSubpassDescriptionExtrasInto(_description, storage.exceptPrefix(sizeof(VkSubpassDescription)).data()); CORRADE_INTERNAL_ASSERT(out.second() == extrasSize); *reinterpret_cast(storage.data()) = out.first(); return Containers::Array{ @@ -614,14 +614,14 @@ template void RenderPassCreateInfo::setAttachmentsInternal(Containers:: }; for(std::size_t i = 0; i != attachments.size(); ++i) { - new(wrappers + i) AttachmentDescription{attachments[i]}; + new(wrappers.data() + i) AttachmentDescription{attachments[i]}; /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkAttachments2 + i) VkAttachmentDescription2(wrappers[i]); + new(vkAttachments2.data() + i) VkAttachmentDescription2(wrappers[i]); } _info.attachmentCount = attachments.size(); - _info.pAttachments = vkAttachments2; + _info.pAttachments = vkAttachments2.data(); } RenderPassCreateInfo& RenderPassCreateInfo::setAttachments(Containers::ArrayView attachments) { @@ -648,7 +648,7 @@ RenderPassCreateInfo& RenderPassCreateInfo::addSubpass(SubpassDescription&& subp /* The arrays might have been reallocated, reconnect the info structure pointers */ _info.subpassCount = _state->vkSubpasses2.size(); - _info.pSubpasses = _state->vkSubpasses2; + _info.pSubpasses = _state->vkSubpasses2.data(); return *this; } @@ -668,11 +668,11 @@ template void RenderPassCreateInfo::setDependenciesInternal(Containers: for(std::size_t i = 0; i != dependencies.size(); ++i) { /* Can't use {} with GCC 4.8 here because it tries to initialize the first member instead of doing a copy */ - new(vkDependencies2 + i) VkSubpassDependency2(SubpassDependency{dependencies[i]}); + new(vkDependencies2.data() + i) VkSubpassDependency2(SubpassDependency{dependencies[i]}); } _info.dependencyCount = dependencies.size(); - _info.pDependencies = vkDependencies2; + _info.pDependencies = vkDependencies2.data(); } RenderPassCreateInfo& RenderPassCreateInfo::setDependencies(Containers::ArrayView dependencies) { @@ -732,26 +732,26 @@ Containers::Array RenderPassCreateInfo::vkRenderPassCrea higher alignment requirements first, put the "extras" at the end */ std::size_t offset = sizeof(VkRenderPassCreateInfo); std::size_t extrasOffset = sizeof(VkRenderPassCreateInfo) + structuresSize; - info1.pSubpasses = reinterpret_cast(storage + offset); + info1.pSubpasses = reinterpret_cast(storage.data() + offset); for(std::size_t i = 0; i != _info.subpassCount; ++i) { - Containers::Pair out = vkSubpassDescriptionExtrasInto(_info.pSubpasses[i], storage + extrasOffset); - *reinterpret_cast(storage + offset) = out.first(); + Containers::Pair out = vkSubpassDescriptionExtrasInto(_info.pSubpasses[i], storage.data() + extrasOffset); + *reinterpret_cast(storage.data() + offset) = out.first(); offset += sizeof(VkSubpassDescription); extrasOffset += out.second(); } CORRADE_INTERNAL_ASSERT(extrasOffset == storage.size()); /* Attachment descriptions */ - info1.pAttachments = reinterpret_cast(storage + offset); + info1.pAttachments = reinterpret_cast(storage.data() + offset); for(std::size_t i = 0; i != _info.attachmentCount; ++i) { - *reinterpret_cast(storage + offset) = vkAttachmentDescription(_info.pAttachments[i]); + *reinterpret_cast(storage.data() + offset) = vkAttachmentDescription(_info.pAttachments[i]); offset += sizeof(VkAttachmentDescription); } /* Subpass dependencies */ - info1.pDependencies = reinterpret_cast(storage + offset); + info1.pDependencies = reinterpret_cast(storage.data() + offset); for(std::size_t i = 0; i != _info.dependencyCount; ++i) { - *reinterpret_cast(storage + offset) = vkSubpassDependency(_info.pDependencies[i]); + *reinterpret_cast(storage.data() + offset) = vkSubpassDependency(_info.pDependencies[i]); offset += sizeof(VkSubpassDependency); } @@ -813,7 +813,7 @@ VkRenderPass RenderPass::release() { } VkResult RenderPass::createImplementationDefault(Device& device, const RenderPassCreateInfo& info, const VkAllocationCallbacks* const callbacks, VkRenderPass* const handle) { - return device->CreateRenderPass(device, info.vkRenderPassCreateInfo(), callbacks, handle); + return device->CreateRenderPass(device, info.vkRenderPassCreateInfo().data(), callbacks, handle); } VkResult RenderPass::createImplementationKHR(Device& device, const RenderPassCreateInfo& info, const VkAllocationCallbacks* const callbacks, VkRenderPass* const handle) { @@ -901,7 +901,7 @@ RenderPassBeginInfo& RenderPassBeginInfo::clearInternal(const UnsignedInt attach arrayResize(_state->clearValues, NoInit, attachment + 1); _state->clearValues[attachment] = value; _info.clearValueCount = _state->clearValues.size(); - _info.pClearValues = _state->clearValues; + _info.pClearValues = _state->clearValues.data(); return *this; } diff --git a/src/Magnum/Vk/Shader.cpp b/src/Magnum/Vk/Shader.cpp index 49dffde7d..af2f6313e 100644 --- a/src/Magnum/Vk/Shader.cpp +++ b/src/Magnum/Vk/Shader.cpp @@ -144,7 +144,7 @@ VkResult Shader::createImplementationSwiftShaderMultiEntryPointPatching(Device& /* If the code looks like SPIR-V, patch it. If not, supply the original and let SwiftShader deal with it. */ - if(Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(mutableCode, mutableCode.size())) { + if(Containers::ArrayView spirv = ShaderTools::Implementation::spirvData(mutableCode.data(), mutableCode.size())) { Implementation::spirvPatchSwiftShaderConflictingMultiEntrypointLocations(spirv); patchedInfo.pCode = reinterpret_cast(mutableCode.data()); } diff --git a/src/Magnum/Vk/ShaderSet.cpp b/src/Magnum/Vk/ShaderSet.cpp index 172040193..e6a0d45cb 100644 --- a/src/Magnum/Vk/ShaderSet.cpp +++ b/src/Magnum/Vk/ShaderSet.cpp @@ -148,9 +148,9 @@ ShaderSet& ShaderSet::addShader(const ShaderStage stage, const VkShaderModule sh } _specializations[_stageCount].mapEntryCount = newSpecializations.size(); - _specializations[_stageCount].pMapEntries = newSpecializations; + _specializations[_stageCount].pMapEntries = newSpecializations.data(); _specializations[_stageCount].dataSize = newSpecializationData.size(); - _specializations[_stageCount].pData = newSpecializationData; + _specializations[_stageCount].pData = newSpecializationData.data(); _stages[_stageCount].pSpecializationInfo = _specializations + _stageCount; } diff --git a/src/Magnum/Vk/Test/DeviceVkTest.cpp b/src/Magnum/Vk/Test/DeviceVkTest.cpp index 305d3dbfb..f49d64d94 100644 --- a/src/Magnum/Vk/Test/DeviceVkTest.cpp +++ b/src/Magnum/Vk/Test/DeviceVkTest.cpp @@ -757,7 +757,7 @@ void DeviceVkTest::constructExtensionsCommandLineDisable() { /* Creating a dedicated instance so we can pass custom args and enable layers independently */ - Instance instance2{InstanceCreateInfo{Int(data.argsDisable.size()), data.argsDisable} + Instance instance2{InstanceCreateInfo{Int(data.argsDisable.size()), data.argsDisable.data()} .addEnabledLayers({"VK_LAYER_KHRONOS_validation"}) /* Needed by VK_EXT_debug_marker */ .addEnabledExtensions() @@ -819,7 +819,7 @@ void DeviceVkTest::constructExtensionsCommandLineEnable() { /* Creating a dedicated instance so we can pass custom args and enable layers independently */ - Instance instance2{InstanceCreateInfo{Int(data.argsEnable.size()), data.argsEnable} + Instance instance2{InstanceCreateInfo{Int(data.argsEnable.size()), data.argsEnable.data()} .addEnabledLayers({"VK_LAYER_KHRONOS_validation"}) /* Needed by VK_EXT_debug_marker */ .addEnabledExtensions() @@ -871,7 +871,7 @@ void DeviceVkTest::constructWorkaroundsCommandLineDisable() { CORRADE_SKIP("Can't test with the MAGNUM_VULKAN_VERSION environment variable set"); /* Creating a dedicated instance so we can pass custom args */ - Instance instance2{InstanceCreateInfo{Int(data.args.size()), data.args}}; + Instance instance2{InstanceCreateInfo{Int(data.args.size()), data.args.data()}}; DeviceProperties deviceProperties = pickDevice(instance2); diff --git a/src/Magnum/Vk/Test/InstanceVkTest.cpp b/src/Magnum/Vk/Test/InstanceVkTest.cpp index 192c5ae2a..82eb677bf 100644 --- a/src/Magnum/Vk/Test/InstanceVkTest.cpp +++ b/src/Magnum/Vk/Test/InstanceVkTest.cpp @@ -380,7 +380,7 @@ void InstanceVkTest::constructCommandLineDisable() { Containers::String out; Warning redirectWarning{&out}; Debug redirectOutput{&out}; - Instance instance{InstanceCreateInfo{Int(data.argsDisable.size()), data.argsDisable, + Instance instance{InstanceCreateInfo{Int(data.argsDisable.size()), data.argsDisable.data(), InstanceCreateInfo::Flag::NoImplicitExtensions} .setApplicationInfo("InstanceVkTest", version(0, 0, 1)) .addEnabledLayers({"VK_LAYER_KHRONOS_validation"_s}) @@ -420,7 +420,7 @@ void InstanceVkTest::constructCommandLineEnable() { Containers::String out; Warning redirectWarning{&out}; Debug redirectOutput{&out}; - Instance instance{InstanceCreateInfo{Int(data.argsEnable.size()), data.argsEnable, + Instance instance{InstanceCreateInfo{Int(data.argsEnable.size()), data.argsEnable.data(), InstanceCreateInfo::Flag::NoImplicitExtensions} /* Nothing enabled by the application */ }; diff --git a/src/Magnum/Vk/Test/PipelineTest.cpp b/src/Magnum/Vk/Test/PipelineTest.cpp index b3965d4e2..d8cc01fed 100644 --- a/src/Magnum/Vk/Test/PipelineTest.cpp +++ b/src/Magnum/Vk/Test/PipelineTest.cpp @@ -193,7 +193,7 @@ void PipelineTest::rasterizationCreateInfoConstruct() { RasterizationPipelineCreateInfo info{shaderSet, meshLayout, reinterpret_cast(reinterpret_cast(std::size_t{0xdead})), reinterpret_cast(reinterpret_cast(std::size_t{0xbeef})), 15, 3, RasterizationPipelineCreateInfo::Flag::DisableOptimization|RasterizationPipelineCreateInfo::Flag::AllowDerivatives}; CORRADE_COMPARE(info->flags, VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT|VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT); CORRADE_COMPARE(info->stageCount, 2); - CORRADE_COMPARE(info->pStages, shaderSet.stages()); + CORRADE_COMPARE(info->pStages, shaderSet.stages().data()); CORRADE_COMPARE(info->pVertexInputState, &meshLayout.vkPipelineVertexInputStateCreateInfo()); CORRADE_COMPARE(info->pInputAssemblyState, &meshLayout.vkPipelineInputAssemblyStateCreateInfo()); CORRADE_VERIFY(!info->pViewportState); @@ -327,7 +327,7 @@ void PipelineTest::rasterizationCreateInfoConstructMove() { members */ a.reset(); CORRADE_COMPARE((**b).stageCount, 2); - CORRADE_COMPARE((**b).pStages, shaderSet.stages()); + CORRADE_COMPARE((**b).pStages, shaderSet.stages().data()); CORRADE_COMPARE((**b).pVertexInputState, &meshLayout.vkPipelineVertexInputStateCreateInfo()); CORRADE_COMPARE((**b).pInputAssemblyState, &meshLayout.vkPipelineInputAssemblyStateCreateInfo()); CORRADE_VERIFY((**b).pViewportState); @@ -362,7 +362,7 @@ void PipelineTest::rasterizationCreateInfoConstructMove() { members */ b.reset(); CORRADE_COMPARE((**c).stageCount, 2); - CORRADE_COMPARE((**c).pStages, shaderSet.stages()); + CORRADE_COMPARE((**c).pStages, shaderSet.stages().data()); CORRADE_COMPARE((**c).pVertexInputState, &meshLayout.vkPipelineVertexInputStateCreateInfo()); CORRADE_COMPARE((**c).pInputAssemblyState, &meshLayout.vkPipelineInputAssemblyStateCreateInfo()); CORRADE_VERIFY((**c).pViewportState); diff --git a/src/Magnum/Vk/Test/RenderPassVkTest.cpp b/src/Magnum/Vk/Test/RenderPassVkTest.cpp index 478971952..9ad861102 100644 --- a/src/Magnum/Vk/Test/RenderPassVkTest.cpp +++ b/src/Magnum/Vk/Test/RenderPassVkTest.cpp @@ -155,7 +155,7 @@ void RenderPassVkTest::wrap() { .addSubpass(SubpassDescription{}.setColorAttachments({ AttachmentReference{0, ImageLayout::ColorAttachment} })) - .vkRenderPassCreateInfo(), + .vkRenderPassCreateInfo().data(), nullptr, &renderPass)), Result::Success); auto wrapped = RenderPass::wrap(device(), renderPass, HandleFlag::DestroyOnDestruction); diff --git a/src/Magnum/Vk/Test/ShaderTest.cpp b/src/Magnum/Vk/Test/ShaderTest.cpp index 611e4108e..6a7dbffa0 100644 --- a/src/Magnum/Vk/Test/ShaderTest.cpp +++ b/src/Magnum/Vk/Test/ShaderTest.cpp @@ -78,7 +78,7 @@ void ShaderTest::spirvPatchSwiftShaderConflictingMultiEntrypointLocations() { 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(), data->size()); CORRADE_VERIFY(spirv); Containers::ArrayView view = spirv; diff --git a/src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp b/src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp index e6a4eb00a..5560c4c28 100644 --- a/src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp +++ b/src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp @@ -73,8 +73,8 @@ void AnyConverter::doSetOutputFormat(Format format, Containers::StringView versi void AnyConverter::doSetDefinitions(const Containers::ArrayView> definitions) { /* We have to make a local copy, unfortunately, and then a view on that local copy */ - _state->definitions = Containers::Array>{definitions.size()}; - _state->definitionViews = Containers::Array>{definitions.size()}; + _state->definitions = Containers::Array>{ValueInit, definitions.size()}; + _state->definitionViews = Containers::Array>{ValueInit, definitions.size()}; for(std::size_t i = 0; i != definitions.size(); ++i) { /* Avoid a copy if the input is a global string literal */ _state->definitions[i] = { diff --git a/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp b/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp index a23144c8c..263b1c52b 100644 --- a/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp +++ b/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp @@ -140,7 +140,7 @@ std::vector>> MagnumFontConverter std::ostringstream confOut; configuration.save(confOut); std::string confStr = confOut.str(); - Containers::Array confData{confStr.size()}; + Containers::Array confData{NoInit, confStr.size()}; std::copy(confStr.begin(), confStr.end(), confData.begin()); /* Save cache image. Either the source image or the processed one if the diff --git a/src/MagnumPlugins/ObjImporter/ObjImporter.cpp b/src/MagnumPlugins/ObjImporter/ObjImporter.cpp index d9d639693..4ba0285db 100644 --- a/src/MagnumPlugins/ObjImporter/ObjImporter.cpp +++ b/src/MagnumPlugins/ObjImporter/ObjImporter.cpp @@ -586,7 +586,7 @@ Containers::Optional ObjImporter::doMesh(const UnsignedInt id, Unsigne ++attributeCount; stride += sizeof(Vector3); } - Containers::Array attributeData{attributeCount}; + Containers::Array attributeData{ValueInit, attributeCount}; Containers::Array vertexData{NoInit, vertexCount*stride}; /* Duplicate the vertices into the output */ diff --git a/src/MagnumPlugins/TgaImporter/TgaImporter.cpp b/src/MagnumPlugins/TgaImporter/TgaImporter.cpp index f9c19daad..9dc08fa3c 100644 --- a/src/MagnumPlugins/TgaImporter/TgaImporter.cpp +++ b/src/MagnumPlugins/TgaImporter/TgaImporter.cpp @@ -52,7 +52,7 @@ TgaImporter::~TgaImporter() = default; ImporterFeatures TgaImporter::doFeatures() const { return ImporterFeature::OpenData; } -bool TgaImporter::doIsOpened() const { return _in; } +bool TgaImporter::doIsOpened() const { return !!_in; } void TgaImporter::doClose() { _in = nullptr; } @@ -183,7 +183,7 @@ Containers::Optional TgaImporter::doImage2D(UnsignedInt, UnsignedIn } /* Copy data directly if not RLE */ - Containers::Array data{outputSize}; + Containers::Array data{NoInit, outputSize}; if(!rle) { if(srcPixels.size() < outputSize) { Error{} << "Trade::TgaImporter::image2D(): file too short, expected" << outputSize + sizeof(Implementation::TgaHeader) << "bytes but got" << _in.size();