133 ~IImage()
noexcept override =
default;
136 using IDeviceMemory::size;
144 [[nodiscard]]
virtual std::size_t
size(
unsigned int level)
const = 0;
159 [[nodiscard]] virtual Format format() const noexcept = 0;
167 [[nodiscard]] virtual ImageDimensions dimensions() const noexcept = 0;
173 [[nodiscard]] virtual
unsigned int levels() const noexcept = 0;
179 [[nodiscard]] virtual
unsigned int layers() const noexcept = 0;
187 [[nodiscard]] virtual
unsigned int planes() const noexcept = 0;
193 [[nodiscard]] virtual MultiSamplingLevel samples() const noexcept = 0;
200 [[nodiscard]] virtual ImageLayout layout(
unsigned int sub_resource = 0) const = 0;
209 [[nodiscard]] virtual
unsigned int subResourceId(
unsigned& level,
unsigned& layer,
unsigned& plane) const noexcept
211 return level + layer * levels() + plane * levels() * layers();
219 [[nodiscard]] std::tuple<unsigned, unsigned, unsigned>
resolveSubresource(
const unsigned subresource)
const noexcept
221 const unsigned level = levels();
222 const unsigned resources_per_plane = level * layers();
223 return std::make_tuple<unsigned, unsigned, unsigned>(subresource / resources_per_plane, subresource % resources_per_plane / level, subresource % level);
229struct std::formatter<spark::render::MultiSamplingLevel> : std::formatter<std::string_view>
231 static constexpr auto parse(format_parse_context& ctx) {
return ctx.begin(); }
233 static constexpr auto format(
const spark::render::MultiSamplingLevel level,
auto& ctx)
237 case spark::render::MultiSamplingLevel::X2:
238 return std::format_to(ctx.out(),
"X2");
239 case spark::render::MultiSamplingLevel::X4:
240 return std::format_to(ctx.out(),
"X4");
241 case spark::render::MultiSamplingLevel::X8:
242 return std::format_to(ctx.out(),
"X8");
243 case spark::render::MultiSamplingLevel::X16:
244 return std::format_to(ctx.out(),
"X16");
245 case spark::render::MultiSamplingLevel::X32:
246 return std::format_to(ctx.out(),
"X32");
247 case spark::render::MultiSamplingLevel::X64:
248 return std::format_to(ctx.out(),
"X64");
252 return std::format_to(ctx.out(),
"X1");
std::tuple< unsigned, unsigned, unsigned > resolveSubresource(const unsigned subresource) const noexcept
Returns the sub-resource ID for a combination of mip-map level, array layer and plane.
Definition Image.h:219