mirror of https://github.com/yuzu-emu/yuzu
44 lines
1.0 KiB
C++
44 lines
1.0 KiB
C++
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "core/hle/result.h"
|
|
|
|
namespace FileSys {
|
|
|
|
enum class CompressionType : u8 {
|
|
None = 0,
|
|
Zeros = 1,
|
|
Two = 2,
|
|
Lz4 = 3,
|
|
Unknown = 4,
|
|
};
|
|
|
|
using DecompressorFunction = Result (*)(void*, size_t, const void*, size_t);
|
|
using GetDecompressorFunction = DecompressorFunction (*)(CompressionType);
|
|
|
|
constexpr s64 CompressionBlockAlignment = 0x10;
|
|
|
|
namespace CompressionTypeUtility {
|
|
|
|
constexpr bool IsBlockAlignmentRequired(CompressionType type) {
|
|
return type != CompressionType::None && type != CompressionType::Zeros;
|
|
}
|
|
|
|
constexpr bool IsDataStorageAccessRequired(CompressionType type) {
|
|
return type != CompressionType::Zeros;
|
|
}
|
|
|
|
constexpr bool IsRandomAccessible(CompressionType type) {
|
|
return type == CompressionType::None;
|
|
}
|
|
|
|
constexpr bool IsUnknownType(CompressionType type) {
|
|
return type >= CompressionType::Unknown;
|
|
}
|
|
|
|
} // namespace CompressionTypeUtility
|
|
|
|
} // namespace FileSys
|