MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Hpp / TextureData

Method TextureData

samples/utils/utils.cpp:920–976  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

918 }
919
920 TextureData::TextureData( vk::PhysicalDevice const & physicalDevice,
921 vk::Device const & device,
922 vk::Extent2D const & extent_,
923 vk::ImageUsageFlags usageFlags,
924 vk::FormatFeatureFlags formatFeatureFlags,
925 bool anisotropyEnable,
926 bool forceStaging )
927 : format( vk::Format::eR8G8B8A8Unorm ), extent( extent_ )
928 {
929 vk::FormatProperties formatProperties = physicalDevice.getFormatProperties( format );
930
931 formatFeatureFlags |= vk::FormatFeatureFlagBits::eSampledImage;
932 needsStaging = forceStaging || ( ( formatProperties.linearTilingFeatures & formatFeatureFlags ) != formatFeatureFlags );
933 vk::ImageTiling imageTiling;
934 vk::ImageLayout initialLayout;
935 vk::MemoryPropertyFlags requirements;
936 if ( needsStaging )
937 {
938 assert( ( formatProperties.optimalTilingFeatures & formatFeatureFlags ) == formatFeatureFlags );
939 stagingBufferData =
940 std::unique_ptr<BufferData>( new BufferData( physicalDevice, device, extent.width * extent.height * 4, vk::BufferUsageFlagBits::eTransferSrc ) );
941 imageTiling = vk::ImageTiling::eOptimal;
942 usageFlags |= vk::ImageUsageFlagBits::eTransferDst;
943 initialLayout = vk::ImageLayout::eUndefined;
944 }
945 else
946 {
947 imageTiling = vk::ImageTiling::eLinear;
948 initialLayout = vk::ImageLayout::ePreinitialized;
949 requirements = vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible;
950 }
951 imageData = std::unique_ptr<ImageData>( new ImageData( physicalDevice,
952 device,
953 format,
954 extent,
955 imageTiling,
956 usageFlags | vk::ImageUsageFlagBits::eSampled,
957 initialLayout,
958 requirements,
959 vk::ImageAspectFlagBits::eColor ) );
960
961 sampler = device.createSampler( vk::SamplerCreateInfo( vk::SamplerCreateFlags(),
962 vk::Filter::eLinear,
963 vk::Filter::eLinear,
964 vk::SamplerMipmapMode::eLinear,
965 vk::SamplerAddressMode::eRepeat,
966 vk::SamplerAddressMode::eRepeat,
967 vk::SamplerAddressMode::eRepeat,
968 0.0f,
969 anisotropyEnable,
970 16.0f,
971 false,
972 vk::CompareOp::eNever,
973 0.0f,
974 0.0f,
975 vk::BorderColor::eFloatOpaqueBlack ) );
976 }
977

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected