mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-01-02 22:59:59 +01:00
59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <util/types.hpp>
|
|
#include "Emu/Cell/lv2/sys_rsx.h"
|
|
#include "Emu/RSX/GCM.h"
|
|
#include "Emu/RSX/rsx_utils.h"
|
|
#include "RSXIOMap.hpp"
|
|
|
|
namespace rsx
|
|
{
|
|
namespace gcm
|
|
{
|
|
enum limits
|
|
{
|
|
tiles_count = 15,
|
|
zculls_count = 8
|
|
};
|
|
}
|
|
|
|
struct GCM_tile_reference
|
|
{
|
|
u32 base_address = 0;
|
|
const GcmTileInfo* tile = nullptr;
|
|
|
|
operator bool() const
|
|
{
|
|
return !!tile;
|
|
}
|
|
|
|
utils::address_range tile_align(const rsx::address_range& range) const;
|
|
};
|
|
|
|
struct GCM_context
|
|
{
|
|
RsxDmaControl* ctrl = nullptr;
|
|
u32 dma_address{ 0 };
|
|
rsx_iomap_table iomap_table;
|
|
|
|
GcmTileInfo tiles[gcm::limits::tiles_count];
|
|
GcmZcullInfo zculls[gcm::limits::zculls_count];
|
|
|
|
RsxDisplayInfo display_buffers[8];
|
|
u32 display_buffers_count{ 0 };
|
|
u32 current_display_buffer{ 0 };
|
|
|
|
shared_mutex sys_rsx_mtx;
|
|
u32 device_addr{ 0 };
|
|
u32 label_addr{ 0 };
|
|
u32 main_mem_size{ 0 };
|
|
u32 local_mem_size{ 0 };
|
|
u32 rsx_event_port{ 0 };
|
|
u32 driver_info{ 0 };
|
|
|
|
atomic_t<u64> unsent_gcm_events = 0; // Unsent event bits when aborting RSX/VBLANK thread (will be sent on savestate load)
|
|
|
|
GCM_tile_reference get_tiled_memory_region(const utils::address_range& range) const;
|
|
};
|
|
}
|