renderer: minor direct scanout fixes (#7594)
This commit is contained in:
parent
76b82fdde7
commit
838ed87d6f
3 changed files with 23 additions and 4 deletions
|
|
@ -832,6 +832,21 @@ bool CMonitor::attemptDirectScanout() {
|
|||
|
||||
// FIXME: make sure the buffer actually follows the available scanout dmabuf formats
|
||||
// and comes from the appropriate device. This may implode on multi-gpu!!
|
||||
|
||||
const auto params = PSURFACE->current.buffer->buffer->dmabuf();
|
||||
// scanout buffer isn't dmabuf, so no scanout
|
||||
if (!params.success)
|
||||
return false;
|
||||
|
||||
// entering into scanout, so save monitor format
|
||||
if (lastScanout.expired())
|
||||
prevDrmFormat = drmFormat;
|
||||
|
||||
if (drmFormat != params.format) {
|
||||
output->state->setFormat(params.format);
|
||||
drmFormat = params.format;
|
||||
}
|
||||
|
||||
output->state->setBuffer(PSURFACE->current.buffer->buffer.lock());
|
||||
output->state->setPresentationMode(tearingState.activelyTearing ? Aquamarine::eOutputPresentationMode::AQ_OUTPUT_PRESENTATION_IMMEDIATE :
|
||||
Aquamarine::eOutputPresentationMode::AQ_OUTPUT_PRESENTATION_VSYNC);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,8 @@ class CMonitor {
|
|||
std::optional<Vector2D> forceSize;
|
||||
SP<Aquamarine::SOutputMode> currentMode;
|
||||
SP<Aquamarine::CSwapchain> cursorSwapchain;
|
||||
uint32_t drmFormat = DRM_FORMAT_INVALID;
|
||||
uint32_t drmFormat = DRM_FORMAT_INVALID;
|
||||
uint32_t prevDrmFormat = DRM_FORMAT_INVALID;
|
||||
|
||||
bool dpmsStatus = true;
|
||||
bool vrrActive = false; // this can be TRUE even if VRR is not active in the case that this display does not support it.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue