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)#ifndef GPU_GLES2_CONFORM_TEST_CONFIG_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_GLES2_CONFORM_TEST_CONFIG_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <EGL/egl.h>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace egl {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Config {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Config();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~Config();
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool GetAttrib(EGLint attribute, EGLint* value) const;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Total color component bits in the color buffer.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint buffer_size_;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Red in the color buffer.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint red_size_;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Green in the color buffer.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint green_size_;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Blue in the color buffer.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint blue_size_;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Luminance in the color buffer.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint luminance_size_;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Alpha in the color buffer.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint alpha_size_;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Alpha Mask in the mask buffer.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint alpha_mask_size_;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if bindable to RGB textures.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLBoolean bind_to_texture_rgb_;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if bindable to RGBA textures.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLBoolean bind_to_texture_rgba_;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Color buffer type.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLenum color_buffer_type_;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Any caveats for the configuration.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLenum config_caveat_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Unique EGLConfig identifier.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint config_id_;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether contexts created with this config are conformant.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint conformant_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Z in the depth buffer.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint depth_size_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Frame buffer level.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint level_;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maximum width of pbuffer.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint max_pbuffer_width_;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maximum height of pbuffer.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint max_pbuffer_height_;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maximum size of pbuffer.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint max_pbuffer_pixels_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Minimum swap interval.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint min_swap_interval_;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maximum swap interval.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint max_swap_interval_;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if native rendering APIs can render to surface.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLBoolean native_renderable_;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Handle of corresponding native visual.
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint native_visual_id_;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Native visual type of the associated visual.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint native_visual_type_;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Which client rendering APIs are supported.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint renderable_type_;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Number of multisample buffers.
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint sample_buffers_;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Number of samples per pixel.
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint samples_;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bits of Stencil in the stencil buffer.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint stencil_size_;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Which types of EGL surfaces are supported.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint surface_type_;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Type of transparency supported
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLenum transparent_type_;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Transparent red value
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint transparent_red_value_;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Transparent green value
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint transparent_green_value_;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Transparent blue value
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EGLint transparent_blue_value_;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(Config);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace egl
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // GPU_GLES2_CONFORM_TEST_CONFIG_H_
93