2025-04-13 19:15:22 +02:00
yes
2025-04-13 19:15:22 +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
2025-04-13 18:52:37 +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 19:15:22 +02:00
yes
2025-04-13 00:43:33 +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.

Linux Windows Msys2 (MinGW64) macOS
Vulkan Linux build NONE NONE NONE
OpenGL Linux build NONE NONE NONE
OpenGL ES Linux build NONE NONE NONE
D3D11 NONE NONE NONE
Software linux-software NONE NONE NONE
#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%