From 8bc0f4afbce4d591e4b22f3879f5e8b5cf84734b Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Sat, 14 Jun 2025 21:29:21 -0400 Subject: [PATCH] gryphn texture API --- rendering_api/vulkan/src/framebuffers/vulkan_framebuffer.c | 2 +- .../src/presentation_queue/vulkan_presentation_queue.c | 4 ++-- rendering_api/vulkan/src/textures/vulkan_texture.c | 4 +++- src/core/gryphn_platform_functions.h | 2 ++ src/core/instance/init/gryphn_init.c | 2 ++ src/core/textures/gryphn_texture.c | 7 +++++++ src/core/textures/gryphn_texture.h | 2 ++ 7 files changed, 19 insertions(+), 4 deletions(-) diff --git a/rendering_api/vulkan/src/framebuffers/vulkan_framebuffer.c b/rendering_api/vulkan/src/framebuffers/vulkan_framebuffer.c index 47a0933..8ce9ee3 100644 --- a/rendering_api/vulkan/src/framebuffers/vulkan_framebuffer.c +++ b/rendering_api/vulkan/src/framebuffers/vulkan_framebuffer.c @@ -8,7 +8,7 @@ gnReturnCode gnCreateFramebufferFn(struct gnFramebuffer_t* framebuffer, struct g VkImageView* attachments = malloc(sizeof(VkImageView) * info.attachmentCount); for (int i = 0; i < info.attachmentCount; i++) - attachments[i] = info.attachments[i]->texture->imageView; + attachments[i] = info.attachments[i]->texture->image.imageView; VkFramebufferCreateInfo framebufferInfo = { .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, diff --git a/rendering_api/vulkan/src/presentation_queue/vulkan_presentation_queue.c b/rendering_api/vulkan/src/presentation_queue/vulkan_presentation_queue.c index 32e7cb0..5284c93 100644 --- a/rendering_api/vulkan/src/presentation_queue/vulkan_presentation_queue.c +++ b/rendering_api/vulkan/src/presentation_queue/vulkan_presentation_queue.c @@ -116,8 +116,8 @@ gnReturnCode gnCreatePresentationQueueFn(gnPresentationQueueHandle presentationQ if (vkCreateImageView(device->outputDevice->device, &imageViewCreateInfo, NULL, &presentationQueue->presentationQueue->swapChainImageViews[i]) != VK_SUCCESS) return GN_FAILED_TO_CREATE_IMAGE_VIEW; - presentationQueue->images[i]->texture->image = presentationQueue->presentationQueue->swapChainImages[i]; - presentationQueue->images[i]->texture->imageView = presentationQueue->presentationQueue->swapChainImageViews[i]; + presentationQueue->images[i]->texture->image.image = presentationQueue->presentationQueue->swapChainImages[i]; + presentationQueue->images[i]->texture->image.imageView = presentationQueue->presentationQueue->swapChainImageViews[i]; } return GN_SUCCESS; diff --git a/rendering_api/vulkan/src/textures/vulkan_texture.c b/rendering_api/vulkan/src/textures/vulkan_texture.c index 7638f4c..80b01af 100644 --- a/rendering_api/vulkan/src/textures/vulkan_texture.c +++ b/rendering_api/vulkan/src/textures/vulkan_texture.c @@ -115,7 +115,7 @@ gnReturnCode gnCreateTextureFn(gnTexture texture, gnDevice device, const gnTextu .usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, .samples = VK_SAMPLE_COUNT_1_BIT, .extent = { - .width = 100, + .width = info.width, .height = info.height, .depth = 1 }, @@ -147,6 +147,8 @@ gnReturnCode gnCreateTextureFn(gnTexture texture, gnDevice device, const gnTextu texture->texture->width = info.width; texture->texture->height = info.height; + texture->texture->beenWrittenToo = gnFalse; + return GN_SUCCESS; } diff --git a/src/core/gryphn_platform_functions.h b/src/core/gryphn_platform_functions.h index a5abe7b..c41305d 100644 --- a/src/core/gryphn_platform_functions.h +++ b/src/core/gryphn_platform_functions.h @@ -93,6 +93,8 @@ typedef struct gnDeviceFunctions_t { void (*_gnUpdateBufferUniform)(gnUniform uniform, gnBufferUniformInfo* bufferInfo); gnReturnCode (*_gnCreateTexture)(gnTexture texture, gnDevice device, const gnTextureInfo info); + void (*_gnTextureData)(gnTextureHandle texture, void* pixelData); + void (*_gnDestroyTexture)(gnTexture texture); gnReturnCode (*_gnCreateFence)(gnFenceHandle fence, gnOutputDeviceHandle device); void (*_gnSignalFence)(gnFenceHandle fence); diff --git a/src/core/instance/init/gryphn_init.c b/src/core/instance/init/gryphn_init.c index 2aafd70..f7ce047 100644 --- a/src/core/instance/init/gryphn_init.c +++ b/src/core/instance/init/gryphn_init.c @@ -94,6 +94,8 @@ void gnLoadDeviceFunctions(struct gnDynamicLibrary_t* lib, struct gnDeviceFuncti gnLoadDLLFunction(lib, functions->_gnDestroyUniformPool, "gnDestroyUniformPoolFn"); gnLoadDLLFunction(lib, functions->_gnUpdateBufferUniform, "gnUpdateBufferUniformFn"); gnLoadDLLFunction(lib, functions->_gnCreateTexture, "gnCreateTextureFn"); + gnLoadDLLFunction(lib, functions->_gnTextureData, "gnTextureDataFn"); + gnLoadDLLFunction(lib, functions->_gnDestroyTexture, "gnDestroyTextureFn"); gnLoadDLLFunction(lib, functions->_gnCreateFence, "gnCreateFenceFn"); gnLoadDLLFunction(lib, functions->_gnSignalFence, "gnSignalFenceFn"); gnLoadDLLFunction(lib, functions->_gnWaitForFence, "gnWaitForFenceFn"); diff --git a/src/core/textures/gryphn_texture.c b/src/core/textures/gryphn_texture.c index c134218..127c77b 100644 --- a/src/core/textures/gryphn_texture.c +++ b/src/core/textures/gryphn_texture.c @@ -6,3 +6,10 @@ gnReturnCode gnCreateTexture(gnTexture* texture, gnDevice device, const gnTextur (*texture)->device = device; return device->deviceFunctions->_gnCreateTexture(*texture, device, info); } + +void gnTextureData(gnTextureHandle texture, void* pixelData) { + texture->device->deviceFunctions->_gnTextureData(texture, pixelData); +} +void gnDestroyTexture(gnTexture texture) { + texture->device->deviceFunctions->_gnDestroyTexture(texture); +} diff --git a/src/core/textures/gryphn_texture.h b/src/core/textures/gryphn_texture.h index fed075a..ddb5672 100644 --- a/src/core/textures/gryphn_texture.h +++ b/src/core/textures/gryphn_texture.h @@ -23,3 +23,5 @@ struct gnTexture_t { #endif gnReturnCode gnCreateTexture(gnTexture* texture, gnDevice device, const gnTextureInfo info); +void gnTextureData(gnTextureHandle texture, void* pixelData); +void gnDestroyTexture(gnTexture texture);