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

Side by Side Diff: gpu/command_buffer/service/context_state.cc

Issue 1785483002: Handle UNPACK_SKIP_* and PACK_SKIP_* parameters on the client side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "gpu/command_buffer/service/context_state.h" 5 #include "gpu/command_buffer/service/context_state.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 10
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 glPixelStorei(GL_PACK_ROW_LENGTH, 0); 454 glPixelStorei(GL_PACK_ROW_LENGTH, 0);
455 } 455 }
456 } 456 }
457 457
458 void ContextState::UpdateUnpackParameters() const { 458 void ContextState::UpdateUnpackParameters() const {
459 if (!feature_info_->IsES3Capable()) 459 if (!feature_info_->IsES3Capable())
460 return; 460 return;
461 if (bound_pixel_unpack_buffer.get()) { 461 if (bound_pixel_unpack_buffer.get()) {
462 glPixelStorei(GL_UNPACK_ROW_LENGTH, unpack_row_length); 462 glPixelStorei(GL_UNPACK_ROW_LENGTH, unpack_row_length);
463 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, unpack_image_height); 463 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, unpack_image_height);
464 glPixelStorei(GL_UNPACK_SKIP_PIXELS, unpack_skip_pixels);
465 glPixelStorei(GL_UNPACK_SKIP_ROWS, unpack_skip_rows);
466 glPixelStorei(GL_UNPACK_SKIP_IMAGES, unpack_skip_images);
467 } else { 464 } else {
468 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); 465 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
469 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0); 466 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0);
470 glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
471 glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
472 glPixelStorei(GL_UNPACK_SKIP_IMAGES, 0);
473 } 467 }
474 } 468 }
475 469
476 void ContextState::SetBoundBuffer(GLenum target, Buffer* buffer) { 470 void ContextState::SetBoundBuffer(GLenum target, Buffer* buffer) {
477 switch (target) { 471 switch (target) {
478 case GL_ARRAY_BUFFER: 472 case GL_ARRAY_BUFFER:
479 bound_array_buffer = buffer; 473 bound_array_buffer = buffer;
480 break; 474 break;
481 case GL_ELEMENT_ARRAY_BUFFER: 475 case GL_ELEMENT_ARRAY_BUFFER:
482 vertex_attrib_manager->SetElementArrayBuffer(buffer); 476 vertex_attrib_manager->SetElementArrayBuffer(buffer);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 void ContextState::UnbindSampler(Sampler* sampler) { 586 void ContextState::UnbindSampler(Sampler* sampler) {
593 for (size_t jj = 0; jj < sampler_units.size(); ++jj) { 587 for (size_t jj = 0; jj < sampler_units.size(); ++jj) {
594 if (sampler_units[jj].get() == sampler) { 588 if (sampler_units[jj].get() == sampler) {
595 sampler_units[jj] = nullptr; 589 sampler_units[jj] = nullptr;
596 glBindSampler(jj, 0); 590 glBindSampler(jj, 0);
597 } 591 }
598 } 592 }
599 } 593 }
600 594
601 PixelStoreParams ContextState::GetPackParams() { 595 PixelStoreParams ContextState::GetPackParams() {
596 DCHECK_EQ(0, pack_skip_pixels);
597 DCHECK_EQ(0, pack_skip_rows);
602 PixelStoreParams params; 598 PixelStoreParams params;
603 params.alignment = pack_alignment; 599 params.alignment = pack_alignment;
604 params.row_length = pack_row_length; 600 params.row_length = pack_row_length;
605 params.skip_pixels = pack_skip_pixels;
606 params.skip_rows = pack_skip_rows;
607 return params; 601 return params;
608 } 602 }
609 603
610 PixelStoreParams ContextState::GetUnpackParams(Dimension dimension) { 604 PixelStoreParams ContextState::GetUnpackParams(Dimension dimension) {
605 DCHECK_EQ(0, unpack_skip_pixels);
606 DCHECK_EQ(0, unpack_skip_rows);
607 DCHECK_EQ(0, unpack_skip_images);
611 PixelStoreParams params; 608 PixelStoreParams params;
612 params.alignment = unpack_alignment; 609 params.alignment = unpack_alignment;
613 params.row_length = unpack_row_length; 610 params.row_length = unpack_row_length;
614 params.skip_pixels = unpack_skip_pixels;
615 params.skip_rows = unpack_skip_rows;
616 if (dimension == k3D) { 611 if (dimension == k3D) {
617 params.image_height = unpack_image_height; 612 params.image_height = unpack_image_height;
618 params.skip_images = unpack_skip_images;
619 } 613 }
620 return params; 614 return params;
621 } 615 }
622 616
623 void ContextState::InitStateManual(const ContextState*) const { 617 void ContextState::InitStateManual(const ContextState*) const {
624 // Here we always reset the states whether it's different from previous ones. 618 // Here we always reset the states whether it's different from previous ones.
625 // We have very limited states here; also, once we switch to MANGLE, MANGLE 619 // We have very limited states here; also, once we switch to MANGLE, MANGLE
626 // will opmitize this. 620 // will opmitize this.
627 UpdatePackParameters(); 621 UpdatePackParameters();
628 UpdateUnpackParameters(); 622 UpdateUnpackParameters();
629 } 623 }
630 624
631 // Include the auto-generated part of this file. We split this because it means 625 // Include the auto-generated part of this file. We split this because it means
632 // we can easily edit the non-auto generated parts right here in this file 626 // we can easily edit the non-auto generated parts right here in this file
633 // instead of having to edit some template or the code generator. 627 // instead of having to edit some template or the code generator.
634 #include "gpu/command_buffer/service/context_state_impl_autogen.h" 628 #include "gpu/command_buffer/service/context_state_impl_autogen.h"
635 629
636 } // namespace gles2 630 } // namespace gles2
637 } // namespace gpu 631 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation_unittest.cc ('k') | gpu/command_buffer/service/feature_info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698