Fix ci xvfb (#11143)
# Objective Fix ci hang, so we can merge pr's again. ## Solution - switch ppa action to use mesa stable versions https://launchpad.net/~kisak/+archive/ubuntu/turtle - use commit from #11123 --------- Co-authored-by: Stepan Koltsov <stepan.koltsov@gmail.com>
This commit is contained in:
		
							parent
							
								
									8067e46049
								
							
						
					
					
						commit
						786abbf3f5
					
				
							
								
								
									
										4
									
								
								.github/workflows/validation-jobs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/validation-jobs.yml
									
									
									
									
										vendored
									
									
								
							@ -74,7 +74,7 @@ jobs:
 | 
			
		||||
      - name: install xvfb, llvmpipe and lavapipe
 | 
			
		||||
        run: |
 | 
			
		||||
          sudo apt-get update -y -qq
 | 
			
		||||
          sudo add-apt-repository ppa:kisak/kisak-mesa -y
 | 
			
		||||
          sudo add-apt-repository ppa:kisak/turtle -y
 | 
			
		||||
          sudo apt-get update
 | 
			
		||||
          sudo apt install -y xvfb libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
@ -148,7 +148,7 @@ jobs:
 | 
			
		||||
      - name: install xvfb, llvmpipe and lavapipe
 | 
			
		||||
        run: |
 | 
			
		||||
          sudo apt-get update -y -qq
 | 
			
		||||
          sudo add-apt-repository ppa:kisak/kisak-mesa -y
 | 
			
		||||
          sudo add-apt-repository ppa:kisak/turtle -y
 | 
			
		||||
          sudo apt-get update
 | 
			
		||||
          sudo apt install -y xvfb libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -436,6 +436,7 @@ impl Entities {
 | 
			
		||||
    /// Reserve entity IDs concurrently.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Storage for entity generation and location is lazily allocated by calling [`flush`](Entities::flush).
 | 
			
		||||
    #[allow(clippy::unnecessary_fallible_conversions)] // Because `IdCursor::try_from` may fail on 32-bit platforms.
 | 
			
		||||
    pub fn reserve_entities(&self, count: u32) -> ReserveEntitiesIterator {
 | 
			
		||||
        // Use one atomic subtract to grab a range of new IDs. The range might be
 | 
			
		||||
        // entirely nonnegative, meaning all IDs come from the freelist, or entirely
 | 
			
		||||
@ -627,6 +628,7 @@ impl Entities {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Ensure at least `n` allocations can succeed without reallocating.
 | 
			
		||||
    #[allow(clippy::unnecessary_fallible_conversions)] // Because `IdCursor::try_from` may fail on 32-bit platforms.
 | 
			
		||||
    pub fn reserve(&mut self, additional: u32) {
 | 
			
		||||
        self.verify_flushed();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -996,7 +996,7 @@ impl<D: QueryData, F: QueryFilter> QueryState<D, F> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Runs `func` on each query result for the given [`World`]. This is faster than the equivalent
 | 
			
		||||
    /// iter() method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    /// `iter()` method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    ///
 | 
			
		||||
    /// This can only be called for read-only queries, see [`Self::for_each_mut`] for write-queries.
 | 
			
		||||
    ///
 | 
			
		||||
@ -1024,7 +1024,7 @@ impl<D: QueryData, F: QueryFilter> QueryState<D, F> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Runs `func` on each query result for the given [`World`]. This is faster than the equivalent
 | 
			
		||||
    /// iter() method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    /// `iter()` method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    ///
 | 
			
		||||
    /// # Safety
 | 
			
		||||
    ///
 | 
			
		||||
@ -1086,7 +1086,7 @@ impl<D: QueryData, F: QueryFilter> QueryState<D, F> {
 | 
			
		||||
 | 
			
		||||
    /// Runs `func` on each query result in parallel for the given [`World`], where the last change and
 | 
			
		||||
    /// the current change tick are given. This is faster than the equivalent
 | 
			
		||||
    /// iter() method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    /// `iter()` method, but cannot be chained like a normal [`Iterator`].
 | 
			
		||||
    ///
 | 
			
		||||
    /// # Panics
 | 
			
		||||
    /// The [`ComputeTaskPool`] is not initialized. If using this from a query that is being
 | 
			
		||||
 | 
			
		||||
@ -306,7 +306,7 @@ impl BlobVec {
 | 
			
		||||
    /// The removed element is replaced by the last element of the `BlobVec`.
 | 
			
		||||
    ///
 | 
			
		||||
    /// # Safety
 | 
			
		||||
    /// It is the caller's responsibility to ensure that `index` is < self.len()
 | 
			
		||||
    /// It is the caller's responsibility to ensure that `index` is `< self.len()`.
 | 
			
		||||
    #[inline]
 | 
			
		||||
    pub unsafe fn swap_remove_and_drop_unchecked(&mut self, index: usize) {
 | 
			
		||||
        debug_assert!(index < self.len());
 | 
			
		||||
 | 
			
		||||
@ -893,7 +893,7 @@ fn load_material(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Loads a glTF node.
 | 
			
		||||
#[allow(clippy::too_many_arguments)]
 | 
			
		||||
#[allow(clippy::too_many_arguments, clippy::result_large_err)]
 | 
			
		||||
fn load_node(
 | 
			
		||||
    gltf_node: &Node,
 | 
			
		||||
    world_builder: &mut WorldChildBuilder,
 | 
			
		||||
@ -1291,6 +1291,7 @@ fn texture_address_mode(gltf_address_mode: &WrappingMode) -> ImageAddressMode {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Maps the `primitive_topology` form glTF to `wgpu`.
 | 
			
		||||
#[allow(clippy::result_large_err)]
 | 
			
		||||
fn get_primitive_topology(mode: Mode) -> Result<PrimitiveTopology, GltfError> {
 | 
			
		||||
    match mode {
 | 
			
		||||
        Mode::Points => Ok(PrimitiveTopology::PointList),
 | 
			
		||||
 | 
			
		||||
@ -1295,7 +1295,7 @@ impl<T: FromReflect + Clone + TypePath> FromReflect for Cow<'static, [T]> {
 | 
			
		||||
            for field in ref_list.iter() {
 | 
			
		||||
                temp_vec.push(T::from_reflect(field)?);
 | 
			
		||||
            }
 | 
			
		||||
            temp_vec.try_into().ok()
 | 
			
		||||
            Some(temp_vec.into())
 | 
			
		||||
        } else {
 | 
			
		||||
            None
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -1035,7 +1035,7 @@ impl GridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a fit-content() grid track with fixed pixel limit
 | 
			
		||||
    /// Create a `fit-content()` grid track with fixed pixel limit.
 | 
			
		||||
    ///
 | 
			
		||||
    /// <https://developer.mozilla.org/en-US/docs/Web/CSS/fit-content_function>
 | 
			
		||||
    pub fn fit_content_px<T: From<Self>>(limit: f32) -> T {
 | 
			
		||||
@ -1046,7 +1046,7 @@ impl GridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a fit-content() grid track with percentage limit
 | 
			
		||||
    /// Create a `fit-content()` grid track with percentage limit.
 | 
			
		||||
    ///
 | 
			
		||||
    /// <https://developer.mozilla.org/en-US/docs/Web/CSS/fit-content_function>
 | 
			
		||||
    pub fn fit_content_percent<T: From<Self>>(limit: f32) -> T {
 | 
			
		||||
@ -1057,7 +1057,7 @@ impl GridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a minmax() grid track
 | 
			
		||||
    /// Create a `minmax()` grid track.
 | 
			
		||||
    ///
 | 
			
		||||
    /// <https://developer.mozilla.org/en-US/docs/Web/CSS/minmax>
 | 
			
		||||
    pub fn minmax<T: From<Self>>(min: MinTrackSizingFunction, max: MaxTrackSizingFunction) -> T {
 | 
			
		||||
@ -1198,7 +1198,7 @@ impl RepeatedGridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a repeating set of fit-content() grid tracks with fixed pixel limit
 | 
			
		||||
    /// Create a repeating set of `fit-content()` grid tracks with fixed pixel limit
 | 
			
		||||
    pub fn fit_content_px<T: From<Self>>(repetition: u16, limit: f32) -> T {
 | 
			
		||||
        Self {
 | 
			
		||||
            repetition: GridTrackRepetition::Count(repetition),
 | 
			
		||||
@ -1207,7 +1207,7 @@ impl RepeatedGridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a repeating set of fit-content() grid tracks with percentage limit
 | 
			
		||||
    /// Create a repeating set of `fit-content()` grid tracks with percentage limit
 | 
			
		||||
    pub fn fit_content_percent<T: From<Self>>(repetition: u16, limit: f32) -> T {
 | 
			
		||||
        Self {
 | 
			
		||||
            repetition: GridTrackRepetition::Count(repetition),
 | 
			
		||||
@ -1216,7 +1216,7 @@ impl RepeatedGridTrack {
 | 
			
		||||
        .into()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a repeating set of minmax() grid track
 | 
			
		||||
    /// Create a repeating set of `minmax()` grid track
 | 
			
		||||
    pub fn minmax<T: From<Self>>(
 | 
			
		||||
        repetition: impl Into<GridTrackRepetition>,
 | 
			
		||||
        min: MinTrackSizingFunction,
 | 
			
		||||
 | 
			
		||||
@ -127,11 +127,8 @@ pub struct Hashed<V, H = FixedState> {
 | 
			
		||||
impl<V: Hash, H: BuildHasher + Default> Hashed<V, H> {
 | 
			
		||||
    /// Pre-hashes the given value using the [`BuildHasher`] configured in the [`Hashed`] type.
 | 
			
		||||
    pub fn new(value: V) -> Self {
 | 
			
		||||
        let builder = H::default();
 | 
			
		||||
        let mut hasher = builder.build_hasher();
 | 
			
		||||
        value.hash(&mut hasher);
 | 
			
		||||
        Self {
 | 
			
		||||
            hash: hasher.finish(),
 | 
			
		||||
            hash: H::default().hash_one(&value),
 | 
			
		||||
            value,
 | 
			
		||||
            marker: PhantomData,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -80,15 +80,12 @@ fn setup(
 | 
			
		||||
 | 
			
		||||
    let plane_mesh = meshes.add(shape::Plane::from_size(2.0).into());
 | 
			
		||||
 | 
			
		||||
    let cylinder_mesh = meshes.add(
 | 
			
		||||
        Mesh::try_from(shape::Cylinder {
 | 
			
		||||
            radius: 0.5,
 | 
			
		||||
            height: 2.0,
 | 
			
		||||
            resolution: 50,
 | 
			
		||||
            segments: 1,
 | 
			
		||||
        })
 | 
			
		||||
        .unwrap(),
 | 
			
		||||
    );
 | 
			
		||||
    let cylinder_mesh = meshes.add(Mesh::from(shape::Cylinder {
 | 
			
		||||
        radius: 0.5,
 | 
			
		||||
        height: 2.0,
 | 
			
		||||
        resolution: 50,
 | 
			
		||||
        segments: 1,
 | 
			
		||||
    }));
 | 
			
		||||
 | 
			
		||||
    // Cube #1
 | 
			
		||||
    commands.spawn((
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user