mirror of https://gitlab.freedesktop.org/mesa/mesa
rusticl: print missing context features
Signed-off-by: Thomas Debesse <dev@illwieckz.net> Reviewed-by: Karol Herbst <kherbst@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19498>
This commit is contained in:
parent
bdc240e13e
commit
20c936bee1
|
@ -5,6 +5,7 @@ use crate::pipe::screen::*;
|
|||
use crate::pipe::transfer::*;
|
||||
|
||||
use mesa_rust_gen::*;
|
||||
use mesa_rust_util::has_required_feature;
|
||||
|
||||
use std::os::raw::*;
|
||||
use std::ptr;
|
||||
|
@ -475,28 +476,30 @@ impl Drop for PipeContext {
|
|||
}
|
||||
}
|
||||
|
||||
fn has_required_cbs(c: &pipe_context) -> bool {
|
||||
c.destroy.is_some()
|
||||
&& c.bind_compute_state.is_some()
|
||||
&& c.bind_sampler_states.is_some()
|
||||
&& c.buffer_map.is_some()
|
||||
&& c.buffer_subdata.is_some()
|
||||
&& c.buffer_unmap.is_some()
|
||||
&& c.clear_buffer.is_some()
|
||||
&& c.clear_texture.is_some()
|
||||
&& c.create_compute_state.is_some()
|
||||
&& c.delete_compute_state.is_some()
|
||||
&& c.delete_sampler_state.is_some()
|
||||
&& c.flush.is_some()
|
||||
&& c.launch_grid.is_some()
|
||||
&& c.memory_barrier.is_some()
|
||||
&& c.resource_copy_region.is_some()
|
||||
&& c.sampler_view_destroy.is_some()
|
||||
&& c.set_constant_buffer.is_some()
|
||||
&& c.set_global_binding.is_some()
|
||||
&& c.set_sampler_views.is_some()
|
||||
&& c.set_shader_images.is_some()
|
||||
&& c.texture_map.is_some()
|
||||
&& c.texture_subdata.is_some()
|
||||
&& c.texture_unmap.is_some()
|
||||
fn has_required_cbs(context: &pipe_context) -> bool {
|
||||
// Use '&' to evaluate all features and to not stop
|
||||
// on first missing one to list all missing features.
|
||||
has_required_feature!(context, destroy)
|
||||
& has_required_feature!(context, bind_compute_state)
|
||||
& has_required_feature!(context, bind_sampler_states)
|
||||
& has_required_feature!(context, buffer_map)
|
||||
& has_required_feature!(context, buffer_subdata)
|
||||
& has_required_feature!(context, buffer_unmap)
|
||||
& has_required_feature!(context, clear_buffer)
|
||||
& has_required_feature!(context, clear_texture)
|
||||
& has_required_feature!(context, create_compute_state)
|
||||
& has_required_feature!(context, delete_compute_state)
|
||||
& has_required_feature!(context, delete_sampler_state)
|
||||
& has_required_feature!(context, flush)
|
||||
& has_required_feature!(context, launch_grid)
|
||||
& has_required_feature!(context, memory_barrier)
|
||||
& has_required_feature!(context, resource_copy_region)
|
||||
& has_required_feature!(context, sampler_view_destroy)
|
||||
& has_required_feature!(context, set_constant_buffer)
|
||||
& has_required_feature!(context, set_global_binding)
|
||||
& has_required_feature!(context, set_sampler_views)
|
||||
& has_required_feature!(context, set_shader_images)
|
||||
& has_required_feature!(context, texture_map)
|
||||
& has_required_feature!(context, texture_subdata)
|
||||
& has_required_feature!(context, texture_unmap)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ use crate::pipe::resource::*;
|
|||
use crate::util::disk_cache::*;
|
||||
|
||||
use mesa_rust_gen::*;
|
||||
use mesa_rust_util::has_required_feature;
|
||||
use mesa_rust_util::string::*;
|
||||
|
||||
use std::convert::TryInto;
|
||||
|
@ -326,16 +327,18 @@ impl Drop for PipeScreen {
|
|||
}
|
||||
|
||||
fn has_required_cbs(screen: *mut pipe_screen) -> bool {
|
||||
let s = unsafe { *screen };
|
||||
s.context_create.is_some()
|
||||
&& s.destroy.is_some()
|
||||
&& s.fence_finish.is_some()
|
||||
&& s.fence_reference.is_some()
|
||||
&& s.get_compiler_options.is_some()
|
||||
&& s.get_compute_param.is_some()
|
||||
&& s.get_name.is_some()
|
||||
&& s.get_param.is_some()
|
||||
&& s.get_shader_param.is_some()
|
||||
&& s.is_format_supported.is_some()
|
||||
&& s.resource_create.is_some()
|
||||
let screen = unsafe { *screen };
|
||||
// Use '&' to evaluate all features and to not stop
|
||||
// on first missing one to list all missing features.
|
||||
has_required_feature!(screen, context_create)
|
||||
& has_required_feature!(screen, destroy)
|
||||
& has_required_feature!(screen, fence_finish)
|
||||
& has_required_feature!(screen, fence_reference)
|
||||
& has_required_feature!(screen, get_compiler_options)
|
||||
& has_required_feature!(screen, get_compute_param)
|
||||
& has_required_feature!(screen, get_name)
|
||||
& has_required_feature!(screen, get_param)
|
||||
& has_required_feature!(screen, get_shader_param)
|
||||
& has_required_feature!(screen, is_format_supported)
|
||||
& has_required_feature!(screen, resource_create)
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ libmesa_rust_util_files = files(
|
|||
'util/lib.rs',
|
||||
'util/assert.rs',
|
||||
'util/bitset.rs',
|
||||
'util/feature.rs',
|
||||
'util/properties.rs',
|
||||
'util/ptr.rs',
|
||||
'util/string.rs',
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#[macro_export]
|
||||
macro_rules! has_required_feature {
|
||||
($object:ident, $feature:ident) => {{
|
||||
let has_feature = $object.$feature.is_some();
|
||||
if !has_feature {
|
||||
println!(
|
||||
"Missing {} feature {}",
|
||||
stringify!($object),
|
||||
stringify!($feature)
|
||||
);
|
||||
}
|
||||
has_feature
|
||||
}};
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
pub mod assert;
|
||||
pub mod bitset;
|
||||
pub mod feature;
|
||||
pub mod math;
|
||||
pub mod properties;
|
||||
pub mod ptr;
|
||||
|
|
Loading…
Reference in New Issue