mirror of
https://github.com/Takiiiiiiii/strato.git
synced 2025-07-17 08:46:39 +00:00
Run Guest on Main Emulator Thread + Remove Mutex/GroupMutex + Introduce PresentationEngine
This commit is contained in:
36
app/src/main/cpp/skyline/gpu/presentation_engine.h
Normal file
36
app/src/main/cpp/skyline/gpu/presentation_engine.h
Normal file
@ -0,0 +1,36 @@
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
// Copyright © 2020 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <kernel/types/KEvent.h>
|
||||
#include "texture.h"
|
||||
|
||||
struct ANativeWindow;
|
||||
|
||||
namespace skyline::gpu {
|
||||
class PresentationEngine {
|
||||
private:
|
||||
const DeviceState &state;
|
||||
std::mutex windowMutex;
|
||||
std::condition_variable windowConditional;
|
||||
jobject surface; //!< The Surface object backing the ANativeWindow
|
||||
u64 frameTimestamp{}; //!< The timestamp of the last frame being shown
|
||||
|
||||
public:
|
||||
texture::Dimensions resolution{};
|
||||
i32 format{};
|
||||
std::shared_ptr<kernel::type::KEvent> vsyncEvent; //!< Signalled every time a frame is drawn
|
||||
std::shared_ptr<kernel::type::KEvent> bufferEvent; //!< Signalled every time a buffer is freed
|
||||
|
||||
PresentationEngine(const DeviceState &state);
|
||||
|
||||
~PresentationEngine();
|
||||
|
||||
void UpdateSurface(jobject newSurface);
|
||||
|
||||
void Present(const std::shared_ptr<Texture>& texture);
|
||||
|
||||
ANativeWindow *window{};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user