Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc

Issue 1474513003: Upgrade PixelStorei to ES3/WebGL2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: client side Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc
index b1ddbbabeddc82b2623a08ebf58919fed7e0c5e7..1b3feaa9a8d71145931deaaf5a16cb1bd7ec5cd4 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc
@@ -48,6 +48,34 @@ using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
+namespace {
+
+void SetupUpdateES3UnpackParametersExpectations(
+ ::gfx::MockGLInterface* gl,
+ GLint row_length,
+ GLint image_height,
+ GLint skip_pixels,
+ GLint skip_rows,
+ GLint skip_images) {
+ EXPECT_CALL(*gl, PixelStorei(GL_UNPACK_ROW_LENGTH, row_length))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl, PixelStorei(GL_UNPACK_IMAGE_HEIGHT, image_height))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl, PixelStorei(GL_UNPACK_SKIP_ROWS, skip_rows))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl, PixelStorei(GL_UNPACK_SKIP_PIXELS, skip_pixels))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl, PixelStorei(GL_UNPACK_SKIP_IMAGES, skip_images))
+ .Times(1)
+ .RetiresOnSaturation();
+}
+
+} // namespace anonymous
+
using namespace cmds;
class GLES2DecoderRestoreStateTest : public GLES2DecoderManualInitTest {
@@ -396,6 +424,42 @@ TEST_P(GLES2DecoderManualInitTest, ContextStateCapabilityCaching) {
}
}
+TEST_P(GLES3DecoderTest, ES3PixelStoreiWithPixelUnpackBuffer) {
+ // Without PIXEL_UNPACK_BUFFER bound, PixelStorei with unpack parameters
+ // is cached and not passed down to GL.
+ EXPECT_CALL(*gl_, PixelStorei(_, _)).Times(0);
+ cmds::PixelStorei cmd;
+ cmd.Init(GL_UNPACK_SKIP_ROWS, 2);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+
+ // When a PIXEL_UNPACK_BUFFER is bound, all cached unpack parameters are
+ // applied to GL.
+ SetupUpdateES3UnpackParametersExpectations(gl_.get(), 0, 0, 0, 2, 0);
+ DoBindBuffer(GL_PIXEL_UNPACK_BUFFER, client_buffer_id_, kServiceBufferId);
+
+ // Now with a bound PIXEL_UNPACK_BUFFER, all PixelStorei calls with unpack
+ // parameters are applied to GL.
+ EXPECT_CALL(*gl_, PixelStorei(GL_UNPACK_ROW_LENGTH, 16))
+ .Times(1)
+ .RetiresOnSaturation();
+ cmd.Init(GL_UNPACK_ROW_LENGTH, 16);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+
+ // Now unbind PIXEL_UNPACK_BUFFER, all ES3 unpack parameters are set back to
+ // 0.
+ SetupUpdateES3UnpackParametersExpectations(gl_.get(), 0, 0, 0, 0, 0);
+ DoBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0, 0);
+
+ // Again, PixelStorei calls with unpack parameters are cached.
+ EXPECT_CALL(*gl_, PixelStorei(_, _)).Times(0);
+ cmd.Init(GL_UNPACK_SKIP_ROWS, 3);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+
+ // Bind a PIXEL_UNPACK_BUFFER again.
+ SetupUpdateES3UnpackParametersExpectations(gl_.get(), 16, 0, 0, 3, 0);
+ DoBindBuffer(GL_PIXEL_UNPACK_BUFFER, client_buffer_id_, kServiceBufferId);
+}
+
// TODO(vmiura): Tests for VAO restore.
// TODO(vmiura): Tests for ContextState::RestoreAttribute().

Powered by Google App Engine
This is Rietveld 408576698