rpcsx/rpcs3/Emu/RSX/Core/RSXContext.h
DH 62ad27d1e2 split rpcs3 and hle libraries
merge rpcs3 utilities
2025-04-08 19:46:57 +03:00

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;
};
} // namespace rsx