15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/gles2_conform_support/egl/config.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace egl {
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Config::Config()
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : buffer_size_(0),
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      red_size_(0),
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      green_size_(0),
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      blue_size_(0),
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      luminance_size_(0),
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      alpha_size_(0),
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      alpha_mask_size_(0),
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      bind_to_texture_rgb_(EGL_FALSE),
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      bind_to_texture_rgba_(EGL_FALSE),
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      color_buffer_type_(EGL_RGB_BUFFER),
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      config_caveat_(EGL_NONE),
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      config_id_(EGL_DONT_CARE),
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      conformant_(EGL_OPENGL_ES2_BIT),
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      depth_size_(0),
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      level_(0),
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      max_pbuffer_width_(0),
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      max_pbuffer_height_(0),
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      max_pbuffer_pixels_(0),
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      min_swap_interval_(EGL_DONT_CARE),
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      max_swap_interval_(EGL_DONT_CARE),
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      native_renderable_(EGL_TRUE),
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      native_visual_id_(0),
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      native_visual_type_(EGL_DONT_CARE),
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      renderable_type_(EGL_OPENGL_ES2_BIT),
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      sample_buffers_(0),
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      samples_(0),
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      stencil_size_(0),
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      surface_type_(EGL_WINDOW_BIT),
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      transparent_type_(EGL_NONE),
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      transparent_red_value_(EGL_DONT_CARE),
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      transparent_green_value_(EGL_DONT_CARE),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      transparent_blue_value_(EGL_DONT_CARE) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Config::~Config() {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool Config::GetAttrib(EGLint attribute, EGLint* value) const {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(alokp): Find out how to get correct values.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (attribute) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_BUFFER_SIZE:
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = buffer_size_;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_RED_SIZE:
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = red_size_;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_GREEN_SIZE:
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = green_size_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_BLUE_SIZE:
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = blue_size_;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_LUMINANCE_SIZE:
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = luminance_size_;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_ALPHA_SIZE:
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = alpha_size_;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_ALPHA_MASK_SIZE:
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = alpha_mask_size_;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_BIND_TO_TEXTURE_RGB:
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = bind_to_texture_rgb_;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_BIND_TO_TEXTURE_RGBA:
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = bind_to_texture_rgba_;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_COLOR_BUFFER_TYPE:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = color_buffer_type_;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_CONFIG_CAVEAT:
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = config_caveat_;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_CONFIG_ID:
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = config_id_;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_CONFORMANT:
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = conformant_;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_DEPTH_SIZE:
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = depth_size_;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_LEVEL:
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = level_;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_MAX_PBUFFER_WIDTH:
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = max_pbuffer_width_;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_MAX_PBUFFER_HEIGHT:
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = max_pbuffer_height_;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_MAX_PBUFFER_PIXELS:
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = max_pbuffer_pixels_;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_MIN_SWAP_INTERVAL:
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = min_swap_interval_;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_MAX_SWAP_INTERVAL:
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = max_swap_interval_;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_NATIVE_RENDERABLE:
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = native_renderable_;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_NATIVE_VISUAL_ID:
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = native_visual_id_;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_NATIVE_VISUAL_TYPE:
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = native_visual_type_;
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_RENDERABLE_TYPE:
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = renderable_type_;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_SAMPLE_BUFFERS:
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = sample_buffers_;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_SAMPLES:
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = samples_;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_STENCIL_SIZE:
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = stencil_size_;
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_SURFACE_TYPE:
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = surface_type_;
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_TRANSPARENT_TYPE:
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = transparent_type_;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_TRANSPARENT_RED_VALUE:
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = transparent_red_value_;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_TRANSPARENT_GREEN_VALUE:
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = transparent_green_value_;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case EGL_TRANSPARENT_BLUE_VALUE:
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *value = transparent_blue_value_;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default:
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace egl
153