зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1765816 - Expose front buffer canvas contents when painting for Firefox Screenshots for WebGPU. r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D144868
This commit is contained in:
Родитель
23e4d9ffd9
Коммит
6921ea66d8
|
@ -10,6 +10,7 @@
|
|||
#include "nsDisplayList.h"
|
||||
#include "mozilla/dom/HTMLCanvasElement.h"
|
||||
#include "mozilla/gfx/CanvasManagerChild.h"
|
||||
#include "mozilla/layers/CanvasRenderer.h"
|
||||
#include "mozilla/layers/CompositableInProcessManager.h"
|
||||
#include "mozilla/layers/ImageDataSerializer.h"
|
||||
#include "mozilla/layers/LayersSurfaces.h"
|
||||
|
@ -126,6 +127,24 @@ void CanvasContext::SwapChainPresent() {
|
|||
}
|
||||
}
|
||||
|
||||
bool CanvasContext::InitializeCanvasRenderer(
|
||||
nsDisplayListBuilder* aBuilder, layers::CanvasRenderer* aRenderer) {
|
||||
// This path is only used for rendering when we use the fallback Paint path,
|
||||
// used by reftest-snapshot, printing and Firefox Screenshot.
|
||||
if (!mHandle) {
|
||||
return false;
|
||||
}
|
||||
|
||||
layers::CanvasRendererData data;
|
||||
data.mContext = this;
|
||||
data.mSize = mGfxSize;
|
||||
data.mIsOpaque = false;
|
||||
|
||||
aRenderer->Initialize(data);
|
||||
aRenderer->SetDirty();
|
||||
return true;
|
||||
}
|
||||
|
||||
mozilla::UniquePtr<uint8_t[]> CanvasContext::GetImageBuffer(int32_t* aFormat) {
|
||||
gfxAlphaType any;
|
||||
RefPtr<gfx::SourceSurface> snapshot = GetSurfaceSnapshot(&any);
|
||||
|
|
|
@ -54,6 +54,8 @@ class CanvasContext final : public nsICanvasRenderingContextInternal,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
bool InitializeCanvasRenderer(nsDisplayListBuilder* aBuilder,
|
||||
layers::CanvasRenderer* aRenderer) override;
|
||||
mozilla::UniquePtr<uint8_t[]> GetImageBuffer(int32_t* aFormat) override;
|
||||
NS_IMETHOD GetInputStream(const char* aMimeType,
|
||||
const nsAString& aEncoderOptions,
|
||||
|
|
Загрузка…
Ссылка в новой задаче