image: Add Depth_MicroTiled and Display_MicroTiled tiling modes.

This commit is contained in:
squidbus 2024-12-28 11:28:31 -08:00
parent ee974414d2
commit e0d52b3cf5
3 changed files with 11 additions and 2 deletions

View File

@ -122,7 +122,9 @@ constexpr std::string_view NameOf(ImageType type) {
enum class TilingMode : u32 { enum class TilingMode : u32 {
Depth_MacroTiled = 0u, Depth_MacroTiled = 0u,
Depth_MicroTiled = 0x5u,
Display_Linear = 0x8u, Display_Linear = 0x8u,
Display_MicroTiled = 0x9u,
Display_MacroTiled = 0xAu, Display_MacroTiled = 0xAu,
Texture_MicroTiled = 0xDu, Texture_MicroTiled = 0xDu,
Texture_MacroTiled = 0xEu, Texture_MacroTiled = 0xEu,
@ -131,10 +133,14 @@ enum class TilingMode : u32 {
constexpr std::string_view NameOf(TilingMode type) { constexpr std::string_view NameOf(TilingMode type) {
switch (type) { switch (type) {
case TilingMode::Depth_MicroTiled:
return "Depth_MicroTiled";
case TilingMode::Depth_MacroTiled: case TilingMode::Depth_MacroTiled:
return "Depth_MacroTiled"; return "Depth_MacroTiled";
case TilingMode::Display_Linear: case TilingMode::Display_Linear:
return "Display_Linear"; return "Display_Linear";
case TilingMode::Display_MicroTiled:
return "Display_MicroTiled";
case TilingMode::Display_MacroTiled: case TilingMode::Display_MacroTiled:
return "Display_MacroTiled"; return "Display_MacroTiled";
case TilingMode::Texture_MicroTiled: case TilingMode::Texture_MicroTiled:
@ -294,8 +300,7 @@ struct Image {
TilingMode GetTilingMode() const { TilingMode GetTilingMode() const {
if (tiling_index >= 0 && tiling_index <= 7) { if (tiling_index >= 0 && tiling_index <= 7) {
return tiling_index == 5 ? TilingMode::Texture_MicroTiled return tiling_index == 5 ? TilingMode::Depth_MicroTiled : TilingMode::Depth_MacroTiled;
: TilingMode::Depth_MacroTiled;
} }
return static_cast<TilingMode>(tiling_index); return static_cast<TilingMode>(tiling_index);
} }

View File

@ -369,6 +369,8 @@ void ImageInfo::UpdateSize() {
case AmdGpu::TilingMode::Texture_Volume: case AmdGpu::TilingMode::Texture_Volume:
mip_d += (-mip_d) & 3u; mip_d += (-mip_d) & 3u;
[[fallthrough]]; [[fallthrough]];
case AmdGpu::TilingMode::Depth_MicroTiled:
case AmdGpu::TilingMode::Display_MicroTiled:
case AmdGpu::TilingMode::Texture_MicroTiled: { case AmdGpu::TilingMode::Texture_MicroTiled: {
std::tie(mip_info.pitch, mip_info.size) = std::tie(mip_info.pitch, mip_info.size) =
ImageSizeMicroTiled(mip_w, mip_h, bpp, num_samples); ImageSizeMicroTiled(mip_w, mip_h, bpp, num_samples);

View File

@ -89,6 +89,8 @@ const DetilerContext* TileManager::GetDetiler(const Image& image) const {
const auto format = DemoteImageFormatForDetiling(image.info.pixel_format); const auto format = DemoteImageFormatForDetiling(image.info.pixel_format);
switch (image.info.tiling_mode) { switch (image.info.tiling_mode) {
case AmdGpu::TilingMode::Depth_MicroTiled:
case AmdGpu::TilingMode::Display_MicroTiled:
case AmdGpu::TilingMode::Texture_MicroTiled: case AmdGpu::TilingMode::Texture_MicroTiled:
switch (format) { switch (format) {
case vk::Format::eR8Uint: case vk::Format::eR8Uint: