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

Side by Side Diff: gpu/command_buffer/tests/gl_map_buffer_range_unittest.cc

Issue 2469803003: Revert of Initialize buffers before allowing access to them. (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/vertex_attrib_manager_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <GLES2/gl2.h> 5 #include <GLES2/gl2.h>
6 #include <GLES2/gl2ext.h> 6 #include <GLES2/gl2ext.h>
7 #include <GLES2/gl2extchromium.h> 7 #include <GLES2/gl2extchromium.h>
8 #include <GLES3/gl3.h> 8 #include <GLES3/gl3.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); 132 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
133 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, 133 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
134 kBlackColor)); 134 kBlackColor));
135 135
136 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 136 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
137 glDrawArraysInstancedANGLE(GL_TRIANGLES, 0, 6, kPrimCount); 137 glDrawArraysInstancedANGLE(GL_TRIANGLES, 0, 6, kPrimCount);
138 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); 138 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
139 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, 139 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
140 kBlackColor)); 140 kBlackColor));
141 141
142 // The following test is necessary to make sure draw calls do not just check
143 // bound buffers, but actual buffers that are attached to the enabled vertex
144 // attribs.
145 glBindBuffer(GL_ARRAY_BUFFER, 0);
146
147 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
148 glDrawArrays(GL_TRIANGLES, 0, 6);
149 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
150 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
151 kBlackColor));
152
153 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
154 glDrawArraysInstancedANGLE(GL_TRIANGLES, 0, 6, kPrimCount);
155 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
156 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
157 kBlackColor));
158
159 glBindBuffer(GL_ARRAY_BUFFER, buffer);
160 glUnmapBuffer(GL_ARRAY_BUFFER); 142 glUnmapBuffer(GL_ARRAY_BUFFER);
161 GLTestHelper::CheckGLError("no errors", __LINE__); 143 GLTestHelper::CheckGLError("no errors", __LINE__);
162 144
163 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 145 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
164 glDrawArrays(GL_TRIANGLES, 0, 6); 146 glDrawArrays(GL_TRIANGLES, 0, 6);
165 GLTestHelper::CheckGLError("no errors", __LINE__); 147 GLTestHelper::CheckGLError("no errors", __LINE__);
166 EXPECT_TRUE( 148 EXPECT_TRUE(
167 GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, kRedColor)); 149 GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, kRedColor));
168 150
169 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 151 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, 197 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
216 kBlackColor)); 198 kBlackColor));
217 199
218 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 200 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
219 glDrawElementsInstancedANGLE(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0, 201 glDrawElementsInstancedANGLE(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0,
220 kPrimCount); 202 kPrimCount);
221 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); 203 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
222 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, 204 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
223 kBlackColor)); 205 kBlackColor));
224 206
225 // The following test is necessary to make sure draw calls do not just check
226 // bound buffers, but actual buffers that are attached to the enabled vertex
227 // attribs.
228 glBindBuffer(GL_ARRAY_BUFFER, 0);
229
230 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
231 glDrawArrays(GL_TRIANGLES, 0, 6);
232 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
233 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
234 kBlackColor));
235
236 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
237 glDrawElementsInstancedANGLE(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0,
238 kPrimCount);
239 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
240 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1,
241 kBlackColor));
242
243 glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
244
245 glUnmapBuffer(GL_ARRAY_BUFFER); 207 glUnmapBuffer(GL_ARRAY_BUFFER);
246 GLTestHelper::CheckGLError("no errors", __LINE__); 208 GLTestHelper::CheckGLError("no errors", __LINE__);
247 209
248 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 210 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
249 glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0); 211 glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0);
250 GLTestHelper::CheckGLError("no errors", __LINE__); 212 GLTestHelper::CheckGLError("no errors", __LINE__);
251 EXPECT_TRUE( 213 EXPECT_TRUE(
252 GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, kRedColor)); 214 GLTestHelper::CheckPixels(0, 0, kCanvasSize, kCanvasSize, 1, kRedColor));
253 215
254 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 216 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 kTextureSize, GL_RGBA, GL_UNSIGNED_BYTE, 0); 368 kTextureSize, GL_RGBA, GL_UNSIGNED_BYTE, 0);
407 GLTestHelper::CheckGLError("no errors", __LINE__); 369 GLTestHelper::CheckGLError("no errors", __LINE__);
408 } 370 }
409 371
410 // TODO(zmo): Add tests for CompressedTex* functions. 372 // TODO(zmo): Add tests for CompressedTex* functions.
411 373
412 TEST_F(ES3MapBufferRangeTest, TransformFeedback) { 374 TEST_F(ES3MapBufferRangeTest, TransformFeedback) {
413 if (ShouldSkipTest()) 375 if (ShouldSkipTest())
414 return; 376 return;
415 377
416 GLuint transform_feedback = 0;
417 glGenTransformFeedbacks(1, &transform_feedback);
418 glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, transform_feedback);
419 GLTestHelper::CheckGLError("no errors", __LINE__);
420
421 GLuint transform_feedback_buffer[2]; 378 GLuint transform_feedback_buffer[2];
422 glGenBuffers(2, transform_feedback_buffer); 379 glGenBuffers(2, transform_feedback_buffer);
423 EXPECT_LT(0u, transform_feedback_buffer[0]); 380 EXPECT_LT(0u, transform_feedback_buffer[0]);
424 EXPECT_LT(0u, transform_feedback_buffer[1]); 381 EXPECT_LT(0u, transform_feedback_buffer[1]);
425 glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 382 glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0,
426 transform_feedback_buffer[0]); 383 transform_feedback_buffer[0]);
427 glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, 3 * 6 * sizeof(float), 0, 384 glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, 3 * 6 * sizeof(float), 0,
428 GL_STATIC_READ); 385 GL_STATIC_READ);
429 glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 1, 386 glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 1,
430 transform_feedback_buffer[1]); 387 transform_feedback_buffer[1]);
431 glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, 2 * 6 * sizeof(float), 0, 388 glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, 2 * 6 * sizeof(float), 0,
432 GL_STATIC_READ); 389 GL_STATIC_READ);
433 GLTestHelper::CheckGLError("no errors", __LINE__); 390 GLTestHelper::CheckGLError("no errors", __LINE__);
434 391
435 GLint position_loc = 0; 392 GLint position_loc = 0;
436 SetupTransformFeedbackProgram(&position_loc); 393 SetupTransformFeedbackProgram(&position_loc);
437 GLTestHelper::CheckGLError("no errors", __LINE__); 394 GLTestHelper::CheckGLError("no errors", __LINE__);
438 395
439 GLuint buffer = GLTestHelper::SetupUnitQuad(position_loc); 396 GLuint buffer = GLTestHelper::SetupUnitQuad(position_loc);
440 GLTestHelper::CheckGLError("no errors", __LINE__); 397 GLTestHelper::CheckGLError("no errors", __LINE__);
441 EXPECT_LT(0u, buffer); 398 EXPECT_LT(0u, buffer);
442 399
400 GLuint transform_feedback = 0;
401 glGenTransformFeedbacks(1, &transform_feedback);
402 GLTestHelper::CheckGLError("no errors", __LINE__);
403
443 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT); 404 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT);
444 GLTestHelper::CheckGLError("no errors", __LINE__); 405 GLTestHelper::CheckGLError("no errors", __LINE__);
445 406
446 glBeginTransformFeedback(GL_TRIANGLES); 407 glBeginTransformFeedback(GL_TRIANGLES);
447 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); 408 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
448 409
449 glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER); 410 glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER);
450 GLTestHelper::CheckGLError("no errors", __LINE__); 411 GLTestHelper::CheckGLError("no errors", __LINE__);
451 412
452 glBeginTransformFeedback(GL_TRIANGLES); 413 glBeginTransformFeedback(GL_TRIANGLES);
453 GLTestHelper::CheckGLError("no errors", __LINE__); 414 GLTestHelper::CheckGLError("no errors", __LINE__);
454 415
455 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT); 416 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT);
456 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); 417 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
457 418
458 // Bind the used buffer to another binding target and try to map it using
459 // that target - should still fail.
460 glBindBuffer(GL_PIXEL_PACK_BUFFER, transform_feedback_buffer[0]);
461 GLTestHelper::CheckGLError("no errors", __LINE__);
462
463 glMapBufferRange(GL_PIXEL_PACK_BUFFER, 0, 6, GL_MAP_READ_BIT);
464 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError());
465
466 glDrawArrays(GL_TRIANGLES, 0, 6); 419 glDrawArrays(GL_TRIANGLES, 0, 6);
467 glEndTransformFeedback(); 420 glEndTransformFeedback();
468 GLTestHelper::CheckGLError("no errors", __LINE__); 421 GLTestHelper::CheckGLError("no errors", __LINE__);
469 422
470 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT); 423 glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 6, GL_MAP_WRITE_BIT);
471 GLTestHelper::CheckGLError("no errors", __LINE__); 424 GLTestHelper::CheckGLError("no errors", __LINE__);
472 425
473 glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER); 426 glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER);
474 GLTestHelper::CheckGLError("no errors", __LINE__); 427 GLTestHelper::CheckGLError("no errors", __LINE__);
475 } 428 }
476 429
477 // TODO(zmo): add tests for uniform buffer mapping. 430 // TODO(zmo): add tests for uniform buffer mapping.
478 431
479 // TODO(zmo): add tests for CopyBufferSubData case. 432 // TODO(zmo): add tests for CopyBufferSubData case.
480 433
481 } // namespace gpu 434 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/vertex_attrib_manager_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698