mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Bug 776957 - Use OpenDescriptorForDirectTexturing when available in CanvasLayerOGL to avoid useless texture upload. r=cjones
This commit is contained in:
parent
c66bd876ed
commit
bad716eec5
@ -365,7 +365,23 @@ ShadowCanvasLayerOGL::Swap(const CanvasSurface& aNewFront,
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsValidSharedTexDescriptor(aNewFront)) {
|
||||
if (nsRefPtr<TextureImage> texImage =
|
||||
ShadowLayerManager::OpenDescriptorForDirectTexturing(
|
||||
gl(), aNewFront.get_SurfaceDescriptor(), LOCAL_GL_CLAMP_TO_EDGE)) {
|
||||
|
||||
if (mTexImage &&
|
||||
(mTexImage->GetSize() != texImage->GetSize() ||
|
||||
mTexImage->GetContentType() != texImage->GetContentType())) {
|
||||
mTexImage = nullptr;
|
||||
DestroyFrontBuffer();
|
||||
}
|
||||
|
||||
mTexImage = texImage;
|
||||
*aNewBack = IsSurfaceDescriptorValid(mFrontBufferDescriptor) ?
|
||||
CanvasSurface(mFrontBufferDescriptor) : CanvasSurface(null_t());
|
||||
mFrontBufferDescriptor = aNewFront;
|
||||
mNeedsYFlip = needYFlip;
|
||||
} else if (IsValidSharedTexDescriptor(aNewFront)) {
|
||||
MakeTextureIfNeeded(gl(), mTexture);
|
||||
if (!IsValidSharedTexDescriptor(mFrontBufferDescriptor)) {
|
||||
mFrontBufferDescriptor = SharedTextureDescriptor(TextureImage::ThreadShared, 0, nsIntSize(0, 0), false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user