mirror of
https://github.com/italicsjenga/vello.git
synced 2025-01-10 20:51:29 +11:00
47f8812e2f
There's a bit of reorganizing as well. Shader stages are made available from piet-gpu to the test rig, config is now a proper structure (marshaled with bytemuck). This commit just has the transform stage, which is a simple monoid scan of affine transforms. Progress toward #119
83 lines
2 KiB
Rust
83 lines
2 KiB
Rust
// Copyright 2021 The piet-gpu authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// Also licensed under MIT license, at your choice.
|
|
|
|
//! Test config parameters.
|
|
|
|
use clap::ArgMatches;
|
|
|
|
pub struct Config {
|
|
pub groups: Groups,
|
|
pub size: Size,
|
|
pub n_iter: u64,
|
|
pub verify_all: bool,
|
|
}
|
|
|
|
pub struct Groups(String);
|
|
|
|
pub enum Size {
|
|
Small,
|
|
Medium,
|
|
Large,
|
|
}
|
|
|
|
impl Config {
|
|
pub fn from_matches(matches: &ArgMatches) -> Config {
|
|
let groups = Groups::from_str(matches.value_of("groups").unwrap_or("all"));
|
|
let size = Size::from_str(matches.value_of("size").unwrap_or("m"));
|
|
let n_iter = matches
|
|
.value_of("n_iter")
|
|
.and_then(|s| s.parse().ok())
|
|
.unwrap_or(1000);
|
|
let verify_all = matches.is_present("verify_all");
|
|
Config {
|
|
groups,
|
|
size,
|
|
n_iter,
|
|
verify_all,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Groups {
|
|
pub fn from_str(s: &str) -> Groups {
|
|
Groups(s.to_string())
|
|
}
|
|
|
|
pub fn matches(&self, group_name: &str) -> bool {
|
|
self.0 == "all" || self.0 == group_name
|
|
}
|
|
}
|
|
|
|
impl Size {
|
|
fn from_str(s: &str) -> Size {
|
|
if s == "small" || s == "s" {
|
|
Size::Small
|
|
} else if s == "large" || s == "l" {
|
|
Size::Large
|
|
} else {
|
|
Size::Medium
|
|
}
|
|
}
|
|
|
|
pub fn choose<T>(&self, small: T, medium: T, large: T) -> T {
|
|
match self {
|
|
Size::Small => small,
|
|
Size::Medium => medium,
|
|
Size::Large => large,
|
|
}
|
|
}
|
|
}
|