Skip to content
This repository was archived by the owner on Jul 10, 2023. It is now read-only.

Commit 2dff76f

Browse files
zmikeMike Blumenkrantz
zmike
authored and
Mike Blumenkrantz
committed
only enable gl error checking with feature "gldebug"
1 parent ed05b9c commit 2dff76f

File tree

4 files changed

+68
-67
lines changed

4 files changed

+68
-67
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ authors = ["The Servo Project Developers"]
77
[features]
88
default = []
99
plugins = ["euclid/plugins", "azure/plugins", "skia/euclid/plugins", "io-surface/euclid/plugins"]
10+
gldebug = []
1011

1112
[dependencies]
1213
libc = "*"

src/platform/surface.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl MemoryBufferNativeSurface {
236236
gl::BGRA,
237237
gl::UNSIGNED_BYTE,
238238
Some(&self.bytes));
239-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
239+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
240240
}
241241

242242
#[cfg(target_os="android")]

src/rendergl.rs

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,15 @@ struct ShaderProgram {
143143

144144
impl ShaderProgram {
145145
pub fn new(vertex_shader_source: &str, fragment_shader_source: &str) -> ShaderProgram {
146-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
146+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
147147
let id = gl::create_program();
148-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
148+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
149149
gl::attach_shader(id, ShaderProgram::compile_shader(fragment_shader_source, gl::FRAGMENT_SHADER));
150-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
150+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
151151
gl::attach_shader(id, ShaderProgram::compile_shader(vertex_shader_source, gl::VERTEX_SHADER));
152-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
152+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
153153
gl::link_program(id);
154-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
154+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
155155
if gl::get_program_iv(id, gl::LINK_STATUS) == (0 as GLint) {
156156
panic!("Failed to compile shader program: {}", gl::get_program_info_log(id));
157157
}
@@ -163,11 +163,11 @@ impl ShaderProgram {
163163

164164
pub fn compile_shader(source_string: &str, shader_type: GLenum) -> GLuint {
165165
let id = gl::create_shader(shader_type);
166-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
166+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
167167
gl::shader_source(id, &[ source_string.as_bytes() ]);
168-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
168+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
169169
gl::compile_shader(id);
170-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
170+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
171171
if gl::get_shader_iv(id, gl::COMPILE_STATUS) == (0 as GLint) {
172172
panic!("Failed to compile shader: {}", gl::get_shader_info_log(id));
173173
}
@@ -224,43 +224,43 @@ impl TextureProgram {
224224
buffers: &Buffers,
225225
opacity: f32) {
226226
gl::uniform_1i(self.sampler_uniform, 0);
227-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
227+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
228228
gl::uniform_matrix_4fv(self.modelview_uniform, false, &transform.to_array());
229-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
229+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
230230
gl::uniform_matrix_4fv(self.projection_uniform, false, &projection_matrix.to_array());
231-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
231+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
232232

233233
let vertex_size = mem::size_of::<TextureVertex>();
234234

235235
gl::bind_buffer(gl::ARRAY_BUFFER, buffers.quad_vertex_buffer);
236-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
236+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
237237
gl::buffer_data(gl::ARRAY_BUFFER, vertices, gl::DYNAMIC_DRAW);
238-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
238+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
239239
gl::vertex_attrib_pointer_f32(self.vertex_position_attr as GLuint, 2, false, vertex_size as i32, 0);
240-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
240+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
241241
gl::vertex_attrib_pointer_f32(self.vertex_uv_attr as GLuint, 2, false, vertex_size as i32, 8);
242-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
242+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
243243

244244
gl::uniform_matrix_4fv(self.texture_space_transform_uniform,
245245
false,
246246
&texture_space_transform.to_array());
247-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
247+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
248248

249249
gl::uniform_1f(self.opacity_uniform, opacity);
250-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
250+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
251251
}
252252

253253
fn enable_attribute_arrays(&self) {
254254
gl::enable_vertex_attrib_array(self.vertex_position_attr as GLuint);
255-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
255+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
256256
gl::enable_vertex_attrib_array(self.vertex_uv_attr as GLuint);
257-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
257+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
258258
}
259259

260260
fn disable_attribute_arrays(&self) {
261261
gl::disable_vertex_attrib_array(self.vertex_uv_attr as GLuint);
262262
gl::disable_vertex_attrib_array(self.vertex_position_attr as GLuint);
263-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
263+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
264264
}
265265

266266
fn create_2d_program() -> TextureProgram {
@@ -270,7 +270,7 @@ impl TextureProgram {
270270
#[cfg(target_os="macos")]
271271
fn create_rectangle_program_if_necessary() -> Option<TextureProgram> {
272272
gl::enable(gl::TEXTURE_RECTANGLE_ARB);
273-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
273+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
274274
Some(TextureProgram::new("texture2DRect", "sampler2DRect"))
275275
}
276276

@@ -307,15 +307,15 @@ impl SolidColorProgram {
307307
projection_matrix: &Matrix4,
308308
color: &Color) {
309309
gl::uniform_matrix_4fv(self.modelview_uniform, false, &transform.to_array());
310-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
310+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
311311
gl::uniform_matrix_4fv(self.projection_uniform, false, &projection_matrix.to_array());
312-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
312+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
313313
gl::uniform_4f(self.color_uniform,
314314
color.r as GLfloat,
315315
color.g as GLfloat,
316316
color.b as GLfloat,
317317
color.a as GLfloat);
318-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
318+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
319319
}
320320

321321
fn bind_uniforms_and_attributes_for_lines(&self,
@@ -327,11 +327,11 @@ impl SolidColorProgram {
327327
self.bind_uniforms_and_attributes_common(transform, projection_matrix, color);
328328

329329
gl::bind_buffer(gl::ARRAY_BUFFER, buffers.line_quad_vertex_buffer);
330-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
330+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
331331
gl::buffer_data(gl::ARRAY_BUFFER, vertices, gl::DYNAMIC_DRAW);
332-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
332+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
333333
gl::vertex_attrib_pointer_f32(self.vertex_position_attr as GLuint, 2, false, 0, 0);
334-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
334+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
335335
}
336336

337337
fn bind_uniforms_and_attributes_for_quad(&self,
@@ -343,21 +343,21 @@ impl SolidColorProgram {
343343
self.bind_uniforms_and_attributes_common(transform, projection_matrix, color);
344344

345345
gl::bind_buffer(gl::ARRAY_BUFFER, buffers.quad_vertex_buffer);
346-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
346+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
347347
gl::buffer_data(gl::ARRAY_BUFFER, vertices, gl::DYNAMIC_DRAW);
348-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
348+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
349349
gl::vertex_attrib_pointer_f32(self.vertex_position_attr as GLuint, 2, false, 0, 0);
350-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
350+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
351351
}
352352

353353
fn enable_attribute_arrays(&self) {
354354
gl::enable_vertex_attrib_array(self.vertex_position_attr as GLuint);
355-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
355+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
356356
}
357357

358358
fn disable_attribute_arrays(&self) {
359359
gl::disable_vertex_attrib_array(self.vertex_position_attr as GLuint);
360-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
360+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
361361
}
362362
}
363363

@@ -515,15 +515,15 @@ impl RenderContext {
515515
pub fn new(compositing_display: NativeDisplay,
516516
show_debug_borders: bool,
517517
force_near_texture_filter: bool) -> RenderContext {
518-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
518+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
519519
gl::enable(gl::TEXTURE_2D);
520-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
520+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
521521

522522
// Each layer uses premultiplied alpha!
523523
gl::enable(gl::BLEND);
524-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
524+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
525525
gl::blend_func(gl::ONE, gl::ONE_MINUS_SRC_ALPHA);
526-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
526+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
527527

528528
let texture_2d_program = TextureProgram::create_2d_program();
529529
let solid_color_program = SolidColorProgram::new();
@@ -542,14 +542,14 @@ impl RenderContext {
542542

543543
fn init_buffers() -> Buffers {
544544
let quad_vertex_buffer = gl::gen_buffers(1)[0];
545-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
545+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
546546
gl::bind_buffer(gl::ARRAY_BUFFER, quad_vertex_buffer);
547-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
547+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
548548

549549
let line_quad_vertex_buffer = gl::gen_buffers(1)[0];
550-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
550+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
551551
gl::bind_buffer(gl::ARRAY_BUFFER, line_quad_vertex_buffer);
552-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
552+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
553553

554554
Buffers {
555555
quad_vertex_buffer: quad_vertex_buffer,
@@ -564,14 +564,14 @@ impl RenderContext {
564564
color: &Color) {
565565
self.solid_color_program.enable_attribute_arrays();
566566
gl::use_program(self.solid_color_program.program.id);
567-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
567+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
568568
self.solid_color_program.bind_uniforms_and_attributes_for_quad(vertices,
569569
transform,
570570
projection,
571571
&self.buffers,
572572
color);
573573
gl::draw_arrays(gl::TRIANGLE_STRIP, 0, 4);
574-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
574+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
575575
self.solid_color_program.disable_attribute_arrays();
576576
}
577577

@@ -595,21 +595,21 @@ impl RenderContext {
595595
program.enable_attribute_arrays();
596596

597597
gl::use_program(program.program.id);
598-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
598+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
599599
gl::active_texture(gl::TEXTURE0);
600-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
600+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
601601
gl::bind_texture(texture.target.as_gl_target(), texture.native_texture());
602-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
602+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
603603

604604
let filter_mode = if self.force_near_texture_filter {
605605
gl::NEAREST
606606
} else {
607607
gl::LINEAR
608608
} as GLint;
609609
gl::tex_parameter_i(texture.target.as_gl_target(), gl::TEXTURE_MAG_FILTER, filter_mode);
610-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
610+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
611611
gl::tex_parameter_i(texture.target.as_gl_target(), gl::TEXTURE_MIN_FILTER, filter_mode);
612-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
612+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
613613

614614
// We calculate a transformation matrix for the texture coordinates
615615
// which is useful for flipping the texture vertically or scaling the
@@ -636,12 +636,12 @@ impl RenderContext {
636636

637637
// Draw!
638638
gl::draw_arrays(gl::TRIANGLE_STRIP, 0, 4);
639-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
639+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
640640
gl::bind_texture(gl::TEXTURE_2D, 0);
641-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
641+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
642642

643643
gl::bind_texture(texture.target.as_gl_target(), 0);
644-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
644+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
645645
program.disable_attribute_arrays()
646646
}
647647

@@ -659,9 +659,9 @@ impl RenderContext {
659659
&self.buffers,
660660
color);
661661
gl::line_width(line_thickness as GLfloat);
662-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
662+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
663663
gl::draw_arrays(gl::LINE_STRIP, 0, 5);
664-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
664+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
665665
self.solid_color_program.disable_attribute_arrays();
666666
}
667667

@@ -871,19 +871,19 @@ pub fn render_scene<T>(root_layer: Rc<Layer<T>>,
871871
let v = scene.viewport.to_untyped();
872872
gl::viewport(v.origin.x as GLint, v.origin.y as GLint,
873873
v.size.width as GLsizei, v.size.height as GLsizei);
874-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
874+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
875875

876876
// Enable depth testing for 3d transforms. Set z-mode to LESS-EQUAL
877877
// so that layers with equal Z are able to paint correctly in
878878
// the order they are specified.
879879
gl::enable(gl::DEPTH_TEST);
880-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
880+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
881881
gl::clear_color(1.0, 1.0, 1.0, 1.0);
882-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
882+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
883883
gl::clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);
884-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
884+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
885885
gl::depth_func(gl::LEQUAL);
886-
unsafe { assert_eq!(gl::GetError(), gl::NO_ERROR); }
886+
unsafe { if cfg!(feature = "gldebug") { assert_eq!(gl::GetError(), gl::NO_ERROR); }}
887887

888888
// Set up the initial modelview matrix.
889889
let transform = Matrix4::identity().scale(scene.scale.get(), scene.scale.get(), 1.0);

0 commit comments

Comments
 (0)