Commit Graph

24 Commits

Author SHA1 Message Date
fincs
bbe09c4265
Implement VRAM bank awareness for rendertarget allocations 2021-08-26 23:46:07 +02:00
fincs
03235602cd
Add C3D_RenderTargetDetachOutput (called automatically on render target destroy) 2020-09-28 23:33:02 +02:00
fincs
f4367ad55d
Use gfxScreenSwapBuffers; implement left->right eye duplication with it 2020-07-07 13:08:56 +02:00
fincs
bbbadebeae
Pause the VBlank counters while the application is suspended 2020-07-06 20:21:03 +02:00
fincs
dcb3aac861
base/renderqueue: Clean up initialization code 2020-05-05 16:57:18 +02:00
fincs
f2850e3bfe
renderqueue: Remove overengineered transfer system now that we know GSP actually processes framebuffer swaps at vblank... 2020-05-04 22:23:49 +02:00
fincs
8d8979947e Remove deprecated functionality 2018-05-22 16:56:19 +02:00
fincs
8f3fda7986 Deprecate C3D_SafeXYZ functions & replace them with C3D_SyncXYZ 2017-12-01 17:46:14 +01:00
fincs
4ed5536bcc Add C3D_FrameEndHook() 2017-12-01 17:46:14 +01:00
fincs
2062eff21d Add C3D_FrameCounter() for retrieving the value of the frame counter 2017-05-14 23:09:56 +02:00
fincs
eb87a7327b Remove gxCmdQueueStop/gxCmdQueueRun calls in VBlank handlers 2017-04-01 12:41:31 +02:00
fincs
6ed4497102 Fix typo in renderqueue.c onVBlank1() [thanks mtheall] 2017-04-01 12:22:11 +02:00
fincs
07d380221e Correct transferring right-framebuf when 3d is enabled 2017-03-30 23:37:30 +02:00
fincs
2fc57e99b9 Replace most of the renderqueue logic with GX command queues, details:
- Removed double buffered gpu cmdbuffer (might be added back later)
- Added a global gxCmdQueue which by default is configured to run
  commands as they arrive (in the future it might be double buffered)
- Added C3D_FrameSync for explicitly waiting for "vblank"
- Repurposed C3D_FRAME_SYNCDRAW to perform C3D_FrameSync
- Added C3D_FrameSplit for splitting/submitting the gpu cmdlist in the
  middle of a renderqueue frame
- C3D_RenderTargetSetClear is still supported, however it's unofficially
  deprecated (it's performed after drawing/transferring instead of before
  drawing, which is pretty counter-intuitive)
- C3D_RenderTargetSetOutput is explicitly NOT deprecated since it's
  necessary to avoid screen tearing when transferring to the screen
  framebuffers (this stems from a Nintendo design flaw where screen swap
  processing is done immediately after GX transfers finish)
2017-03-26 20:24:23 +02:00
fincs
c030f3e70a Use weak symbols instead of function pointers for optional features 2017-03-05 23:28:30 +01:00
fincs
5e156dd719 Add C3D_GetDrawingTime/C3D_GetProcessingTime 2017-02-16 14:39:48 +01:00
fincs
a382eeed2b Use framebuffers instead of renderbuffers in rendertargets, details:
- The color buffer is mandatory, and it can either be a simple buffer
  (whose allocation lifetime managed automatically by citro3d), or be
  linked to a texture
- The depth buffer is optional, and it can only be a simple buffer
- Added C3D_RenderTargetCreateFromTex
- Clear bits in C3D_RenderTargetSetClear now work properly
2017-02-14 18:34:14 +01:00
fincs
a91889f5ba Added C3D_FrameRate() for controlling output framerate 2017-02-09 19:57:02 +01:00
Michael Theall
3ae31adab4 Add doxygen support 2017-02-09 19:45:33 +01:00
fincs
a37648f42f Add renderqueue-safe versions of GX_DisplayTransfer/TextureCopy/MemoryFill 2016-03-26 00:30:43 +01:00
fincs
806bf123a3 C3D_RenderTargetSetClear: Allow modification when drawOk = false 2016-03-25 23:42:58 +01:00
fincs
b276d8cec2 Fix APT suspend with renderqueues 2016-01-22 00:06:15 +01:00
fincs
4e2075f378 Fix race condition in C3Di_RenderQueueExit 2016-01-16 12:52:13 +01:00
fincs
39a71a5fbf Implement render queue system 2016-01-05 17:30:05 +01:00