Commit 4fbd36ec by Jamie Madill

Add a test for multisampled PBOs.

We don't allow ReadPixels from multisampled targets in GL. Also update the assertions in Buffer11 to reflect our expectations. BUG=angle:511 Change-Id: Ia3d5f796f5405fbae1187f3d45b0080d7f24b6d9 Reviewed-on: https://chromium-review.googlesource.com/210053Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 8e8bf555
...@@ -782,9 +782,11 @@ Buffer11::PackStorage11::~PackStorage11() ...@@ -782,9 +782,11 @@ Buffer11::PackStorage11::~PackStorage11()
} }
bool Buffer11::PackStorage11::copyFromStorage(BufferStorage11 *source, size_t sourceOffset, bool Buffer11::PackStorage11::copyFromStorage(BufferStorage11 *source, size_t sourceOffset,
size_t size, size_t destOffset) size_t size, size_t destOffset)
{ {
UNIMPLEMENTED(); // We copy through a staging buffer when drawing with a pack buffer,
// or for other cases where we access the pack buffer
UNREACHABLE();
return false; return false;
} }
...@@ -866,10 +868,8 @@ void Buffer11::PackStorage11::packPixels(ID3D11Texture2D *srcTexure, UINT srcSub ...@@ -866,10 +868,8 @@ void Buffer11::PackStorage11::packPixels(ID3D11Texture2D *srcTexure, UINT srcSub
ASSERT(SUCCEEDED(hr)); ASSERT(SUCCEEDED(hr));
} }
if (textureDesc.SampleDesc.Count > 1) // ReadPixels from multisampled FBOs isn't supported in current GL
{ ASSERT(textureDesc.SampleDesc.Count > 1);
UNIMPLEMENTED();
}
ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext();
D3D11_BOX srcBox; D3D11_BOX srcBox;
......
...@@ -293,3 +293,33 @@ TEST_F(ReadPixelsTest, DrawWithPBO) ...@@ -293,3 +293,33 @@ TEST_F(ReadPixelsTest, DrawWithPBO)
EXPECT_EQ(3, data[2]); EXPECT_EQ(3, data[2]);
EXPECT_EQ(4, data[3]); EXPECT_EQ(4, data[3]);
} }
TEST_F(ReadPixelsTest, MultisampledPBO)
{
GLuint fbo;
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
GLuint rbo;
glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorageMultisampleANGLE(GL_RENDERBUFFER, 2, GL_RGBA8, 4, 4);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
ASSERT_GL_NO_ERROR();
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_PIXEL_PACK_BUFFER, mPBO);
EXPECT_GL_NO_ERROR();
glReadPixels(0, 0, 1, 1, GL_RGBA8, GL_UNSIGNED_BYTE, NULL);
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
glDeleteRenderbuffers(1, &rbo);
glDeleteFramebuffers(1, &fbo);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment