core: misc changes (#430)
* core: misc changes * video_core: add some formats for detiling * clang format
This commit is contained in:
parent
5f963772a0
commit
6f4e1a47b9
|
@ -74,13 +74,22 @@ s32 PS4_SYSV_ABI sceKernelAvailableDirectMemorySize(u64 searchStart, u64 searchE
|
||||||
size_t* sizeOut) {
|
size_t* sizeOut) {
|
||||||
LOG_WARNING(Kernel_Vmm, "called searchStart = {:#x}, searchEnd = {:#x}, alignment = {:#x}",
|
LOG_WARNING(Kernel_Vmm, "called searchStart = {:#x}, searchEnd = {:#x}, alignment = {:#x}",
|
||||||
searchStart, searchEnd, alignment);
|
searchStart, searchEnd, alignment);
|
||||||
|
|
||||||
|
if (searchEnd <= searchStart) {
|
||||||
|
return ORBIS_KERNEL_ERROR_EINVAL;
|
||||||
|
}
|
||||||
|
if (searchEnd > SCE_KERNEL_MAIN_DMEM_SIZE) {
|
||||||
|
return ORBIS_KERNEL_ERROR_EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
auto* memory = Core::Memory::Instance();
|
auto* memory = Core::Memory::Instance();
|
||||||
|
|
||||||
PAddr physAddr;
|
PAddr physAddr;
|
||||||
s32 size = memory->DirectQueryAvailable(searchStart, searchEnd, alignment, &physAddr, sizeOut);
|
s32 result =
|
||||||
|
memory->DirectQueryAvailable(searchStart, searchEnd, alignment, &physAddr, sizeOut);
|
||||||
*physAddrOut = static_cast<u64>(physAddr);
|
*physAddrOut = static_cast<u64>(physAddr);
|
||||||
|
|
||||||
return size;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 PS4_SYSV_ABI sceKernelVirtualQuery(const void* addr, int flags, OrbisVirtualQueryInfo* info,
|
s32 PS4_SYSV_ABI sceKernelVirtualQuery(const void* addr, int flags, OrbisVirtualQueryInfo* info,
|
||||||
|
|
|
@ -974,8 +974,11 @@ int PS4_SYSV_ABI sceNpGetGamePresenceStatusA() {
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpGetNpId() {
|
int PS4_SYSV_ABI sceNpGetNpId(OrbisUserServiceUserId userId, OrbisNpId* npId) {
|
||||||
LOG_ERROR(Lib_NpManager, "(STUBBED) called");
|
LOG_ERROR(Lib_NpManager, "(DUMMY) called");
|
||||||
|
|
||||||
|
std::string name = "shadps4";
|
||||||
|
strcpy(npId->handle.data, name.c_str());
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,22 @@ class SymbolsResolver;
|
||||||
|
|
||||||
namespace Libraries::NpManager {
|
namespace Libraries::NpManager {
|
||||||
|
|
||||||
|
constexpr int ORBIS_NP_ONLINEID_MAX_LENGTH = 16;
|
||||||
|
|
||||||
|
typedef int OrbisUserServiceUserId;
|
||||||
|
|
||||||
|
struct OrbisNpOnlineId {
|
||||||
|
char data[ORBIS_NP_ONLINEID_MAX_LENGTH];
|
||||||
|
char term;
|
||||||
|
char dummy[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpId {
|
||||||
|
OrbisNpOnlineId handle;
|
||||||
|
u8 opt[8];
|
||||||
|
u8 reserved[8];
|
||||||
|
};
|
||||||
|
|
||||||
int PS4_SYSV_ABI Func_EF4378573542A508();
|
int PS4_SYSV_ABI Func_EF4378573542A508();
|
||||||
int PS4_SYSV_ABI _sceNpIpcCreateMemoryFromKernel();
|
int PS4_SYSV_ABI _sceNpIpcCreateMemoryFromKernel();
|
||||||
int PS4_SYSV_ABI _sceNpIpcCreateMemoryFromPool();
|
int PS4_SYSV_ABI _sceNpIpcCreateMemoryFromPool();
|
||||||
|
@ -204,7 +220,7 @@ int PS4_SYSV_ABI sceNpGetAccountLanguage2();
|
||||||
int PS4_SYSV_ABI sceNpGetAccountLanguageA();
|
int PS4_SYSV_ABI sceNpGetAccountLanguageA();
|
||||||
int PS4_SYSV_ABI sceNpGetGamePresenceStatus();
|
int PS4_SYSV_ABI sceNpGetGamePresenceStatus();
|
||||||
int PS4_SYSV_ABI sceNpGetGamePresenceStatusA();
|
int PS4_SYSV_ABI sceNpGetGamePresenceStatusA();
|
||||||
int PS4_SYSV_ABI sceNpGetNpId();
|
int PS4_SYSV_ABI sceNpGetNpId(OrbisUserServiceUserId userId, OrbisNpId* npId);
|
||||||
int PS4_SYSV_ABI sceNpGetNpReachabilityState();
|
int PS4_SYSV_ABI sceNpGetNpReachabilityState();
|
||||||
int PS4_SYSV_ABI sceNpGetOnlineId();
|
int PS4_SYSV_ABI sceNpGetOnlineId();
|
||||||
int PS4_SYSV_ABI sceNpGetParentalControlInfo();
|
int PS4_SYSV_ABI sceNpGetParentalControlInfo();
|
||||||
|
|
|
@ -407,6 +407,10 @@ spv::ImageFormat GetFormat(const AmdGpu::Image& image) {
|
||||||
image.GetNumberFmt() == AmdGpu::NumberFormat::Float) {
|
image.GetNumberFmt() == AmdGpu::NumberFormat::Float) {
|
||||||
return spv::ImageFormat::Rgba16f;
|
return spv::ImageFormat::Rgba16f;
|
||||||
}
|
}
|
||||||
|
if (image.GetDataFmt() == AmdGpu::DataFormat::Format16_16_16_16 &&
|
||||||
|
image.GetNumberFmt() == AmdGpu::NumberFormat::Unorm) {
|
||||||
|
return spv::ImageFormat::Rgba16;
|
||||||
|
}
|
||||||
if (image.GetDataFmt() == AmdGpu::DataFormat::Format8 &&
|
if (image.GetDataFmt() == AmdGpu::DataFormat::Format8 &&
|
||||||
image.GetNumberFmt() == AmdGpu::NumberFormat::Unorm) {
|
image.GetNumberFmt() == AmdGpu::NumberFormat::Unorm) {
|
||||||
return spv::ImageFormat::R8;
|
return spv::ImageFormat::R8;
|
||||||
|
|
|
@ -341,6 +341,7 @@ std::span<const vk::Format> GetAllFormats() {
|
||||||
vk::Format::eR32Sint,
|
vk::Format::eR32Sint,
|
||||||
vk::Format::eR32Uint,
|
vk::Format::eR32Uint,
|
||||||
vk::Format::eBc6HUfloatBlock,
|
vk::Format::eBc6HUfloatBlock,
|
||||||
|
vk::Format::eBc6HSfloatBlock,
|
||||||
vk::Format::eR16G16Unorm,
|
vk::Format::eR16G16Unorm,
|
||||||
vk::Format::eR16G16B16A16Sscaled,
|
vk::Format::eR16G16B16A16Sscaled,
|
||||||
vk::Format::eR16G16Sscaled,
|
vk::Format::eR16G16Sscaled,
|
||||||
|
@ -542,6 +543,9 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu
|
||||||
if (data_format == AmdGpu::DataFormat::FormatBc6 && num_format == AmdGpu::NumberFormat::Unorm) {
|
if (data_format == AmdGpu::DataFormat::FormatBc6 && num_format == AmdGpu::NumberFormat::Unorm) {
|
||||||
return vk::Format::eBc6HUfloatBlock;
|
return vk::Format::eBc6HUfloatBlock;
|
||||||
}
|
}
|
||||||
|
if (data_format == AmdGpu::DataFormat::FormatBc6 && num_format == AmdGpu::NumberFormat::Snorm) {
|
||||||
|
return vk::Format::eBc6HSfloatBlock;
|
||||||
|
}
|
||||||
if (data_format == AmdGpu::DataFormat::Format8_8_8_8 &&
|
if (data_format == AmdGpu::DataFormat::Format8_8_8_8 &&
|
||||||
num_format == AmdGpu::NumberFormat::Sint) {
|
num_format == AmdGpu::NumberFormat::Sint) {
|
||||||
return vk::Format::eR8G8B8A8Sint;
|
return vk::Format::eR8G8B8A8Sint;
|
||||||
|
|
|
@ -93,6 +93,7 @@ bool Swapchain::AcquireNextImage() {
|
||||||
case vk::Result::eSuboptimalKHR:
|
case vk::Result::eSuboptimalKHR:
|
||||||
case vk::Result::eErrorSurfaceLostKHR:
|
case vk::Result::eErrorSurfaceLostKHR:
|
||||||
case vk::Result::eErrorOutOfDateKHR:
|
case vk::Result::eErrorOutOfDateKHR:
|
||||||
|
case vk::Result::eErrorUnknown:
|
||||||
needs_recreation = true;
|
needs_recreation = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -186,6 +186,7 @@ vk::Format DemoteImageFormatForDetiling(vk::Format format) {
|
||||||
case vk::Format::eR32Sfloat:
|
case vk::Format::eR32Sfloat:
|
||||||
case vk::Format::eR32Uint:
|
case vk::Format::eR32Uint:
|
||||||
case vk::Format::eR16G16Sfloat:
|
case vk::Format::eR16G16Sfloat:
|
||||||
|
case vk::Format::eR16G16Unorm:
|
||||||
return vk::Format::eR32Uint;
|
return vk::Format::eR32Uint;
|
||||||
case vk::Format::eBc1RgbaSrgbBlock:
|
case vk::Format::eBc1RgbaSrgbBlock:
|
||||||
case vk::Format::eBc1RgbaUnormBlock:
|
case vk::Format::eBc1RgbaUnormBlock:
|
||||||
|
@ -193,6 +194,7 @@ vk::Format DemoteImageFormatForDetiling(vk::Format format) {
|
||||||
case vk::Format::eR32G32Sfloat:
|
case vk::Format::eR32G32Sfloat:
|
||||||
case vk::Format::eR32G32Uint:
|
case vk::Format::eR32G32Uint:
|
||||||
case vk::Format::eR16G16B16A16Unorm:
|
case vk::Format::eR16G16B16A16Unorm:
|
||||||
|
case vk::Format::eR16G16B16A16Uint:
|
||||||
case vk::Format::eR16G16B16A16Sfloat:
|
case vk::Format::eR16G16B16A16Sfloat:
|
||||||
return vk::Format::eR32G32Uint;
|
return vk::Format::eR32G32Uint;
|
||||||
case vk::Format::eBc2SrgbBlock:
|
case vk::Format::eBc2SrgbBlock:
|
||||||
|
|
Loading…
Reference in New Issue