summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/feature_info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service/feature_info.cc')
-rw-r--r--gpu/command_buffer/service/feature_info.cc54
1 files changed, 54 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index 84fc2e4..c6220bb 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -1118,6 +1118,60 @@ bool FeatureInfo::IsES3Capable() const {
void FeatureInfo::EnableES3Validators() {
DCHECK(IsES3Capable());
validators_.UpdateValuesES3();
+
+ GLint max_color_attachments = 0;
+ glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max_color_attachments);
+ const int kTotalColorAttachmentEnums = 16;
+ const GLenum kColorAttachments[] = {
+ GL_COLOR_ATTACHMENT0,
+ GL_COLOR_ATTACHMENT1,
+ GL_COLOR_ATTACHMENT2,
+ GL_COLOR_ATTACHMENT3,
+ GL_COLOR_ATTACHMENT4,
+ GL_COLOR_ATTACHMENT5,
+ GL_COLOR_ATTACHMENT6,
+ GL_COLOR_ATTACHMENT7,
+ GL_COLOR_ATTACHMENT8,
+ GL_COLOR_ATTACHMENT9,
+ GL_COLOR_ATTACHMENT10,
+ GL_COLOR_ATTACHMENT11,
+ GL_COLOR_ATTACHMENT12,
+ GL_COLOR_ATTACHMENT13,
+ GL_COLOR_ATTACHMENT14,
+ GL_COLOR_ATTACHMENT15,
+ };
+ if (max_color_attachments < kTotalColorAttachmentEnums) {
+ validators_.attachment.RemoveValues(
+ kColorAttachments + max_color_attachments,
+ kTotalColorAttachmentEnums - max_color_attachments);
+ }
+
+ GLint max_draw_buffers = 0;
+ glGetIntegerv(GL_MAX_DRAW_BUFFERS, &max_draw_buffers);
+ const int kTotalDrawBufferEnums = 16;
+ const GLenum kDrawBuffers[] = {
+ GL_DRAW_BUFFER0,
+ GL_DRAW_BUFFER1,
+ GL_DRAW_BUFFER2,
+ GL_DRAW_BUFFER3,
+ GL_DRAW_BUFFER4,
+ GL_DRAW_BUFFER5,
+ GL_DRAW_BUFFER6,
+ GL_DRAW_BUFFER7,
+ GL_DRAW_BUFFER8,
+ GL_DRAW_BUFFER9,
+ GL_DRAW_BUFFER10,
+ GL_DRAW_BUFFER11,
+ GL_DRAW_BUFFER12,
+ GL_DRAW_BUFFER13,
+ GL_DRAW_BUFFER14,
+ GL_DRAW_BUFFER15,
+ };
+ if (max_draw_buffers < kTotalDrawBufferEnums) {
+ validators_.g_l_state.RemoveValues(
+ kDrawBuffers + max_draw_buffers,
+ kTotalDrawBufferEnums - max_draw_buffers);
+ }
}
void FeatureInfo::AddExtensionString(const char* s) {