wgpu icon indicating copy to clipboard operation
wgpu copied to clipboard

NetBSD support

Open 0323pin opened this issue 1 month ago • 9 comments

Hi,

Background: https://github.com/bevyengine/bevy/discussions/21840 Additional information: NetBSD doesn't support Vulkan.

I've added target_os = "netbsd" where it was appropriated and executed the tests; halmark, raw-gles, ray-traced-triangle, hello_compute, hello_window and custom_backend.

raw-gles and hello_window worked (attached)

Image Image

halmark and ray-traced-triangle want Vulkan; hello_compute shows Mesa version information and the crashes and custom_backend does nothing.

Any hints on what to do next? Are two test enough for a pull-request adding NetBSD support?

0323pin avatar Nov 17 '25 12:11 0323pin

When you say you executed the tests, then did you actually run the tests as described in detail here? Doesn't sound like it ;) A pull request adding NetBSD should also make sure the CI is testing that target, otherwise it will inevitably break again.

Not all features are supported on OpenGL, so raytracing not working is expected. Whether compute shaders are supported depends on the OpenGL driver.

Wumpf avatar Nov 17 '25 15:11 Wumpf

@Wumpf I'll do it again according to the linked docs and report back, thanks.

I'll look at the CI tests if the outcome of the above is OK.

0323pin avatar Nov 17 '25 20:11 0323pin

@Wumpf Thought I had sometime to run the tests today ~~but, I'm getting:~~

~> cargo xtask test 
   Compiling wgpu-info v27.0.0 (/home/pin/Git/wgpu/wgpu-info)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 24s
     Running `target/debug/wgpu-info --json -o .gpuconfig`
Error: Failed to run wgpu-info to generate .gpuconfig

Caused by:
    command was terminated by a signal `cargo run --bin wgpu-info -- --json -o .gpuconfig`: 11

~~Any further hints?~~

EDIT: My bad ... forget about this, my mistake. Running now.

0323pin avatar Nov 20 '25 09:11 0323pin

@Wumpf Is this good enough for a platform that doesn't support Vulkan?

Regarding the CI, I've tried to add NetBSD equivalent support to the existing OpenBSD support. I don't see OpenBSD in wgpu/.github/workflows/ci.yml, only FreeBSD.

 Nextest run ID 0b3329df-0093-44a1-b74d-538f5b12a080 with nextest profile: default
    Starting 459 tests across 33 binaries
        PASS [   0.046s] naga arena::tests::append_non_unique
        PASS [   0.050s] naga arena::tests::append_unique
        PASS [   0.043s] naga arena::tests::fetch_or_append_unique
        PASS [   0.046s] naga arena::tests::fetch_or_append_non_unique
        PASS [   0.044s] naga back::pipeline_constants::test_map_value_to_literal
        PASS [   0.056s] naga back::msl::test_error_size
        PASS [   0.045s] naga back::spv::layout::test_logical_layout_in_words
        PASS [   0.040s] naga back::spv::layout::test_physical_layout_in_words
        PASS [   0.041s] naga back::spv::writer::test_write_physical_layout
        PASS [   0.040s] naga compact::array_length_expression
        PASS [   0.041s] naga compact::array_length_override_mutual
        PASS [   0.058s] naga compact::array_length_override
        PASS [   0.057s] naga compact::global_expression_override
        PASS [   0.057s] naga compact::local_expression_override
        PASS [   0.365s] player::player test_api
        PASS [   0.046s] naga compact::type_expression_interdependence
        PASS [   0.052s] naga compact::unnamed_constant_type
        PASS [   0.046s] naga compact::unnamed_override_type
        PASS [   0.039s] naga error::test_replace_control_chars
        PASS [   0.043s] naga front::glsl::parser_tests::control_flow
        PASS [   0.074s] naga front::glsl::lex::tests::lex_tokens
        PASS [   0.097s] naga front::glsl::parser_tests::constants
        PASS [   0.055s] naga front::glsl::parser_tests::declarations
        PASS [   0.054s] naga front::glsl::parser_tests::expressions
        PASS [   0.045s] naga front::glsl::parser_tests::function_overloading
        PASS [   0.049s] naga front::glsl::parser_tests::implicit_conversions
        PASS [   0.066s] naga front::glsl::parser_tests::functions
        PASS [   0.044s] naga front::glsl::parser_tests::swizzles
        PASS [   0.057s] naga front::glsl::parser_tests::structs
        PASS [   0.069s] naga front::glsl::parser_tests::textures
        PASS [   0.062s] naga front::spv::test::parse
        PASS [   0.075s] naga front::glsl::parser_tests::version
        PASS [   0.042s] naga front::wgsl::parse::directive::language_extension::test_manual_variants_array_is_correct
        PASS [   0.050s] naga front::wgsl::parse::directive::test::directive_after_global_decl
        PASS [   0.042s] naga front::wgsl::parse::lexer::double_floats
        PASS [   0.054s] naga front::wgsl::parse::lexer::test_comments
        PASS [   0.045s] naga front::wgsl::parse::lexer::test_doc_comment_long_character
        PASS [   0.047s] naga front::wgsl::parse::lexer::test_doc_comment_nested
        PASS [   0.051s] naga front::wgsl::parse::lexer::test_doc_comments
        PASS [   0.037s] naga front::wgsl::parse::lexer::test_doc_comments_module
        PASS [   0.055s] naga front::wgsl::parse::lexer::test_numbers
        PASS [   0.036s] naga front::wgsl::parse::lexer::test_variable_decl
        PASS [   0.066s] naga front::wgsl::parse::lexer::test_tokens
        PASS [   0.087s] naga front::wgsl::tests::diagnostic_filter::attribute_conflict::unknown_rules
        PASS [   0.103s] naga front::wgsl::tests::binary_expression_mixed_scalar_and_vector_operands
        PASS [   0.114s] naga front::wgsl::tests::diagnostic_filter::attribute_conflict::user_rules
        PASS [   0.061s] naga front::wgsl::tests::diagnostic_filter::directive_conflict::unknown_rules
        PASS [   0.059s] naga front::wgsl::tests::diagnostic_filter::directive_conflict::user_rules
        PASS [   0.039s] naga front::wgsl::tests::diagnostic_filter::intended_global_directive
        PASS [   0.055s] naga front::wgsl::tests::diagnostic_filter::parse_sites_not_yet_supported::user_rules
        PASS [   0.084s] naga front::wgsl::tests::diagnostic_filter::parse_sites_not_yet_supported::unknown_rules
        PASS [   0.074s] naga front::wgsl::tests::parse_alias
        PASS [   0.043s] naga front::wgsl::tests::parse_array_length
        PASS [   0.053s] naga front::wgsl::tests::parse_assignment_statements
        PASS [   0.056s] naga front::wgsl::tests::parse_expressions
        PASS [   0.062s] naga front::wgsl::tests::parse_comment
        PASS [   0.042s] naga front::wgsl::tests::parse_if
        PASS [   0.050s] naga front::wgsl::tests::parse_missing_workgroup_size
        PASS [   0.061s] naga front::wgsl::tests::parse_loop
        PASS [   0.048s] naga front::wgsl::tests::parse_parentheses_if
        PASS [   0.047s] naga front::wgsl::tests::parse_pointers
        PASS [   0.060s] naga front::wgsl::tests::parse_postfix
        PASS [   0.083s] naga front::wgsl::tests::parse_parentheses_switch
        PASS [   0.046s] naga front::wgsl::tests::parse_repeated_attributes
        PASS [   0.046s] naga front::wgsl::tests::parse_standard_fun
        PASS [   0.052s] naga front::wgsl::tests::parse_statement
        PASS [   0.045s] naga front::wgsl::tests::parse_storage_buffers
        PASS [   0.045s] naga front::wgsl::tests::parse_struct
        PASS [   0.046s] naga front::wgsl::tests::parse_switch
        PASS [   0.061s] naga front::wgsl::tests::parse_struct_instantiation
        PASS [   0.041s] naga front::wgsl::tests::parse_switch_default_in_case
        PASS [   0.051s] naga front::wgsl::tests::parse_switch_optional_colon_in_case
        PASS [   0.054s] naga front::wgsl::tests::parse_texture_load
        PASS [   0.045s] naga front::wgsl::tests::parse_texture_load_store_expecting_four_args
        PASS [   0.050s] naga front::wgsl::tests::parse_texture_query
        PASS [   0.053s] naga front::wgsl::tests::parse_texture_store
        PASS [   0.056s] naga front::wgsl::tests::parse_type_cast
        PASS [   0.044s] naga front::wgsl::tests::parse_type_coercion
        PASS [   0.047s] naga front::wgsl::tests::parse_types
        PASS [   0.053s] naga non_max_u32::size
        PASS [   0.043s] naga proc::constant_evaluator::first_leading_bit_smoke
        PASS [   0.098s] naga front::wgsl::tests::parse_type_inference
        PASS [   0.044s] naga proc::constant_evaluator::tests::access
        PASS [   0.076s] naga proc::constant_evaluator::first_trailing_bit_smoke
        PASS [   0.073s] naga proc::constant_evaluator::tests::cast
        PASS [   0.046s] naga proc::constant_evaluator::tests::compose_of_constants
        PASS [   0.049s] naga proc::constant_evaluator::tests::splat_of_constant
        PASS [   0.042s] naga proc::constant_evaluator::tests::unary_op
        PASS [   0.066s] naga proc::constant_evaluator::tests::splat_of_zero_value
        PASS [   0.048s] naga proc::namer::test
        PASS [   0.049s] naga proc::overloads::one_bits_iter::all
        PASS [   0.049s] naga proc::overloads::one_bits_iter::empty
        PASS [   0.045s] naga proc::overloads::one_bits_iter::first
        PASS [   0.046s] naga proc::overloads::one_bits_iter::in_order
        PASS [   0.062s] naga proc::overloads::one_bits_iter::last
        PASS [   0.047s] naga proc::overloads::regular::test::binary_vec_or_scalar_numeric_scalar
        PASS [   0.045s] naga proc::overloads::regular::test::binary_vec_or_scalar_numeric_vector
        PASS [   0.055s] naga proc::overloads::regular::test::binary_vec_or_scalar_numeric_vector_abstract
        PASS [   0.043s] naga proc::overloads::regular::test::unary_vec_or_scalar_numeric_matrix
        PASS [   0.051s] naga proc::overloads::regular::test::unary_vec_or_scalar_numeric_scalar
        PASS [   0.049s] naga proc::test_matrix_size
        PASS [   0.068s] naga proc::overloads::regular::test::unary_vec_or_scalar_numeric_vector
        PASS [   0.053s] naga proc::typifier::test_error_size
        PASS [   0.040s] naga valid::analyzer::uniform_control_flow
        PASS [   0.048s] naga span::span_location
        PASS [   0.048s] naga valid::expression::f64_const_literals
        PASS [   0.042s] naga valid::handles::array_size_deps
        PASS [   0.052s] naga valid::expression::f64_runtime_literals
        PASS [   0.048s] naga valid::handles::array_size_override
        PASS [   0.045s] naga valid::handles::constant_deps
        PASS [   0.043s] naga valid::handles::override_init_deps
        FAIL [   0.101s] naga::naga snapshots::convert_snapshots_spv
  stdout ───

    running 1 test
    Assembling '8151-barrier-reorder.spvasm'
    test snapshots::convert_snapshots_spv ... FAILED

    failures:

    failures:
        snapshots::convert_snapshots_spv

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 173 filtered out; finished in 0.05s

  stderr ───

    thread 'snapshots::convert_snapshots_spv' (21142) panicked at naga/tests/naga/snapshots.rs:427:14:
    Failed to execute spirv-as. It can be installed by installing the Vulkan SDK and adding it to your path.: Os { code: 2, kind: NotFound, message: "No such file or directory" }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        PASS [   0.773s] naga::naga example_wgsl::parse_example_wgsl
        PASS [   0.071s] naga::naga spirv_capabilities::barycentrics
        PASS [   0.060s] naga::naga spirv_capabilities::cube_array
        PASS [   0.058s] naga::naga spirv_capabilities::f16_io_capabilities
        PASS [   0.073s] naga::naga spirv_capabilities::f16_io_polyfill_codegen
        PASS [   0.065s] naga::naga spirv_capabilities::float16
        PASS [   0.060s] naga::naga spirv_capabilities::float64
        PASS [   0.064s] naga::naga spirv_capabilities::geometry
        PASS [   0.066s] naga::naga spirv_capabilities::image_queries
        PASS [   0.061s] naga::naga spirv_capabilities::int64
        PASS [   0.061s] naga::naga spirv_capabilities::sample_rate_shading
        PASS [   0.060s] naga::naga spirv_capabilities::sampler1d
        PASS [   0.056s] naga::naga spirv_capabilities::storage1d
        PASS [   0.071s] naga::naga spirv_capabilities::storage_image_formats
        PASS [   0.068s] naga::naga validation::arity_check
        PASS [   0.076s] naga::naga validation::bad_texture_dimensions_level
        PASS [   0.056s] naga::naga validation::binding_arrays_cannot_hold_arrays
        PASS [   0.052s] naga::naga validation::binding_arrays_cannot_hold_scalars
        PASS [   0.056s] naga::naga validation::binding_arrays_hold_structs
        PASS [   0.045s] naga::naga validation::builtin_cross_product_args
        PASS [   0.059s] naga::naga validation::emit_workgroup_uniform_load_result
        PASS [   0.053s] naga::naga validation::global_use_array
        PASS [   0.047s] naga::naga validation::global_use_array_index
        PASS [   0.057s] naga::naga validation::global_use_phony
        PASS [   0.053s] naga::naga validation::global_use_scalar
        PASS [   0.069s] naga::naga validation::global_use_unreachable
        PASS [   0.061s] naga::naga validation::incompatible_interpolation_and_sampling_types
        PASS [   0.062s] naga::naga validation::no_flat_first_in_glsl
        PASS [   0.068s] naga::naga validation::override_in_array_size
        PASS [   0.065s] naga::naga validation::override_in_entrypoint
        PASS [   0.058s] naga::naga validation::override_in_function
        PASS [   0.055s] naga::naga validation::override_in_global_init
        PASS [   0.061s] naga::naga validation::override_in_workgroup_size
        PASS [   0.058s] naga::naga validation::override_in_workgroup_size_nested
        PASS [   0.059s] naga::naga validation::override_with_multiple_globals
        PASS [   0.058s] naga::naga validation::populate_atomic_result
        PASS [   2.927s] naga::naga snapshots::convert_snapshots_glsl
        PASS [   0.055s] naga::naga validation::populate_call_result
        PASS [   0.067s] naga::naga validation::validation_error_messages
        PASS [   0.054s] naga::naga wgsl_errors::assign_to_expr
        PASS [   0.070s] naga::naga wgsl_errors::assign_to_let
        PASS [   0.063s] naga::naga wgsl_errors::bad_for_initializer
        PASS [   0.056s] naga::naga wgsl_errors::bad_texture
        PASS [   0.068s] naga::naga wgsl_errors::bad_texture_sample_type
        PASS [   0.062s] naga::naga wgsl_errors::bad_type_cast
        PASS [   0.052s] naga::naga wgsl_errors::binary_statement
        PASS [   0.057s] naga::naga wgsl_errors::binding_array_local
        PASS [   0.053s] naga::naga wgsl_errors::binding_array_private
        PASS [   0.062s] naga::naga wgsl_errors::break_if_bad_condition
        PASS [   0.054s] naga::naga wgsl_errors::compaction_preserves_spans
        PASS [   0.051s] naga::naga wgsl_errors::const_assert_failed
        PASS [   0.050s] naga::naga wgsl_errors::const_assert_must_be_bool
        PASS [   0.423s] naga::naga wgsl_errors::binding_array_non_struct
        PASS [   0.148s] naga::naga wgsl_errors::const_assert_must_be_const
        PASS [   0.059s] naga::naga wgsl_errors::const_eval_value_errors
        PASS [   0.068s] naga::naga wgsl_errors::constructor_type_error_span
        PASS [   0.131s] naga::naga wgsl_errors::constructor_parameter_type_mismatch
        PASS [   0.061s] naga::naga wgsl_errors::cross_vec2
        PASS [   0.050s] naga::naga wgsl_errors::cross_vec4
        PASS [   0.051s] naga::naga wgsl_errors::cyclic_function
        PASS [   0.052s] naga::naga wgsl_errors::discard_in_wrong_stage
        PASS [   0.057s] naga::naga wgsl_errors::float16_capability_and_enable
        PASS [   0.060s] naga::naga wgsl_errors::float16_in_atomic
        PASS [   0.055s] naga::naga wgsl_errors::float16_in_push_constant
        PASS [   0.054s] naga::naga wgsl_errors::function_must_use_repeated
        PASS [   0.110s] naga::naga wgsl_errors::function_must_return_value
        PASS [   0.061s] naga::naga wgsl_errors::function_must_use_returns_void
        PASS [   0.057s] naga::naga wgsl_errors::function_must_use_unused
        PASS [   0.053s] naga::naga wgsl_errors::function_param_redefinition_as_local
        PASS [   0.049s] naga::naga wgsl_errors::function_param_redefinition_as_param
        PASS [   0.061s] naga::naga wgsl_errors::function_returns_void
        PASS [   0.052s] naga::naga wgsl_errors::function_without_identifier
        PASS [   0.050s] naga::naga wgsl_errors::global_initialization_type_mismatch
        PASS [   0.064s] naga::naga wgsl_errors::host_shareable_types
        PASS [   0.074s] naga::naga wgsl_errors::inconsistent_binding
        PASS [   0.052s] naga::naga wgsl_errors::inconsistent_type
        PASS [   0.053s] naga::naga wgsl_errors::invalid_access
        PASS [   0.066s] naga::naga wgsl_errors::invalid_arrays
        PASS [   0.163s] naga::naga wgsl_errors::int64_capability
        PASS [   0.067s] naga::naga wgsl_errors::invalid_blend_src
        PASS [   0.076s] naga::naga wgsl_errors::invalid_clip_distances
        PASS [   0.055s] naga::naga wgsl_errors::invalid_float
        PASS [   0.051s] naga::naga wgsl_errors::invalid_integer
        PASS [   0.067s] naga::naga wgsl_errors::invalid_functions
        PASS [   0.050s] naga::naga wgsl_errors::invalid_local_vars
        PASS [   0.056s] naga::naga wgsl_errors::invalid_return_type
        PASS [   0.054s] naga::naga wgsl_errors::invalid_runtime_sized_arrays
        PASS [   0.067s] naga::naga wgsl_errors::invalid_structs
        PASS [   0.057s] naga::naga wgsl_errors::invalid_texture_sample_type
        PASS [   0.072s] naga::naga wgsl_errors::io_shareable_types
        PASS [   0.056s] naga::naga wgsl_errors::issue7165
        PASS [   0.126s] naga::naga wgsl_errors::limit_braced_statement_nesting
        PASS [   0.052s] naga::naga wgsl_errors::local_const_from_global_var
        PASS [   0.227s] naga::naga wgsl_errors::let_type_mismatch
        PASS [   0.056s] naga::naga wgsl_errors::local_const_from_let
        PASS [   0.071s] naga::naga wgsl_errors::local_const_from_override
        PASS [   0.093s] naga::naga wgsl_errors::local_const_from_var
        PASS [   0.054s] naga::naga wgsl_errors::local_const_wrong_type
        PASS [   0.072s] naga::naga wgsl_errors::local_var_missing_type
        PASS [   0.065s] naga::naga wgsl_errors::matrix_constructor_inferred
        PASS [   0.070s] naga::naga wgsl_errors::matrix_vector_pointers
        PASS [   0.059s] naga::naga wgsl_errors::matrix_with_bad_type
        PASS [   0.062s] naga::naga wgsl_errors::max_type_size_array_in_struct
        PASS [   0.052s] naga::naga wgsl_errors::max_type_size_array_of_structs
        PASS [   0.078s] naga::naga wgsl_errors::max_type_size_array_of_arrays
        PASS [   0.086s] naga::naga wgsl_errors::max_type_size_override_array
        PASS [   0.117s] naga::naga wgsl_errors::max_type_size_large_array
        PASS [   0.053s] naga::naga wgsl_errors::misplaced_break_if
        PASS [   0.170s] naga::naga wgsl_errors::max_type_size_two_arrays_in_struct
        PASS [   0.122s] naga::naga wgsl_errors::missing_bindings
        PASS [   0.055s] naga::naga wgsl_errors::missing_bindings2
        PASS [   0.059s] naga::naga wgsl_errors::missing_default_case
        PASS [   0.057s] naga::naga wgsl_errors::module_scope_identifier_redefinition
        PASS [   0.069s] naga::naga wgsl_errors::more_inconsistent_type
        PASS [   0.071s] naga::naga wgsl_errors::multiple_enables_valid
        PASS [   0.059s] naga::naga wgsl_errors::only_one_swizzle_type
        PASS [   0.057s] naga::naga wgsl_errors::ray_query_enable_extension
        PASS [   0.059s] naga::naga wgsl_errors::ray_query_vertex_return_enable_extension
        PASS [   0.183s] naga::naga wgsl_errors::pointer_type_equivalence
        PASS [   0.054s] naga::naga wgsl_errors::recognized_but_unimplemented_enable_extension
        PASS [   0.058s] naga::naga wgsl_errors::recursive_function
        PASS [   0.054s] naga::naga wgsl_errors::reject_utf8_bom
        PASS [   0.054s] naga::naga wgsl_errors::reserved_identifier_prefix
        PASS [   0.062s] naga::naga wgsl_errors::reserved_keyword
        PASS [   0.055s] naga::naga wgsl_errors::source_with_control_char
        PASS [   0.061s] naga::naga wgsl_errors::struct_member_align_too_low
        PASS [   0.055s] naga::naga wgsl_errors::struct_member_must_use
        PASS [   0.102s] naga::naga wgsl_errors::struct_member_non_po2_align
        PASS [   0.334s] naga::naga wgsl_errors::select
        PASS [   0.103s] naga::naga wgsl_errors::struct_member_redefinition
        PASS [   0.066s] naga::naga wgsl_errors::struct_member_size_too_low
        PASS [   0.083s] naga::naga wgsl_errors::struct_names_in_argument_errors
        PASS [   0.069s] naga::naga wgsl_errors::struct_names_in_conversion_errors
        PASS [   0.060s] naga::naga wgsl_errors::struct_names_in_init_errors
        PASS [   0.065s] naga::naga wgsl_errors::struct_redefinition
        PASS [   0.047s] naga::naga wgsl_errors::struct_type_mismatch_in_argument
        PASS [   0.078s] naga::naga wgsl_errors::struct_type_mismatch_in_assignment
        PASS [   0.218s] naga::naga wgsl_errors::struct_type_mismatch_in_global_const
        PASS [   0.176s] naga::naga wgsl_errors::struct_type_mismatch_in_global_var
        PASS [   0.188s] naga::naga wgsl_errors::struct_type_mismatch_in_let_decl
        PASS [   0.183s] naga::naga wgsl_errors::struct_type_mismatch_in_return_value
        PASS [   0.052s] naga::naga wgsl_errors::subgroup_capability
        PASS [   0.166s] naga::naga wgsl_errors::subgroup_invalid_broadcast
        PASS [   0.118s] naga::naga wgsl_errors::switch_invalid_type
        PASS [   0.054s] naga::naga wgsl_errors::switch_non_const_case
        PASS [   0.068s] naga::naga wgsl_errors::switch_signed_unsigned_mismatch
        PASS [   0.067s] naga::naga wgsl_errors::too_many_arguments
        PASS [   0.084s] naga::naga wgsl_errors::swizzle_assignment
        PASS [   0.057s] naga::naga wgsl_errors::too_many_unclosed_loops
        PASS [   0.057s] naga::naga wgsl_errors::too_many_arguments_2
        PASS [   0.054s] naga::naga wgsl_errors::type_not_constructible
        PASS [   0.060s] naga::naga wgsl_errors::type_not_inferable
        PASS [   0.049s] naga::naga wgsl_errors::unknown_access
        PASS [   0.061s] naga::naga wgsl_errors::unexpected_constructor_parameters
        PASS [   0.080s] naga::naga wgsl_errors::unknown_attribute
        PASS [   0.074s] naga::naga wgsl_errors::unknown_built_in
        PASS [   0.049s] naga::naga wgsl_errors::unknown_conservative_depth
        PASS [   0.055s] naga::naga wgsl_errors::unknown_ident
        PASS [   0.047s] naga::naga wgsl_errors::unknown_identifier
        PASS [   0.053s] naga::naga wgsl_errors::unknown_local_function
        PASS [   0.042s] naga::naga wgsl_errors::unknown_storage_class
        PASS [   0.058s] naga::naga wgsl_errors::unknown_storage_format
        PASS [   0.101s] naga::naga wgsl_errors::unknown_scalar_type
        PASS [   0.126s] naga::naga wgsl_errors::unknown_type
        PASS [   0.050s] naga::naga wgsl_errors::var_init
        PASS [   0.074s] naga::naga wgsl_errors::valid_access
        PASS [   0.052s] naga::naga wgsl_errors::vector_constructor_incorrect_component_count
        PASS [   0.108s] naga::naga wgsl_errors::var_type_mismatch
        PASS [   0.047s] naga::naga wgsl_errors::very_negative_integers
        PASS [   0.049s] naga::naga wgsl_errors::wrong_access_mode
        PASS [   0.047s] naga::naga wgsl_errors::wrong_argument_count
        PASS [   0.033s] wgpu api::buffer::tests::check_buffer_bounds_panics_for_end_over_size
        PASS [   0.035s] wgpu api::buffer::tests::check_buffer_bounds_panics_for_end_wraparound
        PASS [   0.031s] wgpu api::buffer::tests::check_buffer_bounds_works_for_end_in_range
        PASS [   0.034s] wgpu api::buffer::tests::range_overlapping
        PASS [   0.466s] naga::naga wgsl_errors::vector_logical_ops
        PASS [   0.216s] wgpu api::buffer::tests::range_to_offset_size_panics_for_empty_range
        PASS [   0.074s] wgpu api::buffer::tests::range_to_offset_size_panics_for_unbounded_empty_range
        PASS [   0.032s] wgpu macros::make_spirv_be_pass
        PASS [   0.035s] wgpu api::buffer::tests::range_to_offset_size_works
        PASS [   0.030s] wgpu macros::make_spirv_le_pass
        PASS [   0.036s] wgpu macros::test_vertex_attr_array
        PASS [   0.035s] wgpu util::make_spirv_be_fail
        PASS [   0.030s] wgpu util::make_spirv_empty
        PASS [   0.036s] wgpu util::make_spirv_le_fail
        FAIL [   0.371s] wgpu-benchmark::bench/wgpu-benchmark Computepass Encoding
  stdout ───
    Running benchmark: Computepass Encoding
  stderr ───

    thread 'main' (22891) panicked at benches/benches/wgpu-benchmark/main.rs:38:10:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        FAIL [   0.382s] wgpu-benchmark::bench/wgpu-benchmark Device::create_bind_group
  stdout ───
    Running benchmark: Device::create_bind_group
  stderr ───

    thread 'main' (23344) panicked at benches/benches/wgpu-benchmark/main.rs:38:10:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        FAIL [   0.344s] wgpu-benchmark::bench/wgpu-benchmark Device::create_buffer
  stdout ───
    Running benchmark: Device::create_buffer
  stderr ───

    thread 'main' (19311) panicked at benches/benches/wgpu-benchmark/main.rs:38:10:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        FAIL [   0.350s] wgpu-benchmark::bench/wgpu-benchmark Renderpass Encoding
  stdout ───
    Running benchmark: Renderpass Encoding
  stderr ───

    thread 'main' (25723) panicked at benches/benches/wgpu-benchmark/main.rs:38:10:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        PASS [   1.617s] wgpu-benchmark::bench/wgpu-benchmark naga::compact
        PASS [   2.714s] wgpu-benchmark::bench/wgpu-benchmark naga::back
        PASS [  13.784s] naga::naga snapshots::convert_snapshots_wgsl
        PASS [   0.034s] wgpu-core id::test_id
        PASS [   0.039s] wgpu-core identity::test_epoch_end_of_life
        PASS [   0.034s] wgpu-core init_tracker::test::check_for_drained_tracker
        PASS [   0.160s] wgpu-core init_tracker::test::check_for_newly_created_tracker
        PASS [   0.035s] wgpu-core init_tracker::test::check_for_partially_filled_tracker
        PASS [   0.055s] wgpu-core init_tracker::test::discard_adds_range_on_cleared
        PASS [   0.028s] wgpu-core init_tracker::test::discard_does_nothing_on_uncleared
        PASS [   0.031s] wgpu-core init_tracker::test::discard_extends_ranges
        PASS [   0.460s] wgpu-core init_tracker::test::discard_merges_ranges
        PASS [   3.394s] wgpu-benchmark::bench/wgpu-benchmark naga::front
        PASS [   0.032s] wgpu-core init_tracker::test::drain_already_drained
        PASS [   0.035s] wgpu-core init_tracker::test::drain_never_returns_ranges_twice_for_same_range
        PASS [   0.032s] wgpu-core init_tracker::test::drain_splits_ranges_correctly
        PASS [   0.089s] wgpu-core instance::downlevel_default_limits_less_than_default_limits
        PASS [   0.066s] wgpu-core lock::ranked::forbidden_skip
        PASS [   0.152s] wgpu-core lock::ranked::forbidden_unrelated
        PASS [   0.060s] wgpu-core lock::ranked::permitted
        PASS [   0.036s] wgpu-core lock::ranked::stack_like
        PASS [   0.330s] wgpu-core lock::ranked::non_stack_like
        PASS [   0.080s] wgpu-core pipeline_cache::tests::invalid_magic
        PASS [   0.224s] wgpu-core pipeline_cache::tests::not_no_data
        PASS [   0.212s] wgpu-core pipeline_cache::tests::too_little_data
        PASS [   0.041s] wgpu-core pipeline_cache::tests::valid_data
        PASS [   0.042s] wgpu-core pipeline_cache::tests::too_much_data
        PASS [   0.035s] wgpu-core pipeline_cache::tests::written_header
        PASS [   0.069s] wgpu-core pipeline_cache::tests::wrong_abi
        PASS [   0.043s] wgpu-core pipeline_cache::tests::wrong_adapter
        PASS [   0.040s] wgpu-core pipeline_cache::tests::wrong_backend
        PASS [   0.048s] wgpu-core pipeline_cache::tests::wrong_hash
        PASS [   0.037s] wgpu-core pipeline_cache::tests::wrong_validation
        PASS [   0.247s] wgpu-core pipeline_cache::tests::wrong_version
        PASS [   0.295s] wgpu-core pool::tests::concurrent_creation_2_threads
        PASS [   0.293s] wgpu-core pool::tests::create_while_drop_2_threads
        PASS [   4.070s] wgpu-benchmark::bench/wgpu-benchmark naga::valid
        PASS [   0.044s] wgpu-core pool::tests::deduplication
        PASS [   0.034s] wgpu-core tests::test_gcd
        PASS [   0.035s] wgpu-core timestamp_normalization::tests::compute_timestamp_period
        PASS [   0.092s] wgpu-core registry::tests::simultaneous_registration
        PASS [   0.031s] wgpu-core track::range::test::coalesce
        PASS [   0.036s] wgpu-core track::range::test::isolate
        PASS [   0.046s] wgpu-core track::range::test::sane_empty
        PASS [   0.040s] wgpu-core track::range::test::sane_good
        PASS [   0.123s] wgpu-core tests::test_lcd
        PASS [   0.032s] wgpu-hal gles::adapter::tests::test_version_parse
        PASS [   0.037s] wgpu-hal test_default_limits
        PASS [   0.125s] wgpu-core track::range::test::sane_intersect
        PASS [   0.085s] wgpu-hal vulkan::command::check_dst_image_layout
        PASS [   0.075s] wgpu-info::bin/wgpu-info texture::test_compute_render_extent
        PASS [   0.038s] wgpu-info::bin/wgpu-info texture::test_uniqueness_in_texture_format_list
        PASS [   0.051s] wgpu-test expectations::test::matches_multiple_errors
        PASS [   0.054s] wgpu-test expectations::test::ignore_flaky
        PASS [   0.053s] wgpu-test expectations::test::multi_reason_error
        PASS [   0.039s] wgpu-test expectations::test::simple_match
        PASS [   0.380s] wgpu-test expectations::test::substring_match
        PASS [   2.168s] wgpu-test::wgpu-dependency apple_with_angle_depends_on_glow_and_renderdoc_sys
        PASS [   2.875s] wgpu-test::wgpu-dependency apple_with_gles_does_not_depend_on_glow
        PASS [   0.698s] wgpu-test::wgpu-dependency apple_with_vulkan_does_not_depend_on_ash
        PASS [   2.701s] wgpu-test::wgpu-dependency apple_with_no_features_does_not_depend_on_renderdoc_sys
        PASS [   5.685s] wgpu-test::wgpu-dependency emscripten_with_gles_depends_on_glow
        PASS [   5.552s] wgpu-test::wgpu-dependency emscripten_with_webgl_does_not_depend_on_glow
        PASS [   5.955s] wgpu-test::wgpu-dependency apple_with_vulkan_portability_depends_on_ash_and_renderdoc_sys
        PASS [   1.949s] wgpu-test::wgpu-dependency wasm32_with_only_custom_backend_does_not_depend_on_web_specifics
        PASS [   2.018s] wgpu-test::wgpu-dependency wasm32_with_webgl_backend_does_depend_on_web_specifics
        PASS [   0.651s] wgpu-test::wgpu-dependency wasm32_with_webgl_depends_on_glow
        PASS [   2.669s] wgpu-test::wgpu-dependency ppc32_does_depend_on_portable_atomic
        PASS [   1.560s] wgpu-test::wgpu-dependency wasm32_without_webgl_or_noop_does_not_depend_on_wgpu_core
        PASS [   1.658s] wgpu-test::wgpu-dependency wasm32_with_webgpu_backend_does_depend_on_web_specifics
        PASS [   2.208s] wgpu-test::wgpu-dependency wasm32_with_webgpu_and_wgsl_does_not_depend_on_naga
        PASS [   1.911s] wgpu-test::wgpu-dependency windows_with_no_features_does_not_depend_on_glow_windows_or_ash
        PASS [  12.555s] wgpu-test::wgpu-dependency windows_with_webgl_does_not_depend_on_glow
        PASS [  13.076s] wgpu-test::wgpu-dependency windows_with_no_features_depends_on_renderdoc_sys
        PASS [   0.104s] wgpu-test::wgpu-validation api::binding_arrays::dynamic_offset
        PASS [   0.087s] wgpu-test::wgpu-validation api::binding_arrays::uniform_buffer
        PASS [   0.136s] wgpu-test::wgpu-validation api::buffer::destroyed_buffer
        PASS [   0.202s] wgpu-test::wgpu-validation api::buffer_mapping::full_immutable_binding
        PASS [   0.149s] wgpu-test::wgpu-validation api::buffer_mapping::full_mut_binding
        PASS [   0.207s] wgpu-test::wgpu-validation api::buffer_mapping::not_mapped
        PASS [   0.106s] wgpu-test::wgpu-validation api::buffer_mapping::overlapping_mut_binding
        PASS [   0.212s] wgpu-test::wgpu-validation api::buffer_mapping::overlapping_ref_binding
        PASS [   0.139s] wgpu-test::wgpu-validation api::buffer_mapping::partially_mapped
        PASS [   0.112s] wgpu-test::wgpu-validation api::buffer_mapping::split_immutable_binding
        PASS [   0.178s] wgpu-test::wgpu-validation api::buffer_mapping::split_mut_binding
        PASS [   0.122s] wgpu-test::wgpu-validation api::buffer_mapping::unmap_while_visible
        PASS [   0.157s] wgpu-test::wgpu-validation api::buffer_slice::getters
        PASS [   0.094s] wgpu-test::wgpu-validation api::buffer_slice::into_buffer_binding
        PASS [   0.110s] wgpu-test::wgpu-validation api::buffer_slice::reslice_out_of_bounds
        PASS [   0.102s] wgpu-test::wgpu-validation api::buffer_slice::reslice_success
        PASS [   0.109s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_both_callbacks_fire_after_submit
        PASS [   0.104s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_deferred_map_runs_before_on_submitted_work_done
        PASS [   0.122s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_map_buffer_on_submit_defers_until_submit
        PASS [   0.119s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_map_buffer_on_submit_empty_range_panics_immediately
        PASS [   0.115s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_map_buffer_on_submit_out_of_bounds_panics_on_submit
        PASS [   0.119s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_map_buffer_on_submit_panics_if_already_mapped_on_submit
        PASS [   0.116s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_map_buffer_on_submit_panics_if_usage_invalid_on_submit
        PASS [   0.080s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_multiple_map_buffer_on_submit_callbacks_fire
        PASS [   0.120s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_multiple_on_submitted_callbacks_fire
        PASS [   0.285s] wgpu-test::wgpu-validation api::command_buffer_actions::encoder_on_submitted_work_done_defers_until_submit
        PASS [   0.111s] wgpu-test::wgpu-validation api::device::recursive_uncaptured_error
        PASS [  14.994s] wgpu-test::wgpu-dependency windows_with_webgpu_webgl_backend_does_not_depend_on_web_specifics
        PASS [   0.103s] wgpu-test::wgpu-validation api::encoding::as_hal
        PASS [   0.100s] wgpu-test::wgpu-validation api::encoding::encoding_error_contains_label_of_encoder
        PASS [   0.112s] wgpu-test::wgpu-validation api::encoding::mix_apis_hal_then_wgpu
        PASS [   0.114s] wgpu-test::wgpu-validation api::encoding::mix_apis_wgpu_then_hal
        PASS [   0.107s] wgpu-test::wgpu-validation api::experimental::request_experimental_features
        PASS [   0.045s] wgpu-test::wgpu-validation api::experimental::request_multiple_experimental_features_when_not_enabled
        PASS [   0.055s] wgpu-test::wgpu-validation api::experimental::request_experimental_features_when_not_enabled
        PASS [   0.104s] wgpu-test::wgpu-validation api::experimental::request_no_experimental_features
        PASS [   0.152s] wgpu-test::wgpu-validation api::external_texture::create_external_texture
        PASS [   0.099s] wgpu-test::wgpu-validation api::external_texture::destroyed_external_texture_plane
        PASS [   0.118s] wgpu-test::wgpu-validation api::external_texture::external_texture_binding
        PASS [   0.116s] wgpu-test::wgpu-validation api::external_texture::external_texture_binding_texture_view
        FAIL [   0.070s] wgpu-test::wgpu-validation api::instance::multi_instance::multi_instance
  stdout ───

    running 1 test
    test api::instance::multi_instance::multi_instance ... FAILED

    failures:

    failures:
        api::instance::multi_instance::multi_instance

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 61 filtered out; finished in 0.03s

  stderr ───

    thread 'api::instance::multi_instance::multi_instance' (480) panicked at tests/tests/wgpu-validation/api/instance.rs:13:18:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

        PASS [   0.042s] wgpu-test::wgpu-validation api::instance::request_adapter_error::no_compiled_support
        PASS [   0.102s] wgpu-test::wgpu-validation api::instance::request_adapter_error::no_backends_requested
        PASS [   0.060s] wgpu-test::wgpu-validation api::instance::request_adapter_error::noop_not_enabled
        PASS [   5.017s] wgpu-test::wgpu-dependency x86_64_does_not_depend_on_portable_atomic
        PASS [   0.115s] wgpu-test::wgpu-validation api::render_pipeline::reject_fragment_shader_output_over_max_color_attachments
        PASS [   0.116s] wgpu-test::wgpu-validation api::texture::copy_buffer_to_texture_forbidden_format_aspect
        PASS [   0.211s] wgpu-test::wgpu-validation api::texture::copy_buffer_to_texture_forbidden_format
        PASS [   0.166s] wgpu-test::wgpu-validation api::texture::destroyed_texture
        PASS [   0.166s] wgpu-test::wgpu-validation api::texture::copy_texture_to_buffer_forbidden_format_aspect
        PASS [   0.100s] wgpu-test::wgpu-validation api::texture::planar_texture_bad_size
        PASS [   0.091s] wgpu-test::wgpu-validation api::texture::planar_texture_bad_view_format
        PASS [   0.243s] wgpu-test::wgpu-validation api::texture::non_planar_texture_view_plane
        PASS [   0.087s] wgpu-test::wgpu-validation api::texture::planar_texture_render_attachment_unsupported
        PASS [   0.188s] wgpu-test::wgpu-validation api::texture::planar_texture_render_attachment
        PASS [   0.093s] wgpu-test::wgpu-validation api::texture::planar_texture_view_plane
        PASS [   0.651s] wgpu-test::wgpu-validation api::texture::copy_texture_to_buffer_forbidden_format
        PASS [   0.100s] wgpu-test::wgpu-validation api::texture::planar_texture_view_plane_out_of_bounds
        PASS [   0.112s] wgpu-test::wgpu-validation api::texture::transient_invalid_storeop
        PASS [   0.090s] wgpu-test::wgpu-validation noop::device_and_buffers
        PASS [   0.047s] wgpu-test::wgpu-validation noop::device_is_available_when_requested
        PASS [   0.050s] wgpu-test::wgpu-validation noop::device_is_not_available_by_default
        PASS [   0.029s] wgpu-types features::tests::check_features_bits
        PASS [   0.031s] wgpu-types features::tests::check_features_display
        PASS [   0.033s] wgpu-types features::tests::check_hex
        PASS [   0.035s] wgpu-types features::tests::create_features_from_parts
        PASS [   0.202s] wgpu-test::wgpu-validation util::staging_belt_random_test
        PASS [   0.036s] wgpu-types features::tests::experimental_features_part_of_experimental_mask
        PASS [   0.030s] wgpu-types test_physical_size
        PASS [   0.037s] wgpu-types test_max_mips
        PASS [   0.030s] wgpu-types texture_format_deserialize
        PASS [   0.031s] wgpu-types texture_format_serialize
        PASS [   0.033s] wgpu-types transfers::tests::linear_texture_data_1d_copy
        PASS [   0.035s] wgpu-types transfers::tests::linear_texture_data_2d_3d_compressed_copy
        PASS [   0.031s] wgpu-types transfers::tests::linear_texture_data_2d_3d_copy
        PASS [   0.034s] wgpu-xtask::bin/wgpu-xtask changelog::test_hunks_in_a_released_section::all_reject_and_not_reject_cases_at_once
        PASS [   0.036s] wgpu-xtask::bin/wgpu-xtask changelog::test_hunks_in_a_released_section::change_above_unreleased_not_rejected
        PASS [   0.036s] wgpu-xtask::bin/wgpu-xtask changelog::test_hunks_in_a_released_section::change_in_a_release_section_rejects
        PASS [   0.036s] wgpu-xtask::bin/wgpu-xtask changelog::test_hunks_in_a_released_section::change_in_unreleased_not_rejected
        PASS [   0.034s] wgpu-xtask::bin/wgpu-xtask changelog::test_hunks_in_a_released_section::rejection_ranges
        PASS [   0.034s] wgpu-xtask::bin/wgpu-xtask changelog::test_split_prefix_inclusive::it_works
        PASS [   0.055s] wgpu-xtask::bin/wgpu-xtask util::test_git_version_parsing
        PASS [   0.649s] wgpu-test::wgpu-validation api::texture::transient_invalid_usage
        PASS [ 147.726s] wgpu-test::wgpu-compile compile_fail
────────────
     Summary [ 147.752s] 459 tests run: 453 passed, 6 failed, 0 skipped
        FAIL [   0.101s] naga::naga snapshots::convert_snapshots_spv
        FAIL [   0.371s] wgpu-benchmark::bench/wgpu-benchmark Computepass Encoding
        FAIL [   0.382s] wgpu-benchmark::bench/wgpu-benchmark Device::create_bind_group
        FAIL [   0.344s] wgpu-benchmark::bench/wgpu-benchmark Device::create_buffer
        FAIL [   0.350s] wgpu-benchmark::bench/wgpu-benchmark Renderpass Encoding
        FAIL [   0.070s] wgpu-test::wgpu-validation api::instance::multi_instance::multi_instance
error: test run failed
Error: Tests failed

Caused by:
    command exited with non-zero code `cargo nextest run --benches --tests --all-features`: 100

0323pin avatar Nov 20 '25 09:11 0323pin

At least in theory none of the tests should be failing as they are automatically gated on the features available on each device. Benchmarks and the pretty new multi_instance are probably just missing some kind of feature restriction, haven't looked at the output. Had a brief look at multi_instance output and it looks kinda weird:

    thread 'api::instance::multi_instance::multi_instance' (480) panicked at tests/tests/wgpu-validation/api/instance.rs:13:18:
    called `Result::unwrap()` on an `Err` value: NotFound { active_backends: Backends(0x0), requested_backends: Backends(NOOP | VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU), supported_backends: Backends(NOOP), no_fallback_backends: Backends(0x0), no_adapter_backends: Backends(0x0), incompatible_surface_backends: Backends(0x0) }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Sound like only NOOP was supported? That would be a problem, we expect GL at least. But maybe that's just what happens when test requirements are misconfigured, worth a look

convert_snapshots_spv failed reporting that there's no Vulkan SDK, so we can probably ignore that.

All that said, unless you figure something out how we can run tests on CI for netbsd, we'd add netbsd only as "tier 2" platform on ci (just like freebsd), which implies compiling only.

I don't see OpenBSD in wgpu/.github/workflows/ci.yml, only FreeBSD.

platforms are oriented around Rust toolchains and it doesn't seem there is an active dedicated openbsd toolchain, see https://rust-lang.github.io/rustup-components-history/

Wumpf avatar Nov 21 '25 07:11 Wumpf

@Wumpf I get this one failing, as said, we don't have Vulkan

        FAIL [   0.101s] naga::naga snapshots::convert_snapshots_spv
  stdout ───

    running 1 test
    Assembling '8151-barrier-reorder.spvasm'
    test snapshots::convert_snapshots_spv ... FAILED

    failures:

    failures:
        snapshots::convert_snapshots_spv

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 173 filtered out; finished in 0.05s

  stderr ───

    thread 'snapshots::convert_snapshots_spv' (21142) panicked at naga/tests/naga/snapshots.rs:427:14:
    Failed to execute spirv-as. It can be installed by installing the Vulkan SDK and adding it to your path.: Os { code: 2, kind: NotFound, message: "No such file or directory" }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

But the others ... ? We do have OpenGL in the base OS.

~> uname -a
NetBSD mybox 11.99.4 NetBSD 11.99.4 (GENERIC) #0: Fri Nov 21 21:46:20 UTC 2025  [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC amd64
~> glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) HD Graphics 4400 (HSW GT2) (0xa16)
    Version: 21.3.7
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 4400 (HSW GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.3.7
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.0 Mesa 21.3.7
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 21.3.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

See also the output of glxinfo -l here Although, it's in /usr/X11R7/include. I wonder if I need to add this path to ~/.cargo/config.toml, right now I have only this

Should I give it another try with the include path?

unless you figure something out how we can run tests on CI for netbsd, we'd add netbsd only as "tier 2" platform on ci (just like freebsd), which implies compiling only.

For now, I would be fine with that.

But maybe that's just what happens when test requirements are misconfigured, worth a look

Did you find anything obvious?

0323pin avatar Nov 22 '25 17:11 0323pin

@Wumpf I get this one failing, as said, we don't have Vulkan

yes, as pointed out we can ignore that. Although I think it would be good to have the test handle that better. But whatever, since we won't be able to setup up a test runner on ci anyways we can ignore it for now.

But the others ... ? We do have OpenGL in the base OS. Did you find anything obvious?

Well I don't have a NetBSD installation. I'd hope you figure it out with the pointers I've given so far ;-). Well, most almost all tests pass and while I haven't looked through the list in detail whether something was falsely filtered out that seems promising :).

As I wrote really only the multi_instance one is "interesting". Again that is a feature that afaik you won't be able to support here but the test should detect that and then not run in the first place. The rest is benchmarking and if you don't have time and energy to investigate those we can also let them slide as well, as is it doesn't look like we'll be able to run any benchmarks on this platform too.

So long story short, it would be great to check why wgpu-test::wgpu-validation api::instance::multi_instance::multi_instance is running in the first place. But otherwise we're probably good :)

Wumpf avatar Nov 23 '25 15:11 Wumpf

@Wumpf I've tried to look at this ...

So long story short, it would be great to check why wgpu-test::wgpu-validation api::instance::multi_instance::multi_instance is running in the first place. But otherwise we're probably good :)

but the only cfg target I see in tests/tests/wgpu-validation/api/instance.rs is wasm. I'm unsure on how to proceed 😞

if you don't have time and energy to investigate those we can also let them slide as well, as is it doesn't look like we'll be able to run any benchmarks on this platform too.

I think the main issue here is not time/energy related, rather knowledge related 🤔

I'll open a PR adding basic support and hope others can build further.

0323pin avatar Dec 07 '25 14:12 0323pin

@Wumpf I don't get why this clippy run only fails on NetBSD and not on other platforms.

Else, all checks are successful.

EDIT: On Void Linux, I get a different warning using Rust-1.91.1

[Tue Dec 09 20:52] pin@muslbox ~$ cd Git/
[Tue Dec 09 20:52] pin@muslbox ~/Git$ git clone https://github.com/gfx-rs/wgpu
Cloning into 'wgpu'...
remote: Enumerating objects: 110059, done.
remote: Counting objects: 100% (110/110), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 110059 (delta 68), reused 61 (delta 61), pack-reused 109949 (from 2)
Receiving objects: 100% (110059/110059), 73.66 MiB | 18.66 MiB/s, done.
Resolving deltas: 100% (80710/80710), done.
[Tue Dec 09 20:53] pin@muslbox ~/Git$ uname -a
Linux muslbox 6.12.60_1 #1 SMP PREEMPT_DYNAMIC Mon Dec  1 22:36:17 UTC 2025 x86_64 GNU/Linux
[Tue Dec 09 20:53] pin@muslbox ~/Git$ cd wgpu
[Tue Dec 09 20:53] pin@muslbox ~/Git/wgpu$ cargo clippy
[...]
warning: this lint expectation is unfulfilled
   --> wgpu-core/src/resource.rs:878:59
    |
878 |                 #[cfg_attr(not(feature = "trace"), expect(clippy::collapsible_if))]
    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default

    Checking encase v0.12.0
warning: `wgpu-core` (lib) generated 1 warning
[...]
[Tue Dec 09 20:59] pin@muslbox ~/Git$ rustc -V
rustc 1.91.1 (ed61e7d7e 2025-11-07) (Void Linux)

On macOS aarch64 with Rust-1.92-beta it tries to first downgrade Rust to 1.88, so I've stopped the clippy run.

Could this simply be related to which Rust version is being used?

0323pin avatar Dec 09 '25 12:12 0323pin