Skip to content

Instantly share code, notes, and snippets.

View bitshifter's full-sized avatar

Cameron Hart bitshifter

View GitHub Profile
@bitshifter
bitshifter / p4-completions.nu
Last active May 22, 2024 03:32
A Perforce custom completer for nushell (work in progress)
# nushell version 0.93.0
# some short flags cannot be added to extern completers due to this bug https://github.com/nushell/nushell/issues/8318
# List Perforce help topics
def "nu-complete p4 help topics" [] {
[
'add',
'annotate',
'client',
'clients',
@bitshifter
bitshifter / fmaf.asm
Created February 19, 2022 22:11
msvc software fmaf
; id = {0xffffffff}, range = [0x000000018008f810-0x000000018008fab0), name="fmaf"
; Source location: unknown
7FFF8B1DF810: 48 8B C4 movq %rsp, %rax
7FFF8B1DF813: 55 pushq %rbp
7FFF8B1DF814: 53 pushq %rbx
7FFF8B1DF815: 56 pushq %rsi
7FFF8B1DF816: 57 pushq %rdi
7FFF8B1DF817: 41 56 pushq %r14
7FFF8B1DF819: 48 8D 68 A1 leaq -0x5f(%rax), %rbp
7FFF8B1DF81D: 48 81 EC B0 00 00 00 subq $0xb0, %rsp
@bitshifter
bitshifter / readme.md
Created December 6, 2020 20:40
glam master vs refactor branch codegen

I'm generating spriv of glam master branch versus glam refactor branch and overriding what glam rust-gpu is using via a .cargo/config overrive.

This is with Vec3 being repr(simd) on master.

I'm compiling using cargo run --bin example-runner-wgpu.

File sizes when built with master:

cam@zx:~/Projects/rust-gpu (main)$ ls -lah target/spirv-builder/spirv-unknown-unknown/release/*.spv
@bitshifter
bitshifter / main.rs
Created November 12, 2019 10:30
unit quaternion drift
use glam;
use rand::{thread_rng, Rng};
fn rand_angle<R: Rng>(rng: &mut R) -> f32 {
rng.gen_range(-std::f32::consts::PI, std::f32::consts::PI)
}
fn rand_quat<R: Rng>(rng: &mut R) -> glam::Quat {
let yaw = rand_angle(rng);
let pitch = rand_angle(rng);
@bitshifter
bitshifter / mat4_mul_mat4_compare.md
Last active June 4, 2019 13:20
mathbench mat4 mul comparison

mathbench Mat4 mul comparison

mathbench lib

pub fn glam_mat4_mul(lhs: glam::Mat4, rhs: glam::Mat4) -> glam::Mat4 {
    lhs * rhs
}

pub fn nalgebra_mat4_mul(
    lhs: nalgebra::Matrix4<f32>,
// test_dynamic.rs
#![crate_type="lib"]
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
#[cfg(target_arch = "x86_64")]
use std::arch::x86_64::*;
pub fn add_scalar(a: &[f32], b: &[f32], c: &mut [f32]) {
for ((a, b), c) in a.iter().zip(b.iter()).zip(c.iter_mut()) {
@bitshifter
bitshifter / main.rs
Created April 14, 2018 01:20
Minimal reproduction of rustc ICE issue #48638
use std::any::Any;
use std::fmt::Debug;
use std::marker::PhantomData;
// use std::ops::Mul;
pub trait Scalar: Copy + PartialEq + Debug + Any {}
impl Scalar for f64 {}
pub trait Dim: Any + Debug + Copy + PartialEq + Send {}
@bitshifter
bitshifter / issue96.patch
Created January 1, 2018 00:47
Test case for issue 96, replicating cgmath AsMut ambiguity.
diff --git a/imgui-examples/examples/test_window_impl.rs b/imgui-examples/examples/test_window_impl.rs
index c9cc5c8..e5ec03a 100644
--- a/imgui-examples/examples/test_window_impl.rs
+++ b/imgui-examples/examples/test_window_impl.rs
@@ -4,9 +4,34 @@ extern crate imgui;
extern crate imgui_glium_renderer;
use imgui::*;
+use std::mem;
@bitshifter
bitshifter / gist:71f0c5f3146db43a223ce08cdd0247c2
Created December 5, 2017 00:35
benchmarking f32 vs f32x4
# bench_f32 loop:
.LBB23_30:
vmovss (%rdi), %xmm1
vmovsd 4(%rdi), %xmm2
vmulss 12(%rdi), %xmm1, %xmm1
vmovsd 16(%rdi), %xmm3
vmulps %xmm3, %xmm2, %xmm2
vaddss %xmm2, %xmm1, %xmm1
vmovshdup %xmm2, %xmm2
vaddss %xmm2, %xmm1, %xmm1
#ifndef TASK_FENCE_HPP
#define TASK_FENCE_HPP
#include <condition_variable>
#include <mutex>
class TaskFence
{
int taskCount_;
std::condition_variable taskCV_;