https://www.youtube.com/playlist?list=PLKK11Ligqitg9MOX3-0tFT1Rmh3uJp7kA
This tool helps you with many absolutely proprietary software which doesn't include proper push-to-talk key. I wrote this with Google Meet in mind but is also useful for many other browser based apps as well.
It works so that when Caps Lock is held down, the microphone is unmuted. If you want to toggle it (for example during a demonstration), just press Ctrl + Caps Lock.
- 2011 - A trip through the Graphics Pipeline 2011
- 2013 - Performance Optimization Guidelines and the GPU Architecture behind them
- 2015 - Life of a triangle - NVIDIA's logical pipeline
- 2015 - Render Hell 2.0
- 2016 - How bad are small triangles on GPU and why?
- 2017 - GPU Performance for Game Artists
- 2019 - Understanding the anatomy of GPUs using Pokémon
why doesn't radfft support AVX on PC?
So there's two separate issues here: using instructions added in AVX and using 256-bit wide vectors. The former turns out to be much easier than the latter for our use case.
Problem number 1 was that you positively need to put AVX code in a separate file with different compiler settings (/arch:AVX for VC++, -mavx for GCC/Clang) that make all SSE code emitted also use VEX encoding, and at the time radfft was written there was no way in CDep to set compiler flags for just one file, just for the overall build.
[There's the GCC "target" annotations on individual funcs, which in principle fix this, but I ran into nasty problems with this for several compiler versions, and VC++ has no equivalent, so we're not currently using that and just sticking with different compilation units.]
The other issue is to do with CPU power management.
| // ### [ Lexical part ] ######################################################## | |
| _ascii_letter_upper | |
| : 'A' - 'Z' | |
| ; | |
| _ascii_letter_lower | |
| : 'a' - 'z' | |
| ; |
This should work conceptually on any Linux OS with PulseAudio but these particular instructions are for Ubuntu.
There are two major reasons for using simultaneous output. The first is self-evident - we can output to say a bluetooth
headset and wired headphones at the same time to enable two people to watch a movie with headphones on a single computer.
The second reason is a sort of a convenience for setup. We know the simultaneous sink name so the default.pa config
would work without modification so long as simultaneous output is enabled. If we were to set this up without that,
we'd have to customize the config with our specific device sink name. That's totally doable but personally I always
setup simultaneous output. That's why I haven't described the alternative in this gist.
| /* | |
| * edtaa3() | |
| * | |
| * Sweep-and-update Euclidean distance transform of an | |
| * image. Positive pixels are treated as object pixels, | |
| * zero or negative pixels are treated as background. | |
| * An attempt is made to treat antialiased edges correctly. | |
| * The input image must have pixels in the range [0,1], | |
| * and the antialiased image should be a box-filter | |
| * sampling of the ideal, crisp edge. |
A week ago I was CC'd in on a thread about Linux packaging, and how to avoid doing it the wrong way (i.e. RPM, Deb, etc.). I've always used MojoSetup and I've never forced distributions to do any additional work, but this is still a new concept to a lot of people. Additionally, Amos suggested that I expand on Itch's FNA appendix, so here's a guide on how I package my games.
This is a bit of an expansion on my MAGFest 2016 presentation, which you can find here:
http://www.flibitijibibo.com/magfest2016/
https://www.youtube.com/watch?v=B83CWUh0Log
I would recommend looking at that first! After that, read on...
| Why do compilers even bother with exploiting undefinedness signed overflow? And what are those | |
| mysterious cases where it helps? | |
| A lot of people (myself included) are against transforms that aggressively exploit undefined behavior, but | |
| I think it's useful to know what compiler writers are accomplishing by this. | |
| TL;DR: C doesn't work very well if int!=register width, but (for backwards compat) int is 32-bit on all | |
| major 64-bit targets, and this causes quite hairy problems for code generation and optimization in some | |
| fairly common cases. The signed overflow UB exploitation is an attempt to work around this. |
