1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "gpu/gles2_conform_support/egl/config.h"
6
7namespace egl {
8
9Config::Config()
10    : buffer_size_(0),
11      red_size_(0),
12      green_size_(0),
13      blue_size_(0),
14      luminance_size_(0),
15      alpha_size_(0),
16      alpha_mask_size_(0),
17      bind_to_texture_rgb_(EGL_FALSE),
18      bind_to_texture_rgba_(EGL_FALSE),
19      color_buffer_type_(EGL_RGB_BUFFER),
20      config_caveat_(EGL_NONE),
21      config_id_(EGL_DONT_CARE),
22      conformant_(EGL_OPENGL_ES2_BIT),
23      depth_size_(0),
24      level_(0),
25      max_pbuffer_width_(0),
26      max_pbuffer_height_(0),
27      max_pbuffer_pixels_(0),
28      min_swap_interval_(EGL_DONT_CARE),
29      max_swap_interval_(EGL_DONT_CARE),
30      native_renderable_(EGL_TRUE),
31      native_visual_id_(0),
32      native_visual_type_(EGL_DONT_CARE),
33      renderable_type_(EGL_OPENGL_ES2_BIT),
34      sample_buffers_(0),
35      samples_(0),
36      stencil_size_(0),
37      surface_type_(EGL_WINDOW_BIT),
38      transparent_type_(EGL_NONE),
39      transparent_red_value_(EGL_DONT_CARE),
40      transparent_green_value_(EGL_DONT_CARE),
41      transparent_blue_value_(EGL_DONT_CARE) {
42}
43
44Config::~Config() {
45}
46
47bool Config::GetAttrib(EGLint attribute, EGLint* value) const {
48  // TODO(alokp): Find out how to get correct values.
49  switch (attribute) {
50    case EGL_BUFFER_SIZE:
51      *value = buffer_size_;
52      break;
53    case EGL_RED_SIZE:
54      *value = red_size_;
55      break;
56    case EGL_GREEN_SIZE:
57      *value = green_size_;
58      break;
59    case EGL_BLUE_SIZE:
60      *value = blue_size_;
61      break;
62    case EGL_LUMINANCE_SIZE:
63      *value = luminance_size_;
64      break;
65    case EGL_ALPHA_SIZE:
66      *value = alpha_size_;
67      break;
68    case EGL_ALPHA_MASK_SIZE:
69      *value = alpha_mask_size_;
70      break;
71    case EGL_BIND_TO_TEXTURE_RGB:
72      *value = bind_to_texture_rgb_;
73      break;
74    case EGL_BIND_TO_TEXTURE_RGBA:
75      *value = bind_to_texture_rgba_;
76      break;
77    case EGL_COLOR_BUFFER_TYPE:
78      *value = color_buffer_type_;
79      break;
80    case EGL_CONFIG_CAVEAT:
81      *value = config_caveat_;
82      break;
83    case EGL_CONFIG_ID:
84      *value = config_id_;
85      break;
86    case EGL_CONFORMANT:
87      *value = conformant_;
88      break;
89    case EGL_DEPTH_SIZE:
90      *value = depth_size_;
91      break;
92    case EGL_LEVEL:
93      *value = level_;
94      break;
95    case EGL_MAX_PBUFFER_WIDTH:
96      *value = max_pbuffer_width_;
97      break;
98    case EGL_MAX_PBUFFER_HEIGHT:
99      *value = max_pbuffer_height_;
100      break;
101    case EGL_MAX_PBUFFER_PIXELS:
102      *value = max_pbuffer_pixels_;
103      break;
104    case EGL_MIN_SWAP_INTERVAL:
105      *value = min_swap_interval_;
106      break;
107    case EGL_MAX_SWAP_INTERVAL:
108      *value = max_swap_interval_;
109      break;
110    case EGL_NATIVE_RENDERABLE:
111      *value = native_renderable_;
112      break;
113    case EGL_NATIVE_VISUAL_ID:
114      *value = native_visual_id_;
115      break;
116    case EGL_NATIVE_VISUAL_TYPE:
117      *value = native_visual_type_;
118      break;
119    case EGL_RENDERABLE_TYPE:
120      *value = renderable_type_;
121      break;
122    case EGL_SAMPLE_BUFFERS:
123      *value = sample_buffers_;
124      break;
125    case EGL_SAMPLES:
126      *value = samples_;
127      break;
128    case EGL_STENCIL_SIZE:
129      *value = stencil_size_;
130      break;
131    case EGL_SURFACE_TYPE:
132      *value = surface_type_;
133      break;
134    case EGL_TRANSPARENT_TYPE:
135      *value = transparent_type_;
136      break;
137    case EGL_TRANSPARENT_RED_VALUE:
138      *value = transparent_red_value_;
139      break;
140    case EGL_TRANSPARENT_GREEN_VALUE:
141      *value = transparent_green_value_;
142      break;
143    case EGL_TRANSPARENT_BLUE_VALUE:
144      *value = transparent_blue_value_;
145      break;
146    default:
147      return false;
148  }
149  return true;
150}
151
152}  // namespace egl
153