mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-29 18:45:28 +03:00
Implement the actual inline to memory engine on subch 2
Used mostly by OGL games for copying stuff around.
This commit is contained in:
parent
ba7111d33a
commit
0298a7b1f6
@ -5,9 +5,10 @@
|
|||||||
#include "channel.h"
|
#include "channel.h"
|
||||||
|
|
||||||
namespace skyline::soc::gm20b {
|
namespace skyline::soc::gm20b {
|
||||||
ChannelContext::ChannelContext(const DeviceState &state, std::shared_ptr<AddressSpaceContext> asCtx, size_t numEntries) :
|
ChannelContext::ChannelContext(const DeviceState &state, std::shared_ptr<AddressSpaceContext> pAsCtx, size_t numEntries)
|
||||||
maxwell3D(std::make_unique<engine::maxwell3d::Maxwell3D>(state, *this, macroState, executor)),
|
: asCtx(std::move(pAsCtx)),
|
||||||
gpfifo(state, *this, numEntries),
|
|
||||||
executor(state),
|
executor(state),
|
||||||
asCtx(std::move(asCtx)){}
|
maxwell3D(std::make_unique<engine::maxwell3d::Maxwell3D>(state, *this, macroState, executor)),
|
||||||
|
inline2Memory(asCtx),
|
||||||
|
gpfifo(state, *this, numEntries) {}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <gpu/interconnect/command_executor.h>
|
#include <gpu/interconnect/command_executor.h>
|
||||||
#include "macro/macro_state.h"
|
#include "macro/macro_state.h"
|
||||||
#include "engines/engine.h"
|
#include "engines/engine.h"
|
||||||
|
#include "engines/inline2memory.h"
|
||||||
#include "gpfifo.h"
|
#include "gpfifo.h"
|
||||||
|
|
||||||
namespace skyline::soc::gm20b {
|
namespace skyline::soc::gm20b {
|
||||||
@ -24,6 +25,7 @@ namespace skyline::soc::gm20b {
|
|||||||
gpu::interconnect::CommandExecutor executor;
|
gpu::interconnect::CommandExecutor executor;
|
||||||
MacroState macroState;
|
MacroState macroState;
|
||||||
std::unique_ptr<engine::maxwell3d::Maxwell3D> maxwell3D; //!< TODO: fix this once graphics context is moved into a cpp file
|
std::unique_ptr<engine::maxwell3d::Maxwell3D> maxwell3D; //!< TODO: fix this once graphics context is moved into a cpp file
|
||||||
|
engine::Inline2Memory inline2Memory;
|
||||||
ChannelGpfifo gpfifo;
|
ChannelGpfifo gpfifo;
|
||||||
|
|
||||||
ChannelContext(const DeviceState &state, std::shared_ptr<AddressSpaceContext> asCtx, size_t numEntries);
|
ChannelContext(const DeviceState &state, std::shared_ptr<AddressSpaceContext> asCtx, size_t numEntries);
|
||||||
|
@ -112,6 +112,9 @@ namespace skyline::soc::gm20b {
|
|||||||
case SubchannelId::ThreeD:
|
case SubchannelId::ThreeD:
|
||||||
channelCtx.maxwell3D->CallMethod(method, argument);
|
channelCtx.maxwell3D->CallMethod(method, argument);
|
||||||
break;
|
break;
|
||||||
|
case SubchannelId::Inline2Mem:
|
||||||
|
channelCtx.inline2Memory.CallMethod(method, argument);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Logger::Warn("Called method 0x{:X} in unimplemented engine 0x{:X}, args: 0x{:X}", method, subChannel, argument);
|
Logger::Warn("Called method 0x{:X} in unimplemented engine 0x{:X}, args: 0x{:X}", method, subChannel, argument);
|
||||||
break;
|
break;
|
||||||
@ -123,6 +126,9 @@ namespace skyline::soc::gm20b {
|
|||||||
case SubchannelId::ThreeD:
|
case SubchannelId::ThreeD:
|
||||||
channelCtx.maxwell3D->CallMethodBatchNonInc(method, arguments);
|
channelCtx.maxwell3D->CallMethodBatchNonInc(method, arguments);
|
||||||
break;
|
break;
|
||||||
|
case SubchannelId::Inline2Mem:
|
||||||
|
channelCtx.inline2Memory.CallMethodBatchNonInc(method, arguments);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Logger::Warn("Called method 0x{:X} in unimplemented engine 0x{:X} with batch args", method, subChannel);
|
Logger::Warn("Called method 0x{:X} in unimplemented engine 0x{:X} with batch args", method, subChannel);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user