OLD | NEW |
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 <sstream> | 8 #include <sstream> |
9 #include <GLES2/gl2.h> | 9 #include <GLES2/gl2.h> |
10 #include <GLES2/gl2ext.h> | 10 #include <GLES2/gl2ext.h> |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 const int32 kSampleBuffers = 0x3032; // EGL_SAMPLE_BUFFERS | 767 const int32 kSampleBuffers = 0x3032; // EGL_SAMPLE_BUFFERS |
768 const int32 kNone = 0x3038; // EGL_NONE | 768 const int32 kNone = 0x3038; // EGL_NONE |
769 const int32 kSwapBehavior = 0x3093; // EGL_SWAP_BEHAVIOR | 769 const int32 kSwapBehavior = 0x3093; // EGL_SWAP_BEHAVIOR |
770 const int32 kBufferPreserved = 0x3094; // EGL_BUFFER_PRESERVED | 770 const int32 kBufferPreserved = 0x3094; // EGL_BUFFER_PRESERVED |
771 const int32 kBufferDestroyed = 0x3095; // EGL_BUFFER_DESTROYED | 771 const int32 kBufferDestroyed = 0x3095; // EGL_BUFFER_DESTROYED |
772 | 772 |
773 // Chromium only. | 773 // Chromium only. |
774 const int32 kShareResources = 0x10000; | 774 const int32 kShareResources = 0x10000; |
775 const int32 kBindGeneratesResource = 0x10001; | 775 const int32 kBindGeneratesResource = 0x10001; |
776 const int32 kFailIfMajorPerfCaveat = 0x10002; | 776 const int32 kFailIfMajorPerfCaveat = 0x10002; |
| 777 const int32 kLoseContextWhenOutOfMemory = 0x10003; |
777 | 778 |
778 } // namespace | 779 } // namespace |
779 | 780 |
780 ContextCreationAttribHelper::ContextCreationAttribHelper() | 781 ContextCreationAttribHelper::ContextCreationAttribHelper() |
781 : alpha_size_(-1), | 782 : alpha_size_(-1), |
782 blue_size_(-1), | 783 blue_size_(-1), |
783 green_size_(-1), | 784 green_size_(-1), |
784 red_size_(-1), | 785 red_size_(-1), |
785 depth_size_(-1), | 786 depth_size_(-1), |
786 stencil_size_(-1), | 787 stencil_size_(-1), |
787 samples_(-1), | 788 samples_(-1), |
788 sample_buffers_(-1), | 789 sample_buffers_(-1), |
789 buffer_preserved_(true), | 790 buffer_preserved_(true), |
790 share_resources_(false), | 791 share_resources_(false), |
791 bind_generates_resource_(true), | 792 bind_generates_resource_(true), |
792 fail_if_major_perf_caveat_(false) { | 793 fail_if_major_perf_caveat_(false), |
793 } | 794 lose_context_when_out_of_memory_(false) {} |
794 | 795 |
795 void ContextCreationAttribHelper::Serialize(std::vector<int32>* attribs) { | 796 void ContextCreationAttribHelper::Serialize(std::vector<int32>* attribs) { |
796 if (alpha_size_ != -1) { | 797 if (alpha_size_ != -1) { |
797 attribs->push_back(kAlphaSize); | 798 attribs->push_back(kAlphaSize); |
798 attribs->push_back(alpha_size_); | 799 attribs->push_back(alpha_size_); |
799 } | 800 } |
800 if (blue_size_ != -1) { | 801 if (blue_size_ != -1) { |
801 attribs->push_back(kBlueSize); | 802 attribs->push_back(kBlueSize); |
802 attribs->push_back(blue_size_); | 803 attribs->push_back(blue_size_); |
803 } | 804 } |
(...skipping 22 matching lines...) Expand all Loading... |
826 attribs->push_back(sample_buffers_); | 827 attribs->push_back(sample_buffers_); |
827 } | 828 } |
828 attribs->push_back(kSwapBehavior); | 829 attribs->push_back(kSwapBehavior); |
829 attribs->push_back(buffer_preserved_ ? kBufferPreserved : kBufferDestroyed); | 830 attribs->push_back(buffer_preserved_ ? kBufferPreserved : kBufferDestroyed); |
830 attribs->push_back(kShareResources); | 831 attribs->push_back(kShareResources); |
831 attribs->push_back(share_resources_ ? 1 : 0); | 832 attribs->push_back(share_resources_ ? 1 : 0); |
832 attribs->push_back(kBindGeneratesResource); | 833 attribs->push_back(kBindGeneratesResource); |
833 attribs->push_back(bind_generates_resource_ ? 1 : 0); | 834 attribs->push_back(bind_generates_resource_ ? 1 : 0); |
834 attribs->push_back(kFailIfMajorPerfCaveat); | 835 attribs->push_back(kFailIfMajorPerfCaveat); |
835 attribs->push_back(fail_if_major_perf_caveat_ ? 1 : 0); | 836 attribs->push_back(fail_if_major_perf_caveat_ ? 1 : 0); |
| 837 attribs->push_back(kLoseContextWhenOutOfMemory); |
| 838 attribs->push_back(lose_context_when_out_of_memory_ ? 1 : 0); |
836 attribs->push_back(kNone); | 839 attribs->push_back(kNone); |
837 } | 840 } |
838 | 841 |
839 bool ContextCreationAttribHelper::Parse(const std::vector<int32>& attribs) { | 842 bool ContextCreationAttribHelper::Parse(const std::vector<int32>& attribs) { |
840 for (size_t i = 0; i < attribs.size(); i += 2) { | 843 for (size_t i = 0; i < attribs.size(); i += 2) { |
841 const int32 attrib = attribs[i]; | 844 const int32 attrib = attribs[i]; |
842 if (i + 1 >= attribs.size()) { | 845 if (i + 1 >= attribs.size()) { |
843 if (attrib == kNone) { | 846 if (attrib == kNone) { |
844 return true; | 847 return true; |
845 } | 848 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 break; | 883 break; |
881 case kShareResources: | 884 case kShareResources: |
882 share_resources_ = value != 0; | 885 share_resources_ = value != 0; |
883 break; | 886 break; |
884 case kBindGeneratesResource: | 887 case kBindGeneratesResource: |
885 bind_generates_resource_ = value != 0; | 888 bind_generates_resource_ = value != 0; |
886 break; | 889 break; |
887 case kFailIfMajorPerfCaveat: | 890 case kFailIfMajorPerfCaveat: |
888 fail_if_major_perf_caveat_ = value != 0; | 891 fail_if_major_perf_caveat_ = value != 0; |
889 break; | 892 break; |
| 893 case kLoseContextWhenOutOfMemory: |
| 894 lose_context_when_out_of_memory_ = value != 0; |
| 895 break; |
890 case kNone: | 896 case kNone: |
891 // Terminate list, even if more attributes. | 897 // Terminate list, even if more attributes. |
892 return true; | 898 return true; |
893 default: | 899 default: |
894 DLOG(ERROR) << "Invalid context creation attribute: " << attrib; | 900 DLOG(ERROR) << "Invalid context creation attribute: " << attrib; |
895 return false; | 901 return false; |
896 } | 902 } |
897 } | 903 } |
898 | 904 |
899 return true; | 905 return true; |
900 } | 906 } |
901 | 907 |
902 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" | 908 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" |
903 | 909 |
904 } // namespace gles2 | 910 } // namespace gles2 |
905 } // namespace gpu | 911 } // namespace gpu |
906 | 912 |
OLD | NEW |