summaryrefslogtreecommitdiff
path: root/src/window.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-11-14 14:46:23 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-11-14 14:46:23 -0500
commitb2548ba4ce295fcd94a50123fb543fac2ef2bc33 (patch)
tree444a32abb4a094c4fa2f7bc9a95aa86963ad4110 /src/window.cpp
parentb1d926361b9d613ad712ad161f9a8b7ccab4551d (diff)
add pk.h and major pkmem refactor
Completely replaces the memory module with pkmem pkmem is a newer implementation of the same bucket memory structure. Also includes replacing pkstr.h with pk.h's pkstr
Diffstat (limited to 'src/window.cpp')
-rw-r--r--src/window.cpp91
1 files changed, 45 insertions, 46 deletions
diff --git a/src/window.cpp b/src/window.cpp
index db817e6..c7963eb 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -12,7 +12,6 @@
#include "event.hpp"
#include "game-settings.hpp"
#include "helpers.hpp"
-#include "memory.hpp"
#include "plugins.hpp"
#include "static/cube.hpp"
#include "window-types.hpp"
@@ -23,7 +22,7 @@
#include <cstdint>
#include <fstream>
-MemBucket *MemBkt_Vulkan = nullptr;
+struct pk_membucket *MemBkt_Vulkan = nullptr;
struct pke_vkAllocData {
void *data;
std::size_t size;
@@ -218,7 +217,7 @@ unsigned int FindQueueFamilyIndex(VkPhysicalDevice device, short hasPresentSuppo
unsigned int queueFamilyPropertyCount = 0U;
vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyPropertyCount, nullptr);
- auto *queueFamilyProperties = Pke_New<VkQueueFamilyProperties>(queueFamilyPropertyCount);
+ auto *queueFamilyProperties = pk_new<VkQueueFamilyProperties>(queueFamilyPropertyCount);
vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyPropertyCount, queueFamilyProperties);
for (unsigned int i = 0; i < queueFamilyPropertyCount; i++) {
@@ -236,11 +235,11 @@ unsigned int FindQueueFamilyIndex(VkPhysicalDevice device, short hasPresentSuppo
continue;
}
}
- Pke_Delete<VkQueueFamilyProperties>(queueFamilyProperties, queueFamilyPropertyCount);
+ pk_delete<VkQueueFamilyProperties>(queueFamilyProperties, queueFamilyPropertyCount);
return i;
}
- Pke_Delete<VkQueueFamilyProperties>(queueFamilyProperties, queueFamilyPropertyCount);
+ pk_delete<VkQueueFamilyProperties>(queueFamilyProperties, queueFamilyPropertyCount);
return 0xFFFFFFFF;
}
@@ -258,7 +257,7 @@ void PKE_vkFreeFunction(void *pUserData, void *pMemory) {
}
if (chunk != nullptr) {
assert(chunk != nullptr);
- Pke_Delete(chunk->data, chunk->size, MemBkt_Vulkan);
+ pk_delete_bkt(chunk->data, chunk->size, MemBkt_Vulkan);
vulkanAllocs->Remove(index);
} else {
fprintf(stderr, "%s\n", "PKE_vkFreeFunction - untracked pointer");
@@ -269,7 +268,7 @@ void *PKE_vkAllocateFunction(void *pUserData, size_t size, size_t alignment, VkS
if (size == 0) {
return nullptr;
}
- void *ptr = Pke_New(size, alignment, MemBkt_Vulkan);
+ void *ptr = pk_new_bkt(size, alignment, MemBkt_Vulkan);
vulkanAllocs->Push({
.data = ptr,
.size = size,
@@ -303,7 +302,7 @@ void *PKE_vkReallocationFunction(void *pUserData, void *pOriginal, size_t size,
void *newPtr = PKE_vkAllocateFunction(pUserData, size, alignment, allocScope);
if (chunk != nullptr) {
memcpy(newPtr, chunk->data, (chunk->size < size ? chunk->size : size) - 1);
- Pke_Delete(chunk->data, chunk->size, MemBkt_Vulkan);
+ pk_delete_bkt(chunk->data, chunk->size, MemBkt_Vulkan);
vulkanAllocs->Remove(index);
} else {
@@ -320,7 +319,7 @@ void PKE_vkInternalFreeNotification(void *pUserData, size_t size, VkInternalAllo
}
void InitVulkan() {
- vkAllocator = Pke_New<VkAllocationCallbacks>(MemBkt_Vulkan);
+ vkAllocator = pk_new<VkAllocationCallbacks>(MemBkt_Vulkan);
vkAllocator->pUserData = nullptr;
vkAllocator->pfnAllocation = PKE_vkAllocateFunction;
vkAllocator->pfnReallocation = PKE_vkReallocationFunction;
@@ -333,14 +332,14 @@ void InitVulkan() {
unsigned int layerCount;
vkResult = vkEnumerateInstanceLayerProperties(&layerCount, nullptr);
assert(vkResult == VK_SUCCESS);
- VkLayerProperties *availableLayerProperties = Pke_New<VkLayerProperties>(layerCount);
+ VkLayerProperties *availableLayerProperties = pk_new<VkLayerProperties>(layerCount);
vkResult = vkEnumerateInstanceLayerProperties(&layerCount, availableLayerProperties);
assert(vkResult == VK_SUCCESS);
printf("Available Layers:\n");
for (long i = 0; i < layerCount; ++i) {
printf("\t%s\n", availableLayerProperties[i].layerName);
}
- Pke_Delete<VkLayerProperties>(availableLayerProperties, layerCount);
+ pk_delete<VkLayerProperties>(availableLayerProperties, layerCount);
}
VkApplicationInfo appInfo;
@@ -410,14 +409,14 @@ void InitVulkan() {
unsigned int extensionCount = 0;
vkResult = vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);
assert(vkResult == VK_SUCCESS);
- auto *extensions = Pke_New<VkExtensionProperties>(extensionCount);
+ auto *extensions = pk_new<VkExtensionProperties>(extensionCount);
vkResult = vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, extensions);
assert(vkResult == VK_SUCCESS);
printf("Available Extensions:\n");
for (long i = 0; i < extensionCount; ++i) {
printf("\t%s\n", extensions[i].extensionName);
}
- Pke_Delete<VkExtensionProperties>(extensions, extensionCount);
+ pk_delete<VkExtensionProperties>(extensions, extensionCount);
}
vkResult = vkCreateInstance(&createInfo, vkAllocator, &vkInstance);
@@ -457,7 +456,7 @@ void InitVulkan() {
vkResult = vkEnumeratePhysicalDevices(vkInstance, &physicalDeviceCount, nullptr);
assert(vkResult == VK_SUCCESS);
assert(physicalDeviceCount > 0);
- auto *physicalDevices = Pke_New<VkPhysicalDevice>(physicalDeviceCount);
+ auto *physicalDevices = pk_new<VkPhysicalDevice>(physicalDeviceCount);
vkResult = vkEnumeratePhysicalDevices(vkInstance, &physicalDeviceCount, physicalDevices);
assert(vkResult == VK_SUCCESS);
graphicsFamilyIndex = 0;
@@ -477,7 +476,7 @@ void InitVulkan() {
unsigned int extensionCount = 0;
vkResult = vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr);
assert(vkResult == VK_SUCCESS);
- auto *extensionProperties = Pke_New<VkExtensionProperties>(extensionCount);
+ auto *extensionProperties = pk_new<VkExtensionProperties>(extensionCount);
vkResult = vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, extensionProperties);
assert(vkResult == VK_SUCCESS);
for (long k = 0; k < extensionCount; ++k) {
@@ -491,7 +490,7 @@ void InitVulkan() {
}
}
}
- Pke_Delete<VkExtensionProperties>(extensionProperties, extensionCount);
+ pk_delete<VkExtensionProperties>(extensionProperties, extensionCount);
if (requiredExtensions.empty() == false) {
continue;
}
@@ -520,7 +519,7 @@ void InitVulkan() {
break;
}
assert(vkPhysicalDevice != nullptr && "Failed to find suitable physical device");
- Pke_Delete<VkPhysicalDevice>(physicalDevices, physicalDeviceCount);
+ pk_delete<VkPhysicalDevice>(physicalDevices, physicalDeviceCount);
// Create logical device
{
@@ -694,7 +693,7 @@ void CreateSwapchain() {
unsigned int surfaceFormatCounts;
vkResult = vkGetPhysicalDeviceSurfaceFormatsKHR(vkPhysicalDevice, vkSurfaceKHR, &surfaceFormatCounts, nullptr);
assert(vkResult == VK_SUCCESS);
- VkSurfaceFormatKHR *surfaceFormats = Pke_New<VkSurfaceFormatKHR>(surfaceFormatCounts);
+ VkSurfaceFormatKHR *surfaceFormats = pk_new<VkSurfaceFormatKHR>(surfaceFormatCounts);
vkResult = vkGetPhysicalDeviceSurfaceFormatsKHR(vkPhysicalDevice, vkSurfaceKHR, &surfaceFormatCounts, surfaceFormats);
assert(vkResult == VK_SUCCESS);
selectedSurfaceIndex = 0;
@@ -707,7 +706,7 @@ void CreateSwapchain() {
break;
}
- Pke_Delete<VkSurfaceFormatKHR>(surfaceFormats, surfaceFormatCounts);
+ pk_delete<VkSurfaceFormatKHR>(surfaceFormats, surfaceFormatCounts);
}
int width, height;
@@ -725,7 +724,7 @@ void CreateSwapchain() {
unsigned int presentModeCount = 0;
vkResult = vkGetPhysicalDeviceSurfacePresentModesKHR(vkPhysicalDevice, vkSurfaceKHR, &presentModeCount, nullptr);
assert(vkResult == VK_SUCCESS);
- VkPresentModeKHR *presentModes = Pke_New<VkPresentModeKHR>(presentModeCount);
+ VkPresentModeKHR *presentModes = pk_new<VkPresentModeKHR>(presentModeCount);
vkResult = vkGetPhysicalDeviceSurfacePresentModesKHR(vkPhysicalDevice, vkSurfaceKHR, &presentModeCount, presentModes);
assert(vkResult == VK_SUCCESS);
uint32_t immediateIndex = -1;
@@ -762,7 +761,7 @@ void CreateSwapchain() {
if (immediateIndex != -1) {
vkPresentModeKHR = VK_PRESENT_MODE_IMMEDIATE_KHR;
}
- Pke_Delete<VkPresentModeKHR>(presentModes, presentModeCount);
+ pk_delete<VkPresentModeKHR>(presentModes, presentModeCount);
}
VkSwapchainCreateInfoKHR vkSwapchainCreateInfo;
@@ -831,10 +830,10 @@ void CreateSwapchain() {
vkResult = vkGetSwapchainImagesKHR(vkDevice, vkSwapchainKHR, &swapchainLength, nullptr);
assert(vkResult == VK_SUCCESS);
- swapchainImages = Pke_New<VkImage>(swapchainLength);
+ swapchainImages = pk_new<VkImage>(swapchainLength);
vkResult = vkGetSwapchainImagesKHR(vkDevice, vkSwapchainKHR, &swapchainLength, swapchainImages);
assert(vkResult == VK_SUCCESS);
- swapchainImageViews = Pke_New<VkImageView>(swapchainLength);
+ swapchainImageViews = pk_new<VkImageView>(swapchainLength);
for (long i = 0; i < swapchainLength; ++i) {
vkImageViewCreateInfo.image = swapchainImages[i];
vkResult = vkCreateImageView(vkDevice, &vkImageViewCreateInfo, vkAllocator, &swapchainImageViews[i]);
@@ -863,20 +862,20 @@ void CreateSwapchain() {
renderTargetImageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
// render images
- renderImages = Pke_New<VkImage>(MAX_FRAMES_IN_FLIGHT);
- renderImageViews = Pke_New<VkImageView>(MAX_FRAMES_IN_FLIGHT);
+ renderImages = pk_new<VkImage>(MAX_FRAMES_IN_FLIGHT);
+ renderImageViews = pk_new<VkImageView>(MAX_FRAMES_IN_FLIGHT);
CreateImageResources_Inner(&renderTargetImageCI, &vkImageViewCreateInfo, VkBufferUsageFlagBits(0), nullptr, renderImages, renderImageViews, &renderImagesMemory);
// color images
- colorImages = Pke_New<VkImage>(MAX_FRAMES_IN_FLIGHT);
- colorImageViews = Pke_New<VkImageView>(MAX_FRAMES_IN_FLIGHT);
+ colorImages = pk_new<VkImage>(MAX_FRAMES_IN_FLIGHT);
+ colorImageViews = pk_new<VkImageView>(MAX_FRAMES_IN_FLIGHT);
renderTargetImageCI.samples = renderSampleCount;
renderTargetImageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
CreateImageResources_Inner(&renderTargetImageCI, &vkImageViewCreateInfo, VkBufferUsageFlagBits(0), nullptr, colorImages, colorImageViews, &colorImagesMemory);
// depth images
- depthImages = Pke_New<VkImage>(MAX_FRAMES_IN_FLIGHT);
- depthImageViews = Pke_New<VkImageView>(MAX_FRAMES_IN_FLIGHT);
+ depthImages = pk_new<VkImage>(MAX_FRAMES_IN_FLIGHT);
+ depthImageViews = pk_new<VkImageView>(MAX_FRAMES_IN_FLIGHT);
renderTargetImageCI.format = depthFormat;
vkImageViewCreateInfo.format = depthFormat;
renderTargetImageCI.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
@@ -1306,8 +1305,8 @@ void CreatePresentPipeline() {
void CreateFramebuffers() {
assert(swapchainFramebuffers == nullptr || swapchainFramebuffers == CAFE_BABE(VkFramebuffer));
assert(renderImageFramebuffers == nullptr || renderImageFramebuffers == CAFE_BABE(VkFramebuffer));
- swapchainFramebuffers = Pke_New<VkFramebuffer>(swapchainLength);
- renderImageFramebuffers = Pke_New<VkFramebuffer>(swapchainLength);
+ swapchainFramebuffers = pk_new<VkFramebuffer>(swapchainLength);
+ renderImageFramebuffers = pk_new<VkFramebuffer>(swapchainLength);
VkFramebufferCreateInfo framebufferInfo;
framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
@@ -2183,7 +2182,7 @@ void UpdateDebugGraphicsPipeline() {
vkDescriptorSetAllocateInfo.descriptorSetCount = MAX_FRAMES_IN_FLIGHT;
vkDescriptorSetAllocateInfo.pSetLayouts = descriptorSets;
- pkeDebugHitbox.vkDescriptorSets = Pke_New<VkDescriptorSet>(MAX_FRAMES_IN_FLIGHT);
+ pkeDebugHitbox.vkDescriptorSets = pk_new<VkDescriptorSet>(MAX_FRAMES_IN_FLIGHT);
for (long i = 0; i < MAX_FRAMES_IN_FLIGHT; ++i) {
pkeDebugHitbox.vkDescriptorSets[i] = VkDescriptorSet{};
}
@@ -2474,14 +2473,14 @@ void DestroySwapchain() {
for (long i = 0; i < swapchainLength; ++i) {
vkDestroyFramebuffer(vkDevice, renderImageFramebuffers[i], vkAllocator);
}
- Pke_Delete<VkFramebuffer>(renderImageFramebuffers, swapchainLength);
+ pk_delete<VkFramebuffer>(renderImageFramebuffers, swapchainLength);
renderImageFramebuffers = CAFE_BABE(VkFramebuffer);
}
if (swapchainFramebuffers != nullptr && swapchainFramebuffers != CAFE_BABE(VkFramebuffer)) {
for (long i = 0; i < swapchainLength; ++i) {
vkDestroyFramebuffer(vkDevice, swapchainFramebuffers[i], vkAllocator);
}
- Pke_Delete<VkFramebuffer>(swapchainFramebuffers, swapchainLength);
+ pk_delete<VkFramebuffer>(swapchainFramebuffers, swapchainLength);
swapchainFramebuffers = CAFE_BABE(VkFramebuffer);
}
if (renderImageViews!= nullptr && renderImageViews != CAFE_BABE(VkImageView)) {
@@ -2495,17 +2494,17 @@ void DestroySwapchain() {
vkDestroyImageView(vkDevice, renderImageViews[i], vkAllocator);
vkDestroyImage(vkDevice, renderImages[i], vkAllocator);
}
- Pke_Delete<VkImageView>(depthImageViews, swapchainLength);
+ pk_delete<VkImageView>(depthImageViews, swapchainLength);
depthImageViews = CAFE_BABE(VkImageView);
- Pke_Delete<VkImage>(depthImages, swapchainLength);
+ pk_delete<VkImage>(depthImages, swapchainLength);
depthImages = CAFE_BABE(VkImage);
- Pke_Delete<VkImageView>(colorImageViews, swapchainLength);
+ pk_delete<VkImageView>(colorImageViews, swapchainLength);
colorImageViews = CAFE_BABE(VkImageView);
- Pke_Delete<VkImage>(colorImages, swapchainLength);
+ pk_delete<VkImage>(colorImages, swapchainLength);
colorImages = CAFE_BABE(VkImage);
- Pke_Delete<VkImageView>(renderImageViews, swapchainLength);
+ pk_delete<VkImageView>(renderImageViews, swapchainLength);
renderImageViews = CAFE_BABE(VkImageView);
- Pke_Delete<VkImage>(renderImages, swapchainLength);
+ pk_delete<VkImage>(renderImages, swapchainLength);
renderImages = CAFE_BABE(VkImage);
vkFreeMemory(vkDevice, depthImagesMemory, vkAllocator);
vkFreeMemory(vkDevice, colorImagesMemory, vkAllocator);
@@ -2515,9 +2514,9 @@ void DestroySwapchain() {
for (long i = 0; i < swapchainLength; ++i) {
vkDestroyImageView(vkDevice, swapchainImageViews[i], vkAllocator);
}
- Pke_Delete<VkImageView>(swapchainImageViews, swapchainLength);
+ pk_delete<VkImageView>(swapchainImageViews, swapchainLength);
swapchainImageViews = CAFE_BABE(VkImageView);
- Pke_Delete<VkImage>(swapchainImages, swapchainLength);
+ pk_delete<VkImage>(swapchainImages, swapchainLength);
swapchainImages = CAFE_BABE(VkImage);
}
vkDestroySwapchainKHR(vkDevice, vkSwapchainKHR, vkAllocator);
@@ -2568,8 +2567,8 @@ void FramebufferResizeCallback(GLFWwindow *window, int width, int height) {
void CreateWindow(PKEWindowProperties wp) {
if (vkInstance != nullptr) return;
- MemBkt_Vulkan = Pke_BeginTransientBucket();
- vulkanAllocs = Pke_New<DynArray<pke_vkAllocData>>(MemBkt_Vulkan);
+ MemBkt_Vulkan = pk_bucket_create("vulkan", PK_DEFAULT_BUCKET_SIZE, false);
+ vulkanAllocs = pk_new<DynArray<pke_vkAllocData>>(MemBkt_Vulkan);
new (vulkanAllocs) DynArray<pke_vkAllocData>(MemBkt_Vulkan);
vulkanAllocs->Reserve(2048);
glfwInit();
@@ -2602,7 +2601,7 @@ void DestroyWindow() {
DestroySwapchain();
vkDestroyDescriptorPool(vkDevice, pkeDebugHitbox.vkDescriptorPool, vkAllocator);
- Pke_Delete<VkDescriptorSet>(pkeDebugHitbox.vkDescriptorSets, MAX_FRAMES_IN_FLIGHT);
+ pk_delete<VkDescriptorSet>(pkeDebugHitbox.vkDescriptorSets, MAX_FRAMES_IN_FLIGHT);
vkDestroyBuffer(vkDevice, pkeDebugHitbox.indexBuffer, vkAllocator);
vkDestroyBuffer(vkDevice, pkeDebugHitbox.uvBuffer, vkAllocator);
@@ -2654,7 +2653,7 @@ void DestroyWindow() {
glfwTerminate();
vulkanAllocs->~DynArray();
- Pke_EndTransientBucket(MemBkt_Vulkan);
+ pk_bucket_destroy(MemBkt_Vulkan);
}
VkShaderModule UploadShader(AssetHandle handle) {