aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build.rs1
-rw-r--r--src/lib.rs4
-rw-r--r--src/win32/init.rs17
3 files changed, 16 insertions, 6 deletions
diff --git a/build.rs b/build.rs
index 9925e2d..8e3b0b1 100644
--- a/build.rs
+++ b/build.rs
@@ -27,6 +27,7 @@ fn main() {
"WGL_ARB_create_context_profile".to_string(),
"WGL_ARB_extensions_string".to_string(),
"WGL_ARB_framebuffer_sRGB".to_string(),
+ "WGL_ARB_multisample".to_string(),
"WGL_ARB_pixel_format".to_string(),
"WGL_EXT_create_context_es2_profile".to_string(),
"WGL_EXT_extensions_string".to_string(),
diff --git a/src/lib.rs b/src/lib.rs
index 1eea9a4..1e10768 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -332,10 +332,6 @@ impl<'a> BuilderAttribs<'a> {
continue;
}
- if self.multisampling.is_some() && format.multisampling.is_none() {
- continue;
- }
-
current_software_result = Some((id.clone(), format.clone()));
if format.hardware_accelerated {
current_result = Some((id, format));
diff --git a/src/win32/init.rs b/src/win32/init.rs
index 5cf4021..d83c90f 100644
--- a/src/win32/init.rs
+++ b/src/win32/init.rs
@@ -490,8 +490,21 @@ unsafe fn enumerate_arb_pixel_formats(extra: &gl::wgl_extra::Wgl, hdc: &WindowWr
stencil_bits: get_info(index, gl::wgl_extra::STENCIL_BITS_ARB) as u8,
stereoscopy: get_info(index, gl::wgl_extra::STEREO_ARB) != 0,
double_buffer: get_info(index, gl::wgl_extra::DOUBLE_BUFFER_ARB) != 0,
- multisampling: None, // FIXME:
- srgb: false, // FIXME:
+ multisampling: {
+ if is_extension_supported(extra, hdc, "WGL_ARB_multisample") {
+ match get_info(index, gl::wgl_extra::SAMPLES_ARB) {
+ 0 => None,
+ a => Some(a as u16),
+ }
+ } else {
+ None
+ }
+ },
+ srgb: if is_extension_supported(extra, hdc, "WGL_ARB_framebuffer_sRGB") {
+ get_info(index, gl::wgl_extra::FRAMEBUFFER_SRGB_CAPABLE_ARB) != 0
+ } else {
+ false
+ },
}, index as libc::c_int));
}