86 case vk::Format::eD16UnormS8Uint:
87 case vk::Format::eD24UnormS8Uint:
88 case vk::Format::eD32SfloatS8Uint:
89 return vk::ImageAspectFlagBits::eDepth | vk::ImageAspectFlagBits::eStencil;
91 case vk::Format::eD16Unorm:
92 case vk::Format::eD32Sfloat:
93 case vk::Format::eX8D24UnormPack32:
94 return vk::ImageAspectFlagBits::eDepth;
96 case vk::Format::eS8Uint:
97 return vk::ImageAspectFlagBits::eStencil;
100 return vk::ImageAspectFlagBits::eDepth;
104 return vk::ImageAspectFlagBits::eColor;
109 size_t bytes_per_pixel = 0;
112 case vk::Format::eR8Unorm:
113 case vk::Format::eR8Snorm:
114 case vk::Format::eR8Uint:
115 case vk::Format::eR8Sint:
119 case vk::Format::eR8G8Unorm:
120 case vk::Format::eR8G8Snorm:
121 case vk::Format::eR8G8Uint:
122 case vk::Format::eR8G8Sint:
123 case vk::Format::eR16Unorm:
124 case vk::Format::eR16Snorm:
125 case vk::Format::eR16Uint:
126 case vk::Format::eR16Sint:
127 case vk::Format::eR16Sfloat:
131 case vk::Format::eR8G8B8Unorm:
132 case vk::Format::eR8G8B8Snorm:
133 case vk::Format::eR8G8B8Uint:
134 case vk::Format::eR8G8B8Sint:
135 case vk::Format::eB8G8R8Unorm:
139 case vk::Format::eR8G8B8A8Unorm:
140 case vk::Format::eR8G8B8A8Snorm:
141 case vk::Format::eR8G8B8A8Uint:
142 case vk::Format::eR8G8B8A8Sint:
143 case vk::Format::eR8G8B8A8Srgb:
144 case vk::Format::eB8G8R8A8Unorm:
145 case vk::Format::eB8G8R8A8Srgb:
146 case vk::Format::eR16G16Unorm:
147 case vk::Format::eR16G16Snorm:
148 case vk::Format::eR16G16Uint:
149 case vk::Format::eR16G16Sint:
150 case vk::Format::eR16G16Sfloat:
151 case vk::Format::eR32Uint:
152 case vk::Format::eR32Sint:
153 case vk::Format::eR32Sfloat:
154 case vk::Format::eD24UnormS8Uint:
155 case vk::Format::eD32Sfloat:
159 case vk::Format::eR16G16B16A16Unorm:
160 case vk::Format::eR16G16B16A16Snorm:
161 case vk::Format::eR16G16B16A16Uint:
162 case vk::Format::eR16G16B16A16Sint:
163 case vk::Format::eR16G16B16A16Sfloat:
164 case vk::Format::eR32G32Uint:
165 case vk::Format::eR32G32Sint:
166 case vk::Format::eR32G32Sfloat:
170 case vk::Format::eR32G32B32Uint:
171 case vk::Format::eR32G32B32Sint:
172 case vk::Format::eR32G32B32Sfloat:
173 bytes_per_pixel = 12;
176 case vk::Format::eR32G32B32A32Uint:
177 case vk::Format::eR32G32B32A32Sint:
178 case vk::Format::eR32G32B32A32Sfloat:
179 bytes_per_pixel = 16;
186 "Unknown format for size calculation, assuming 4 bytes/pixel");
190 size_t total_size = 0;
196 total_size +=
static_cast<size_t>(mip_width) * mip_height * mip_depth * bytes_per_pixel;
198 mip_width = std::max(1U, mip_width / 2);
199 mip_height = std::max(1U, mip_height / 2);
200 mip_depth = std::max(1U, mip_depth / 2);
211 using namespace Kakshya;
229 m_dimensions.push_back(DataDimension::grouped(
"cubemap_faces", 6, 2));
234 uint32_t num_channels = 0;
236 case vk::Format::eR8Unorm:
237 case vk::Format::eR16Unorm:
238 case vk::Format::eR32Sfloat:
242 case vk::Format::eR8G8Unorm:
243 case vk::Format::eR16G16Unorm:
244 case vk::Format::eR32G32Sfloat:
248 case vk::Format::eR8G8B8Unorm:
249 case vk::Format::eB8G8R8Unorm:
253 case vk::Format::eR8G8B8A8Unorm:
254 case vk::Format::eB8G8R8A8Unorm:
255 case vk::Format::eR8G8B8A8Srgb:
256 case vk::Format::eR16G16B16A16Unorm:
257 case vk::Format::eR32G32B32A32Sfloat:
263 if (num_channels > 0) {
264 m_dimensions.push_back(DataDimension::channel(num_channels));
272 m_dimensions.push_back(DataDimension::grouped(
"cubemap_faces", 6, 2));
276 "VKImage dimensions inferred: {}x{}x{}, {} channels, {} mips, {} layers",