mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	This update makes wgpu a vendored dependency instead of having it in gfx/wgpu. ## Notes It relies on https://phabricator.services.mozilla.com/D123157 It has a quirk related to OpenGL ES backend. Previousy, we manually had to disable GL backend in order to avoid vendoring WASM dependencies in. This time, manual editing is more complicated, so instead this change adds a few cargo patch lines to point WASM dependencies to dummy projects. The update also totally removes SPIRV-Cross, since the latest `wgpu` doesn't depend on it any more. The compiled binary size for Gecko should improve with this. Differential Revision: https://phabricator.services.mozilla.com/D123153
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
 | 
						||
extern crate arrayvec;
 | 
						||
#[macro_use] extern crate bencher;
 | 
						||
 | 
						||
use arrayvec::ArrayString;
 | 
						||
 | 
						||
use bencher::Bencher;
 | 
						||
 | 
						||
fn try_push_c(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        while v.try_push('c').is_ok() {
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
fn try_push_alpha(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        while v.try_push('α').is_ok() {
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
// Yes, pushing a string char-by-char is slow. Use .push_str.
 | 
						||
fn try_push_string(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    let input = "abcαβγ“”";
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        for ch in input.chars().cycle() {
 | 
						||
            if !v.try_push(ch).is_ok() {
 | 
						||
                break;
 | 
						||
            }
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
fn push_c(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        while !v.is_full() {
 | 
						||
            v.push('c');
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
fn push_alpha(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        while !v.is_full() {
 | 
						||
            v.push('α');
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
fn push_string(b: &mut Bencher) {
 | 
						||
    let mut v = ArrayString::<512>::new();
 | 
						||
    let input = "abcαβγ“”";
 | 
						||
    b.iter(|| {
 | 
						||
        v.clear();
 | 
						||
        for ch in input.chars().cycle() {
 | 
						||
            if !v.is_full() {
 | 
						||
                v.push(ch);
 | 
						||
            } else {
 | 
						||
                break;
 | 
						||
            }
 | 
						||
        }
 | 
						||
        v.len()
 | 
						||
    });
 | 
						||
    b.bytes = v.capacity() as u64;
 | 
						||
}
 | 
						||
 | 
						||
benchmark_group!(benches, try_push_c, try_push_alpha, try_push_string, push_c,
 | 
						||
                 push_alpha, push_string);
 | 
						||
benchmark_main!(benches);
 |