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

Side by Side Diff: gpu/command_buffer/common/gles2_cmd_utils.cc

Issue 79123004: Implemented failIfMajorPerformanceCaveat WebGL context creation attribute. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
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 // This file is here so other GLES2 related files can have a common set of 5 // This file is here so other GLES2 related files can have a common set of
6 // includes where appropriate. 6 // includes where appropriate.
7 7
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <GLES2/gl2.h> 9 #include <GLES2/gl2.h>
10 #include <GLES2/gl2ext.h> 10 #include <GLES2/gl2ext.h>
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 const int32 kSamples = 0x3031; // EGL_SAMPLES 727 const int32 kSamples = 0x3031; // EGL_SAMPLES
728 const int32 kSampleBuffers = 0x3032; // EGL_SAMPLE_BUFFERS 728 const int32 kSampleBuffers = 0x3032; // EGL_SAMPLE_BUFFERS
729 const int32 kNone = 0x3038; // EGL_NONE 729 const int32 kNone = 0x3038; // EGL_NONE
730 const int32 kSwapBehavior = 0x3093; // EGL_SWAP_BEHAVIOR 730 const int32 kSwapBehavior = 0x3093; // EGL_SWAP_BEHAVIOR
731 const int32 kBufferPreserved = 0x3094; // EGL_BUFFER_PRESERVED 731 const int32 kBufferPreserved = 0x3094; // EGL_BUFFER_PRESERVED
732 const int32 kBufferDestroyed = 0x3095; // EGL_BUFFER_DESTROYED 732 const int32 kBufferDestroyed = 0x3095; // EGL_BUFFER_DESTROYED
733 733
734 // Chromium only. 734 // Chromium only.
735 const int32 kShareResources = 0x10000; 735 const int32 kShareResources = 0x10000;
736 const int32 kBindGeneratesResource = 0x10001; 736 const int32 kBindGeneratesResource = 0x10001;
737 const int32 kFailIfMajorPerfCaveat = 0x10002;
Ken Russell (switch to Gerrit) 2013/11/20 22:39:02 This duplication of constants is really unfortunat
737 738
738 } // namespace 739 } // namespace
739 740
740 ContextCreationAttribHelper::ContextCreationAttribHelper() 741 ContextCreationAttribHelper::ContextCreationAttribHelper()
741 : alpha_size_(-1), 742 : alpha_size_(-1),
742 blue_size_(-1), 743 blue_size_(-1),
743 green_size_(-1), 744 green_size_(-1),
744 red_size_(-1), 745 red_size_(-1),
745 depth_size_(-1), 746 depth_size_(-1),
746 stencil_size_(-1), 747 stencil_size_(-1),
747 samples_(-1), 748 samples_(-1),
748 sample_buffers_(-1), 749 sample_buffers_(-1),
749 buffer_preserved_(true), 750 buffer_preserved_(true),
750 share_resources_(false), 751 share_resources_(false),
751 bind_generates_resource_(true) { 752 bind_generates_resource_(true),
753 fail_if_major_perf_caveat_(false) {
752 } 754 }
753 755
754 void ContextCreationAttribHelper::Serialize(std::vector<int32>* attribs) { 756 void ContextCreationAttribHelper::Serialize(std::vector<int32>* attribs) {
755 if (alpha_size_ != -1) { 757 if (alpha_size_ != -1) {
756 attribs->push_back(kAlphaSize); 758 attribs->push_back(kAlphaSize);
757 attribs->push_back(alpha_size_); 759 attribs->push_back(alpha_size_);
758 } 760 }
759 if (blue_size_ != -1) { 761 if (blue_size_ != -1) {
760 attribs->push_back(kBlueSize); 762 attribs->push_back(kBlueSize);
761 attribs->push_back(blue_size_); 763 attribs->push_back(blue_size_);
(...skipping 21 matching lines...) Expand all
783 if (sample_buffers_ != -1) { 785 if (sample_buffers_ != -1) {
784 attribs->push_back(kSampleBuffers); 786 attribs->push_back(kSampleBuffers);
785 attribs->push_back(sample_buffers_); 787 attribs->push_back(sample_buffers_);
786 } 788 }
787 attribs->push_back(kSwapBehavior); 789 attribs->push_back(kSwapBehavior);
788 attribs->push_back(buffer_preserved_ ? kBufferPreserved : kBufferDestroyed); 790 attribs->push_back(buffer_preserved_ ? kBufferPreserved : kBufferDestroyed);
789 attribs->push_back(kShareResources); 791 attribs->push_back(kShareResources);
790 attribs->push_back(share_resources_ ? 1 : 0); 792 attribs->push_back(share_resources_ ? 1 : 0);
791 attribs->push_back(kBindGeneratesResource); 793 attribs->push_back(kBindGeneratesResource);
792 attribs->push_back(bind_generates_resource_ ? 1 : 0); 794 attribs->push_back(bind_generates_resource_ ? 1 : 0);
795 attribs->push_back(kFailIfMajorPerfCaveat);
796 attribs->push_back(fail_if_major_perf_caveat_ ? 1 : 0);
793 attribs->push_back(kNone); 797 attribs->push_back(kNone);
794 } 798 }
795 799
796 bool ContextCreationAttribHelper::Parse(const std::vector<int32>& attribs) { 800 bool ContextCreationAttribHelper::Parse(const std::vector<int32>& attribs) {
797 for (size_t i = 0; i < attribs.size(); i += 2) { 801 for (size_t i = 0; i < attribs.size(); i += 2) {
798 const int32 attrib = attribs[i]; 802 const int32 attrib = attribs[i];
799 if (i + 1 >= attribs.size()) { 803 if (i + 1 >= attribs.size()) {
800 if (attrib == kNone) { 804 if (attrib == kNone) {
801 return true; 805 return true;
802 } 806 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 break; 838 break;
835 case kSwapBehavior: 839 case kSwapBehavior:
836 buffer_preserved_ = value == kBufferPreserved; 840 buffer_preserved_ = value == kBufferPreserved;
837 break; 841 break;
838 case kShareResources: 842 case kShareResources:
839 share_resources_ = value != 0; 843 share_resources_ = value != 0;
840 break; 844 break;
841 case kBindGeneratesResource: 845 case kBindGeneratesResource:
842 bind_generates_resource_ = value != 0; 846 bind_generates_resource_ = value != 0;
843 break; 847 break;
848 case kFailIfMajorPerfCaveat:
849 fail_if_major_perf_caveat_ = value != 0;
850 break;
844 case kNone: 851 case kNone:
845 // Terminate list, even if more attributes. 852 // Terminate list, even if more attributes.
846 return true; 853 return true;
847 default: 854 default:
848 DLOG(ERROR) << "Invalid context creation attribute: " << attrib; 855 DLOG(ERROR) << "Invalid context creation attribute: " << attrib;
849 return false; 856 return false;
850 } 857 }
851 } 858 }
852 859
853 return true; 860 return true;
854 } 861 }
855 862
856 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" 863 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h"
857 864
858 } // namespace gles2 865 } // namespace gles2
859 } // namespace gpu 866 } // namespace gpu
860 867
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698