From 7e7316e76629aa57fb7316540b65d1877c53541d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 25 Jun 2018 21:38:55 +0200 Subject: [PATCH] egl-configs: print all config attributes --- support/android/egl-configs/src/main.rs | 58 ++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/support/android/egl-configs/src/main.rs b/support/android/egl-configs/src/main.rs index d091a28d606..5963f18a5e2 100644 --- a/support/android/egl-configs/src/main.rs +++ b/support/android/egl-configs/src/main.rs @@ -25,6 +25,62 @@ unsafe fn run() { let mut num_config = -1; check!(GetConfigs(display, null_mut(), 0, &mut num_config)); println!("Got {} configs", num_config); + assert!(num_config >= 0); + + let mut configs = Vec::with_capacity(num_config as usize); + let mut num_config2 = -1; + check!(GetConfigs(display, configs.as_mut_ptr(), num_config, &mut num_config2)); + assert_eq!(num_config, num_config2); + configs.set_len(num_config as usize); + + for (i, &config) in configs.iter().enumerate() { + println!("Config #{}", i + 1); + + macro_rules! to_pairs { + ($($name: ident)*) => { + &[ $( (stringify!($name), $name) ),* ] + } + } + // https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglGetConfigAttrib.xhtml#description + for &(attr_name, attr) in to_pairs! [ + ALPHA_SIZE + ALPHA_MASK_SIZE + BIND_TO_TEXTURE_RGB + BIND_TO_TEXTURE_RGBA + BLUE_SIZE + BUFFER_SIZE + COLOR_BUFFER_TYPE + CONFIG_CAVEAT + CONFIG_ID + CONFORMANT + DEPTH_SIZE + GREEN_SIZE + LEVEL + LUMINANCE_SIZE + MAX_PBUFFER_WIDTH + MAX_PBUFFER_HEIGHT + MAX_PBUFFER_PIXELS + MAX_SWAP_INTERVAL + MIN_SWAP_INTERVAL + NATIVE_RENDERABLE + NATIVE_VISUAL_ID + NATIVE_VISUAL_TYPE + RED_SIZE + RENDERABLE_TYPE + SAMPLE_BUFFERS + SAMPLES + STENCIL_SIZE + SURFACE_TYPE + TRANSPARENT_TYPE + TRANSPARENT_RED_VALUE + TRANSPARENT_GREEN_VALUE + TRANSPARENT_BLUE_VALUE + ] { + let mut value = -1; + check!(GetConfigAttrib(display, config, attr as i32, &mut value)); + println!(" {} = {}", attr_name, value) + } + } } unsafe fn check(result: EGLBoolean, function_name: &str) { @@ -35,6 +91,6 @@ unsafe fn check(result: EGLBoolean, function_name: &str) { unsafe fn check_error() { let status = GetError(); if status != SUCCESS as i32 { - println!("Error: 0x{:x}", status); + panic!("Error: 0x{:x}", status); } }