2025-04-13 21:11:00 +02:00
yes
2025-04-13 21:07:21 +02:00
2025-04-13 17:21:15 +02:00
yes
2025-04-13 00:43:33 +02:00
yes
2025-04-05 22:01:20 +02:00
yes
2025-04-13 20:47:55 +02:00
2025-04-13 18:52:37 +02:00
2025-03-02 21:37:17 +01:00
2025-03-23 00:43:40 +01:00
2024-10-06 08:41:52 +02:00
yes
2025-04-13 21:11:00 +02:00
yes
2025-04-13 20:45:39 +02:00

PulseGPU

Linux build MacOS build Msys2 build Windows build

Pulse is a low level GPGPU library designed for highly intensive general GPU computations with high control over the hardware. It is built on top of Vulkan. A Metal and WebGPU backends are in development.

Unit tests map:

Linux Windows Msys2 (MinGW64) macOS
Vulkan test test Unsupported Unsupported
OpenGL test test Unsupported Unsupported
OpenGL ES test test Unsupported Unsupported
D3D11 Unsupported test test Unsupported
Software test test test test
#include <Pulse.h>

int main(void)
{
	PulseBackend backend = PulseLoadBackend(PULSE_BACKEND_VULKAN, PULSE_SHADER_FORMAT_SPIRV_BIT, PULSE_NO_DEBUG);
	PulseDevice device = PulseCreateDevice(backend, NULL, 0);

	const uint8_t shader_bytecode[] = {
		#include "shader.spv.h"
	};

	PulseComputePipelineCreateInfo info = { 0 };
	info.code_size = sizeof(shader_bytecode);
	info.code = shader_bytecode;
	info.entrypoint = "main";
	info.format = PULSE_SHADER_FORMAT_SPIRV_BIT;
	info.num_readwrite_storage_buffers = 1;
	PulseComputePipeline pipeline = PulseCreateComputePipeline(device, &info);

	PulseBufferCreateInfo buffer_create_info = { 0 };
	buffer_create_info.size = 1024;
	buffer_create_info.usage = PULSE_BUFFER_USAGE_STORAGE_WRITE;
	PulseBuffer buffer = PulseCreateBuffer(device, &buffer_create_info);

	PulseFence fence = PulseCreateFence(device);
	PulseCommandList cmd = PulseRequestCommandList(device, PULSE_COMMAND_LIST_GENERAL);

	PulseComputePass pass = PulseBeginComputePass(cmd);
		PulseBindStorageBuffers(pass, &buffer, 1);
		PulseBindComputePipeline(pass, pipeline);
		PulseDispatchComputations(pass, 32, 32, 1);
	PulseEndComputePass(pass);

	PulseSubmitCommandList(device, cmd, fence);
	PulseWaitForFences(device, &fence, 1, true);

	PulseReleaseCommandList(device, cmd);
	PulseDestroyFence(device, fence);
	PulseDestroyComputePipeline(device, pipeline);

	PulseDestroyBuffer(device, buffer);

	PulseDestroyDevice(device);
	PulseUnloadBackend(backend);
	return 0;
}
Description
A GPGPU library built on top of Vulkan, WebGPU, OpenGL (Core/ES) (Metal and D3D11 to come).
Readme 681 KiB
Languages
C 91.1%
Lua 2.9%
Objective-C 2.8%
C++ 1.8%
Python 0.9%
Other 0.5%