more to buffers
This commit is contained in:
parent
aacbc4e675
commit
243c0158c1
|
@ -16,6 +16,8 @@ struct VideoConfigInternal {
|
||||||
SceVideoOutVblankStatus m_vblank_status;
|
SceVideoOutVblankStatus m_vblank_status;
|
||||||
std::vector<HLE::Libs::LibKernel::EventQueues::SceKernelEqueue> m_flip_evtEq;
|
std::vector<HLE::Libs::LibKernel::EventQueues::SceKernelEqueue> m_flip_evtEq;
|
||||||
int m_flip_rate = 0;
|
int m_flip_rate = 0;
|
||||||
|
|
||||||
|
int buffers_registration_index = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FlipQueue {
|
class FlipQueue {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include "Objects/video_out_ctx.h"
|
#include "Objects/video_out_ctx.h"
|
||||||
#include "Util/Singleton.h"
|
#include "Util/Singleton.h"
|
||||||
|
#include <emulator.h>
|
||||||
|
|
||||||
namespace HLE::Libs::Graphics::VideoOut {
|
namespace HLE::Libs::Graphics::VideoOut {
|
||||||
|
|
||||||
|
@ -155,7 +156,16 @@ s32 PS4_SYSV_ABI sceVideoOutRegisterBuffers(s32 handle, s32 startIndex, void* co
|
||||||
LOG_INFO_IF(log_file_videoout, "height = {}\n", attribute->height);
|
LOG_INFO_IF(log_file_videoout, "height = {}\n", attribute->height);
|
||||||
LOG_INFO_IF(log_file_videoout, "pitchInPixel = {}\n", attribute->pitchInPixel);
|
LOG_INFO_IF(log_file_videoout, "pitchInPixel = {}\n", attribute->pitchInPixel);
|
||||||
LOG_INFO_IF(log_file_videoout, "option = {}\n", attribute->option);
|
LOG_INFO_IF(log_file_videoout, "option = {}\n", attribute->option);
|
||||||
return 0;
|
|
||||||
|
int registration_index = ctx->buffers_registration_index++;
|
||||||
|
|
||||||
|
Emulator::checkAndWaitForGraphicsInit();
|
||||||
|
|
||||||
|
//try to calculate buffer size
|
||||||
|
u64 buffer_size = 1280 * 720 * 4; //TODO hardcore value should be redone
|
||||||
|
u64 buffer_pitch = attribute->pitchInPixel;
|
||||||
|
|
||||||
|
return registration_index;
|
||||||
}
|
}
|
||||||
s32 PS4_SYSV_ABI sceVideoOutSetFlipRate(s32 handle, s32 rate) {
|
s32 PS4_SYSV_ABI sceVideoOutSetFlipRate(s32 handle, s32 rate) {
|
||||||
PRINT_FUNCTION_NAME();
|
PRINT_FUNCTION_NAME();
|
||||||
|
|
|
@ -14,6 +14,13 @@ void emuInit(u32 width, u32 height) {
|
||||||
g_window_ctx->m_graphic_ctx.screen_height = height;
|
g_window_ctx->m_graphic_ctx.screen_height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkAndWaitForGraphicsInit() {
|
||||||
|
Lib::LockMutexGuard lock(g_window_ctx->m_mutex);
|
||||||
|
|
||||||
|
while (!g_window_ctx->m_is_graphic_initialized) {
|
||||||
|
g_window_ctx->m_graphic_initialized_cond.WaitCondVar(&g_window_ctx->m_mutex);
|
||||||
|
}
|
||||||
|
}
|
||||||
static void CreateSdlWindow(WindowCtx* ctx) {
|
static void CreateSdlWindow(WindowCtx* ctx) {
|
||||||
int width = static_cast<int>(ctx->m_graphic_ctx.screen_width);
|
int width = static_cast<int>(ctx->m_graphic_ctx.screen_width);
|
||||||
int height = static_cast<int>(ctx->m_graphic_ctx.screen_height);
|
int height = static_cast<int>(ctx->m_graphic_ctx.screen_height);
|
||||||
|
@ -34,7 +41,6 @@ static void CreateSdlWindow(WindowCtx* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetWindowResizable(ctx->m_window, SDL_FALSE); // we don't support resizable atm
|
SDL_SetWindowResizable(ctx->m_window, SDL_FALSE); // we don't support resizable atm
|
||||||
SDL_ShowWindow(g_window_ctx->m_window); // TODO should be removed just left it over to make it fancy :D
|
|
||||||
}
|
}
|
||||||
void emuRun() {
|
void emuRun() {
|
||||||
g_window_ctx->m_mutex.LockMutex();
|
g_window_ctx->m_mutex.LockMutex();
|
||||||
|
|
|
@ -24,4 +24,5 @@ struct EmuPrivate {
|
||||||
};
|
};
|
||||||
void emuInit(u32 width, u32 height);
|
void emuInit(u32 width, u32 height);
|
||||||
void emuRun();
|
void emuRun();
|
||||||
|
void checkAndWaitForGraphicsInit();
|
||||||
} // namespace Emulator
|
} // namespace Emulator
|
Loading…
Reference in New Issue