[Mesa-dev] gears ports: Vulkan vk1_gears and OS Mesa kitty_gears

Michael Clark michaeljclark at mac.com
Tue Nov 24 08:43:05 UTC 2020

Hi Folks,

I have been working on several gears ports that I thought I'd share:

- https://github.com/michaeljclark/glkitty/

## Background

I have found the Mesa gears demo to be a very useful test case for 
porting to new OpenGL API variants. In fact I did a search and found 
"gearsvbo", a port that I worked on over a decade ago while 
familiarizing with OpenGL ES1 that I had completely forgotten about:


I present glkitty, a header framework for creating OS Mesa apps using 
kitty terminal graphics protocol, of which the first app is kitty_gears.

I also colocated several other gears ports including Vulkan vk1_gears. 
The Vulkan samples version of gears had a large number of dependencies 
on a C++ framework so I decided to do a simpler pure C port.

The web page has a full description. Here is a brief outline:

- kitty_gears - OS Mesa gears using kitty terminal graphics protocol
- gl1_gears - OpenGL 1.x gears using GLFW similar to the original
- gl2_gears - OpenGL 2.x gears using VAO/VBO, programmable shaders
- vk1_gears - Vulkan 1.x gears using spirvtools and SPIR-V shaders

# gl2_gears

gl2_gears is similar to es2gears in mesa-demos, however it uses defacto 
standard linmath.h plus gl2_util.h which contains common shader loader 
and vertex buffer functions. gl2_util.h is used for several small tests.

# kitty_gears

kitty_gears uses OS Mesa and gl2_util.h. It could be useful to render 
test images from test runs, something that console history will be well 
suited to. It still needs a little work with lifecycle management of 
kitty images, as the terminal state now includes these image surfaces. 
It supports ZLib compression and animation...

# vk1_gears

vk1_gears is a Vulkan port that might be useful for testing Vulkan 
window resize, reshape, pipe reconfiguration and semaphores. I have used 
it with the NVIDIA Vulkan and the Mesa Vulkan drivers with varying 
levels of success.

Anyhow, that's about it. Let me know if you find this useful. I was 
actually specifically interested in using kitty for inspecting test case 
output where I can run a batch of tests and can scroll through results.


More information about the mesa-dev mailing list