mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-06 01:12:33 +00:00
image: Add Depth_MicroTiled and Display_MicroTiled tiling modes.
This commit is contained in:
parent
ee974414d2
commit
e0d52b3cf5
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user