mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-18 10:35:46 -04:00
PGXP: Add initial implementation
This commit is contained in:
@ -136,7 +136,13 @@ public:
|
||||
|
||||
// DMA access
|
||||
void DMARead(u32* words, u32 word_count);
|
||||
void DMAWrite(const u32* words, u32 word_count);
|
||||
|
||||
ALWAYS_INLINE bool BeginDMAWrite() const { return (m_GPUSTAT.dma_direction == DMADirection::CPUtoGP0); }
|
||||
ALWAYS_INLINE void DMAWrite(u32 address, u32 value)
|
||||
{
|
||||
m_fifo.Push((ZeroExtend64(address) << 32) | ZeroExtend64(value));
|
||||
}
|
||||
void EndDMAWrite();
|
||||
|
||||
/// Returns the number of pending GPU ticks.
|
||||
TickCount GetPendingCRTCTicks() const;
|
||||
@ -276,6 +282,14 @@ protected:
|
||||
// Sprites/rectangles should be clipped to 12 bits before drawing.
|
||||
static constexpr s32 TruncateVertexPosition(s32 x) { return SignExtendN<11, s32>(x); }
|
||||
|
||||
struct NativeVertex
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
u32 color;
|
||||
u16 texcoord;
|
||||
};
|
||||
|
||||
union VRAMPixel
|
||||
{
|
||||
u16 bits;
|
||||
@ -700,11 +714,15 @@ protected:
|
||||
u16 row;
|
||||
} m_vram_transfer = {};
|
||||
|
||||
HeapFIFOQueue<u32, MAX_FIFO_SIZE> m_fifo;
|
||||
HeapFIFOQueue<u64, MAX_FIFO_SIZE> m_fifo;
|
||||
std::vector<u32> m_blit_buffer;
|
||||
u32 m_blit_remaining_words;
|
||||
RenderCommand m_render_command{};
|
||||
|
||||
ALWAYS_INLINE u32 FifoPop() { return Truncate32(m_fifo.Pop()); }
|
||||
ALWAYS_INLINE u32 FifoPeek() { return Truncate32(m_fifo.Peek()); }
|
||||
ALWAYS_INLINE u32 FifoPeek(u32 i) { return Truncate32(m_fifo.Peek(i)); }
|
||||
|
||||
TickCount m_max_run_ahead = 128;
|
||||
u32 m_fifo_size = 128;
|
||||
|
||||
|
Reference in New Issue
Block a user