Memory tracker: Add tracking of render objects
This commit is contained in:
parent
c2a7eed9d8
commit
0960e967ea
6 changed files with 19 additions and 3 deletions
|
@ -87,6 +87,7 @@ private:
|
|||
void do_screenshot(command::arg_filename a);
|
||||
struct render_info
|
||||
{
|
||||
render_info();
|
||||
framebuffer::raw fbuf;
|
||||
framebuffer::queue rq;
|
||||
uint32_t hscl;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <set>
|
||||
#include "framebuffer-pixfmt.hpp"
|
||||
#include "threads.hpp"
|
||||
#include "memtracker.hpp"
|
||||
|
||||
namespace framebuffer
|
||||
{
|
||||
|
@ -667,7 +668,7 @@ struct queue
|
|||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
queue() throw();
|
||||
queue(memtracker& _tracker) throw();
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
|
@ -682,6 +683,7 @@ private:
|
|||
size_t pages;
|
||||
threads::lock display_mutex; //Synchronize display and kill.
|
||||
std::map<size_t, page> memory;
|
||||
memtracker& tracker;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -349,7 +349,7 @@ template<bool X> bool master_dumper::render_video_hud(struct framebuffer::fb<X>&
|
|||
{
|
||||
bool lua_kill_video = false;
|
||||
struct lua::render_context lrc;
|
||||
framebuffer::queue rq;
|
||||
framebuffer::queue rq(mem_tracker());
|
||||
lrc.left_gap = lgap;
|
||||
lrc.right_gap = rgap;
|
||||
lrc.bottom_gap = bgap;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "core/instance.hpp"
|
||||
#include "core/memorywatch.hpp"
|
||||
#include "core/messages.hpp"
|
||||
#include "core/misc.hpp"
|
||||
#include "core/moviedata.hpp"
|
||||
#include "core/rom.hpp"
|
||||
#include "core/settings.hpp"
|
||||
|
@ -87,6 +88,11 @@ namespace
|
|||
|
||||
framebuffer::raw emu_framebuffer::screen_corrupt;
|
||||
|
||||
emu_framebuffer::render_info::render_info()
|
||||
: rq(mem_tracker())
|
||||
{
|
||||
}
|
||||
|
||||
emu_framebuffer::emu_framebuffer(subtitle_commentary& _subtitles, settingvar::group& _settings, memwatch_set& _mwatch,
|
||||
keyboard::keyboard& _keyboard, emulator_dispatch& _dispatch, lua_state& _lua2, loaded_rom& _rom,
|
||||
status_updater& _supdater, command::group& _cmd)
|
||||
|
|
|
@ -20,6 +20,7 @@ unsigned default_shift_b;
|
|||
|
||||
namespace
|
||||
{
|
||||
const char* render_pages_id = "Render objects";
|
||||
void recalculate_default_shifts()
|
||||
{
|
||||
uint32_t magic = 0x18000810;
|
||||
|
@ -576,6 +577,8 @@ void* queue::alloc(size_t block) throw(std::bad_alloc)
|
|||
throw std::bad_alloc();
|
||||
if(pages == 0 || memory_allocated + block > pages * RENDER_PAGE_SIZE) {
|
||||
memory_allocated = pages * RENDER_PAGE_SIZE;
|
||||
if(!memory.count(pages))
|
||||
tracker(render_pages_id, RENDER_PAGE_SIZE);
|
||||
memory[pages++];
|
||||
}
|
||||
void* mem = memory[memory_allocated / RENDER_PAGE_SIZE].content + (memory_allocated % RENDER_PAGE_SIZE);
|
||||
|
@ -601,7 +604,8 @@ void queue::kill_request(void* obj) throw()
|
|||
}
|
||||
}
|
||||
|
||||
queue::queue() throw()
|
||||
queue::queue(memtracker& _tracker) throw()
|
||||
: tracker(_tracker)
|
||||
{
|
||||
queue_head = NULL;
|
||||
queue_tail = NULL;
|
||||
|
@ -612,6 +616,7 @@ queue::queue() throw()
|
|||
queue::~queue() throw()
|
||||
{
|
||||
clear();
|
||||
tracker(render_pages_id, -(ssize_t)memory.size() * RENDER_PAGE_SIZE);
|
||||
}
|
||||
|
||||
object::object() throw()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "core/framebuffer.hpp"
|
||||
#include "core/instance.hpp"
|
||||
#include "core/misc.hpp"
|
||||
#include "lua/internal.hpp"
|
||||
#include "lua/bitmap.hpp"
|
||||
|
||||
|
@ -105,6 +106,7 @@ namespace
|
|||
};
|
||||
|
||||
lua_renderqueue::lua_renderqueue(lua::state& L, uint32_t width, uint32_t height) throw()
|
||||
: rqueue(mem_tracker())
|
||||
{
|
||||
lctx.left_gap = std::numeric_limits<uint32_t>::max();
|
||||
lctx.right_gap = std::numeric_limits<uint32_t>::max();
|
||||
|
|
Loading…
Add table
Reference in a new issue