Skip to content

Commit 5989546

Browse files
committed
Add query_counter and get_query_parameter_ptr
1 parent d62451c commit 5989546

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

src/lib.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,9 +1147,9 @@ pub trait HasContext {
11471147
) where
11481148
S: AsRef<str>;
11491149

1150-
unsafe fn debug_message_callback<F>(&mut self, callback: F)
1151-
where
1152-
F: FnMut(u32, u32, u32, u32, &str) + 'static;
1150+
unsafe fn debug_message_callback<F>(&mut self, callback: F)
1151+
where
1152+
F: FnMut(u32, u32, u32, u32, &str) + 'static;
11531153

11541154
unsafe fn get_debug_message_log(&self, count: u32) -> Vec<DebugMessageLogEntry>;
11551155

@@ -1200,8 +1200,12 @@ pub trait HasContext {
12001200

12011201
unsafe fn end_query(&self, target: u32);
12021202

1203+
unsafe fn query_counter(&self, query: Self::Query, target: u32);
1204+
12031205
unsafe fn get_query_parameter_u32(&self, query: Self::Query, parameter: u32) -> u32;
12041206

1207+
unsafe fn get_query_parameter_ptr(&self, query: Self::Query, parameter: u32, value: *mut ());
1208+
12051209
unsafe fn delete_transform_feedback(&self, transform_feedback: Self::TransformFeedback);
12061210

12071211
unsafe fn create_transform_feedback(&self) -> Result<Self::TransformFeedback, String>;

src/native.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2856,13 +2856,23 @@ impl HasContext for Context {
28562856
gl.EndQuery(target);
28572857
}
28582858

2859+
unsafe fn query_counter(&self, query: Self::Query, target: u32) {
2860+
let gl = &self.raw;
2861+
gl.QueryCounter(query.0.get(), target);
2862+
}
2863+
28592864
unsafe fn get_query_parameter_u32(&self, query: Self::Query, parameter: u32) -> u32 {
28602865
let gl = &self.raw;
28612866
let mut value = 0;
28622867
gl.GetQueryObjectuiv(query.0.get(), parameter, &mut value);
28632868
value
28642869
}
28652870

2871+
unsafe fn get_query_parameter_ptr(&self, query: Self::Query, parameter: u32, value: *mut ()) {
2872+
let gl = &self.raw;
2873+
gl.GetQueryObjectuiv(query.0.get(), parameter, value.cast());
2874+
}
2875+
28662876
unsafe fn create_transform_feedback(&self) -> Result<Self::TransformFeedback, String> {
28672877
let gl = &self.raw;
28682878
let mut name = 0;
@@ -3096,8 +3106,7 @@ extern "system" fn raw_debug_message_callback(
30963106
length: i32,
30973107
message: *const native_gl::GLchar,
30983108
user_param: *mut std::ffi::c_void,
3099-
)
3100-
{
3109+
) {
31013110
let _result = std::panic::catch_unwind(move || unsafe {
31023111
let callback: &mut DebugCallback = &mut *(user_param as *mut DebugCallback);
31033112
let slice = std::slice::from_raw_parts(message as *const u8, length as usize);

src/web_sys.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4558,6 +4558,10 @@ impl HasContext for Context {
45584558
}
45594559
}
45604560

4561+
unsafe fn query_counter(&self, target: u32) {
4562+
panic!("Query counters are not supported");
4563+
}
4564+
45614565
unsafe fn get_query_parameter_u32(&self, query: Self::Query, parameter: u32) -> u32 {
45624566
let queries = self.queries.borrow();
45634567
let raw_query = queries.get_unchecked(query);
@@ -4571,6 +4575,10 @@ impl HasContext for Context {
45714575
}
45724576
}
45734577

4578+
unsafe fn get_query_parameter_ptr(&self, query: Self::Query, parameter: u32) -> u32 {
4579+
panic!("Query buffers are not supported");
4580+
}
4581+
45744582
unsafe fn create_transform_feedback(&self) -> Result<Self::TransformFeedback, String> {
45754583
let raw_transform_feedback = match self.raw {
45764584
RawRenderingContext::WebGl1(ref _gl) => {

0 commit comments

Comments
 (0)