mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1054581 - Have all compositor backends behave consistently when creating a zero-sized intermediate render target. r=jrmuizel
This commit is contained in:
parent
b9ce898de8
commit
24ab6f3545
@ -85,6 +85,12 @@ void BasicCompositor::Destroy()
|
||||
TemporaryRef<CompositingRenderTarget>
|
||||
BasicCompositor::CreateRenderTarget(const IntRect& aRect, SurfaceInitMode aInit)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size");
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
RefPtr<DrawTarget> target = mDrawTarget->CreateSimilarDrawTarget(aRect.Size(), SurfaceFormat::B8G8R8A8);
|
||||
|
||||
if (!target) {
|
||||
|
@ -404,6 +404,12 @@ TemporaryRef<CompositingRenderTarget>
|
||||
CompositorD3D11::CreateRenderTarget(const gfx::IntRect& aRect,
|
||||
SurfaceInitMode aInit)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0);
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CD3D11_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, aRect.width, aRect.height, 1, 1,
|
||||
D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET);
|
||||
|
||||
@ -430,6 +436,12 @@ CompositorD3D11::CreateRenderTargetFromSource(const gfx::IntRect &aRect,
|
||||
const CompositingRenderTarget* aSource,
|
||||
const gfx::IntPoint &aSourcePoint)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0);
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CD3D11_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM,
|
||||
aRect.width, aRect.height, 1, 1,
|
||||
D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET);
|
||||
|
@ -103,6 +103,12 @@ TemporaryRef<CompositingRenderTarget>
|
||||
CompositorD3D9::CreateRenderTarget(const gfx::IntRect &aRect,
|
||||
SurfaceInitMode aInit)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size");
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!mDeviceManager) {
|
||||
return nullptr;
|
||||
}
|
||||
@ -129,6 +135,12 @@ CompositorD3D9::CreateRenderTargetFromSource(const gfx::IntRect &aRect,
|
||||
const CompositingRenderTarget *aSource,
|
||||
const gfx::IntPoint &aSourcePoint)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size");
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!mDeviceManager) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -606,6 +606,12 @@ CompositorOGL::PrepareViewport(const gfx::IntSize& aSize)
|
||||
TemporaryRef<CompositingRenderTarget>
|
||||
CompositorOGL::CreateRenderTarget(const IntRect &aRect, SurfaceInitMode aInit)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size");
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GLuint tex = 0;
|
||||
GLuint fbo = 0;
|
||||
CreateFBOWithTexture(aRect, false, 0, &fbo, &tex);
|
||||
@ -620,6 +626,12 @@ CompositorOGL::CreateRenderTargetFromSource(const IntRect &aRect,
|
||||
const CompositingRenderTarget *aSource,
|
||||
const IntPoint &aSourcePoint)
|
||||
{
|
||||
MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size");
|
||||
|
||||
if (aRect.width * aRect.height == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GLuint tex = 0;
|
||||
GLuint fbo = 0;
|
||||
const CompositingRenderTargetOGL* sourceSurface
|
||||
|
Loading…
Reference in New Issue
Block a user