mirror of
https://github.com/InoriRus/Kyty.git
synced 2026-08-28 05:06:40 +00:00
indirect buffers
This commit is contained in:
@@ -15,6 +15,8 @@ struct VsStageRegisters;
|
|||||||
|
|
||||||
KYTY_SUBSYSTEM_DEFINE(Graphics);
|
KYTY_SUBSYSTEM_DEFINE(Graphics);
|
||||||
|
|
||||||
|
void GraphicsDbgDumpDcb(const char* type, uint32_t num_dw, uint32_t* cmd_buffer);
|
||||||
|
|
||||||
int KYTY_SYSV_ABI GraphicsSetVsShader(uint32_t* cmd, uint64_t size, const VsStageRegisters* vs_regs, uint32_t shader_modifier);
|
int KYTY_SYSV_ABI GraphicsSetVsShader(uint32_t* cmd, uint64_t size, const VsStageRegisters* vs_regs, uint32_t shader_modifier);
|
||||||
int KYTY_SYSV_ABI GraphicsSetPsShader350(uint32_t* cmd, uint64_t size, const uint32_t* ps_regs);
|
int KYTY_SYSV_ABI GraphicsSetPsShader350(uint32_t* cmd, uint64_t size, const uint32_t* ps_regs);
|
||||||
int KYTY_SYSV_ABI GraphicsSetCsShaderWithModifier(uint32_t* cmd, uint64_t size, const uint32_t* cs_regs, uint32_t shader_modifier);
|
int KYTY_SYSV_ABI GraphicsSetCsShaderWithModifier(uint32_t* cmd, uint64_t size, const uint32_t* cs_regs, uint32_t shader_modifier);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#include "Emulator/Libs/Errno.h"
|
#include "Emulator/Libs/Errno.h"
|
||||||
#include "Emulator/Libs/Libs.h"
|
#include "Emulator/Libs/Libs.h"
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
#ifdef KYTY_EMU_ENABLED
|
#ifdef KYTY_EMU_ENABLED
|
||||||
|
|
||||||
namespace Kyty::Libs::Graphics {
|
namespace Kyty::Libs::Graphics {
|
||||||
@@ -250,11 +252,11 @@ uint32_t KYTY_SYSV_ABI GraphicsDispatchInitDefaultHardwareState(uint32_t* cmd, u
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dbg_dump_dcb(const char* type, uint32_t num_dw, uint32_t* cmd_buffer)
|
void GraphicsDbgDumpDcb(const char* type, uint32_t num_dw, uint32_t* cmd_buffer)
|
||||||
{
|
{
|
||||||
EXIT_IF(type == nullptr);
|
EXIT_IF(type == nullptr);
|
||||||
|
|
||||||
static int id = 0;
|
static std::atomic_int id = 0;
|
||||||
|
|
||||||
if (Config::CommandBufferDumpEnabled() && num_dw > 0 && cmd_buffer != nullptr)
|
if (Config::CommandBufferDumpEnabled() && num_dw > 0 && cmd_buffer != nullptr)
|
||||||
{
|
{
|
||||||
@@ -285,8 +287,8 @@ int KYTY_SYSV_ABI GraphicsSubmitCommandBuffers(uint32_t count, void* dcb_gpu_add
|
|||||||
auto* ccb = (ccb_gpu_addrs == nullptr ? nullptr : static_cast<uint32_t*>(ccb_gpu_addrs[0]));
|
auto* ccb = (ccb_gpu_addrs == nullptr ? nullptr : static_cast<uint32_t*>(ccb_gpu_addrs[0]));
|
||||||
auto ccb_size = (ccb_sizes_in_bytes == nullptr ? 0 : ccb_sizes_in_bytes[0] / 4);
|
auto ccb_size = (ccb_sizes_in_bytes == nullptr ? 0 : ccb_sizes_in_bytes[0] / 4);
|
||||||
|
|
||||||
dbg_dump_dcb("d", dcb_size, dcb);
|
GraphicsDbgDumpDcb("d", dcb_size, dcb);
|
||||||
dbg_dump_dcb("c", ccb_size, ccb);
|
GraphicsDbgDumpDcb("c", ccb_size, ccb);
|
||||||
|
|
||||||
GraphicsRunSubmit(dcb, dcb_size, ccb, ccb_size);
|
GraphicsRunSubmit(dcb, dcb_size, ccb, ccb_size);
|
||||||
|
|
||||||
@@ -306,8 +308,8 @@ int KYTY_SYSV_ABI GraphicsSubmitAndFlipCommandBuffers(uint32_t count, void* dcb_
|
|||||||
auto* ccb = (ccb_gpu_addrs == nullptr ? nullptr : static_cast<uint32_t*>(ccb_gpu_addrs[0]));
|
auto* ccb = (ccb_gpu_addrs == nullptr ? nullptr : static_cast<uint32_t*>(ccb_gpu_addrs[0]));
|
||||||
auto ccb_size = (ccb_sizes_in_bytes == nullptr ? 0 : ccb_sizes_in_bytes[0] / 4);
|
auto ccb_size = (ccb_sizes_in_bytes == nullptr ? 0 : ccb_sizes_in_bytes[0] / 4);
|
||||||
|
|
||||||
dbg_dump_dcb("d", dcb_size, dcb);
|
GraphicsDbgDumpDcb("d", dcb_size, dcb);
|
||||||
dbg_dump_dcb("c", ccb_size, ccb);
|
GraphicsDbgDumpDcb("c", ccb_size, ccb);
|
||||||
|
|
||||||
printf("\t handle = %" PRId32 "\n", handle);
|
printf("\t handle = %" PRId32 "\n", handle);
|
||||||
printf("\t index = %" PRId32 "\n", index);
|
printf("\t index = %" PRId32 "\n", index);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -136,7 +136,7 @@ void DumpPm4PacketStream(Core::File* file, uint32_t* cmd_buffer, uint32_t start_
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
printf("?????\n");
|
file->Printf("?????\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd += len;
|
cmd += len;
|
||||||
|
|||||||
Reference in New Issue
Block a user