2025-03-23 00:43:40 +01:00
yes
2025-03-01 13:43:19 +01:00
2025-03-23 00:43:40 +01:00
yes
2025-03-21 21:31:15 +01:00
2025-03-23 00:43:40 +01:00
2025-03-23 00:43:40 +01:00
yes
2025-03-19 12:48:21 +01: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
2025-02-23 17:12:27 +01:00
2025-03-23 00:43:40 +01: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.

#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%