mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Some minor changes and comments after memory profiling
This commit is contained in:
1 parent
89c320fe2b
commit
a22450320b
7 files changed
+23
-18
No files matched your search
@@ -38,6 +38,10 @@ public:
|
||||
delete [] storage_;
|
||||
}
|
||||
|
||||
// Disallow copies.
|
||||
FixedSizeQueue(FixedSizeQueue &other) = delete;
|
||||
FixedSizeQueue& operator=(const FixedSizeQueue &other) = delete;
|
||||
|
||||
void clear() {
|
||||
head_ = 0;
|
||||
tail_ = 0;
|
||||
@@ -149,6 +153,7 @@ public:
|
||||
ERROR_LOG(COMMON, "Savestate failure: Incompatible queue size.");
|
||||
return;
|
||||
}
|
||||
// TODO: This is quite wasteful, could just store the actual data. Would be slightly more complex though.
|
||||
DoArray<T>(p, storage_, N);
|
||||
Do(p, head_);
|
||||
Do(p, tail_);
|
||||
@@ -161,10 +166,6 @@ private:
|
||||
int head_;
|
||||
int tail_;
|
||||
int count_; // sacrifice 4 bytes for a simpler implementation. may optimize away in the future.
|
||||
|
||||
// Make copy constructor private for now.
|
||||
FixedSizeQueue(FixedSizeQueue &other);
|
||||
FixedSizeQueue& operator=(const FixedSizeQueue &other);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -13,11 +13,6 @@
|
||||
|
||||
struct Atlas;
|
||||
|
||||
enum {
|
||||
// Enough?
|
||||
MAX_VERTS = 65536,
|
||||
};
|
||||
|
||||
enum {
|
||||
ALIGN_LEFT = 0,
|
||||
ALIGN_RIGHT = 16,
|
||||
@@ -186,6 +181,11 @@ public:
|
||||
saturation_ = saturation;
|
||||
}
|
||||
|
||||
enum {
|
||||
// TODO: Can probably shrink this. Currently consumes 1.5MB.
|
||||
MAX_VERTS = 65536,
|
||||
};
|
||||
|
||||
private:
|
||||
struct Vertex {
|
||||
float x, y, z;
|
||||
|
||||
@@ -99,7 +99,6 @@ View::~View() {
|
||||
// Could use unique_ptr, but then we have to include tween everywhere.
|
||||
for (auto &tween : tweens_)
|
||||
delete tween;
|
||||
tweens_.clear();
|
||||
}
|
||||
|
||||
void View::Update() {
|
||||
|
||||
@@ -35,6 +35,7 @@ const int AUDIO_ROUTING_SPEAKER_ON = 1;
|
||||
int defaultRoutingMode = AUDIO_ROUTING_SPEAKER_ON;
|
||||
int defaultRoutingVolMode = AUDIO_ROUTING_SPEAKER_ON;
|
||||
|
||||
// TODO: These are way oversized and together consume 4MB of memory.
|
||||
extern FixedSizeQueue<s16, 32768 * 8> chanSampleQueues[PSP_AUDIO_CHANNEL_MAX + 1];
|
||||
|
||||
// The extra channel is for SRC/Output2/Vaudio.
|
||||
|
||||
@@ -34,8 +34,7 @@ static void SplitCSVLine(const std::string_view str, std::vector<std::string_vie
|
||||
result.push_back(finalColumn);
|
||||
}
|
||||
|
||||
static std::vector<std::string_view> splitSV(std::string_view strv, char delim, bool removeWhiteSpace) {
|
||||
std::vector<std::string_view> output;
|
||||
static void splitSV(std::string_view strv, char delim, bool removeWhiteSpace, std::vector<std::string_view> *output) {
|
||||
size_t first = 0;
|
||||
while (first < strv.size()) {
|
||||
const auto second = strv.find(delim, first);
|
||||
@@ -47,13 +46,12 @@ static std::vector<std::string_view> splitSV(std::string_view strv, char delim,
|
||||
if (removeWhiteSpace) {
|
||||
line = StripSpaces(line);
|
||||
}
|
||||
output.emplace_back(line);
|
||||
output->emplace_back(line);
|
||||
}
|
||||
if (second == std::string_view::npos)
|
||||
break;
|
||||
first = second + 1;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
|
||||
@@ -64,9 +62,12 @@ bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
|
||||
contents_ = std::string((const char *)data, size);
|
||||
delete[] data;
|
||||
|
||||
// Split the string into views of each line, keeping the original.
|
||||
std::vector<std::string_view> lines = splitSV(contents_, '\n', false);
|
||||
const size_t RESERVE_COUNT = 2820; // ~ known current line count
|
||||
|
||||
// Split the string into views of each line, keeping the original.
|
||||
std::vector<std::string_view> lines;
|
||||
lines.reserve(RESERVE_COUNT);
|
||||
splitSV(contents_, '\n', false, &lines);
|
||||
SplitCSVLine(lines[0], columns_);
|
||||
|
||||
const size_t titleColumn = GetColumnIndex("Title");
|
||||
@@ -76,6 +77,8 @@ bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
|
||||
const size_t sizeColumn = GetColumnIndex("Size");
|
||||
|
||||
std::vector<std::string_view> items;
|
||||
items.reserve(8);
|
||||
lines_.reserve(RESERVE_COUNT);
|
||||
for (size_t i = 1; i < lines.size(); i++) {
|
||||
auto &lineString = lines[i];
|
||||
SplitCSVLine(lineString, items);
|
||||
|
||||
@@ -67,7 +67,8 @@ private:
|
||||
void Clear(bool hard);
|
||||
|
||||
enum {
|
||||
BUFSIZE = 44100,
|
||||
// 0.5 ms buffer at 44.1 khz should be enough.
|
||||
BUFSIZE = 22050,
|
||||
};
|
||||
|
||||
std::mutex mutex_;
|
||||
|
||||
@@ -764,7 +764,7 @@ void GameInfoCache::WaitUntilDone(std::shared_ptr<GameInfo> &info) {
|
||||
std::shared_ptr<GameInfo> GameInfoCache::GetInfo(Draw::DrawContext *draw, const Path &gamePath, int wantFlags) {
|
||||
std::shared_ptr<GameInfo> info;
|
||||
|
||||
std::string pathStr = gamePath.ToString();
|
||||
const std::string &pathStr = gamePath.ToString();
|
||||
|
||||
auto iter = info_.find(pathStr);
|
||||
if (iter != info_.end()) {
|
||||
|
||||
Reference in new issue
Block a user