mirror of
https://github.com/Kbz-8/Pulse.git
synced 2026-01-11 07:23:35 +00:00
fixing vulkan image view issue
This commit is contained in:
@@ -250,8 +250,6 @@ void VulkanReturnDescriptorSetToPool(VulkanDescriptorSetPool* pool, const Vulkan
|
||||
}
|
||||
}
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
{
|
||||
VulkanComputePass* vulkan_pass = VULKAN_RETRIEVE_DRIVER_DATA_AS(pass, VulkanComputePass*);
|
||||
@@ -426,9 +424,7 @@ void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
vulkan_pass->should_recreate_uniform_descriptor_sets = false;
|
||||
}
|
||||
|
||||
fprintf(stderr, "test device %p, fn %p, vkdevice %p, count %d\n", vulkan_device, vulkan_device->vkUpdateDescriptorSets, vulkan_device->device, write_count);
|
||||
vulkan_device->vkUpdateDescriptorSets(vulkan_device->device, write_count, writes, 0, PULSE_NULLPTR);
|
||||
fprintf(stderr, "end test\n");
|
||||
|
||||
VkDescriptorSet sets[3];
|
||||
sets[0] = vulkan_pass->read_only_descriptor_set->set;
|
||||
|
||||
@@ -140,32 +140,29 @@ PulseImage VulkanCreateImage(PulseDevice device, const PulseImageCreateInfo* cre
|
||||
CHECK_VK_RETVAL(device->backend, vmaCreateImage(vulkan_device->allocator, &image_create_info, &allocation_create_info, &vulkan_image->image, &vulkan_image->allocation, PULSE_NULLPTR), PULSE_ERROR_INITIALIZATION_FAILED, PULSE_NULL_HANDLE);
|
||||
vmaGetAllocationInfo(vulkan_device->allocator, vulkan_image->allocation, &vulkan_image->allocation_info);
|
||||
|
||||
if(create_infos->usage & PULSE_IMAGE_USAGE_STORAGE_READ)
|
||||
{
|
||||
VkImageViewCreateInfo image_view_create_info = { 0 };
|
||||
image_view_create_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||
image_view_create_info.image = vulkan_image->image;
|
||||
image_view_create_info.format = PulseImageFormatToVkFormat[create_infos->format];
|
||||
image_view_create_info.components = SwizzleForFormat(create_infos->format);
|
||||
image_view_create_info.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
image_view_create_info.subresourceRange.baseMipLevel = 0;
|
||||
image_view_create_info.subresourceRange.levelCount = 1;
|
||||
image_view_create_info.subresourceRange.baseArrayLayer = 0;
|
||||
image_view_create_info.subresourceRange.layerCount = layer_count;
|
||||
VkImageViewCreateInfo image_view_create_info = { 0 };
|
||||
image_view_create_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||
image_view_create_info.image = vulkan_image->image;
|
||||
image_view_create_info.format = PulseImageFormatToVkFormat[create_infos->format];
|
||||
image_view_create_info.components = SwizzleForFormat(create_infos->format);
|
||||
image_view_create_info.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
image_view_create_info.subresourceRange.baseMipLevel = 0;
|
||||
image_view_create_info.subresourceRange.levelCount = 1;
|
||||
image_view_create_info.subresourceRange.baseArrayLayer = 0;
|
||||
image_view_create_info.subresourceRange.layerCount = layer_count;
|
||||
|
||||
if(create_infos->type == PULSE_IMAGE_TYPE_CUBE)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_CUBE;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_CUBE_ARRAY)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_3D)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_3D;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_2D_ARRAY)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
|
||||
else
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
||||
if(create_infos->type == PULSE_IMAGE_TYPE_CUBE)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_CUBE;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_CUBE_ARRAY)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_3D)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_3D;
|
||||
else if(create_infos->type == PULSE_IMAGE_TYPE_2D_ARRAY)
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
|
||||
else
|
||||
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
||||
|
||||
CHECK_VK_RETVAL(device->backend, vulkan_device->vkCreateImageView(vulkan_device->device, &image_view_create_info, PULSE_NULLPTR, &vulkan_image->view), PULSE_ERROR_INITIALIZATION_FAILED, PULSE_NULL_HANDLE);
|
||||
}
|
||||
CHECK_VK_RETVAL(device->backend, vulkan_device->vkCreateImageView(vulkan_device->device, &image_view_create_info, PULSE_NULLPTR, &vulkan_image->view), PULSE_ERROR_INITIALIZATION_FAILED, PULSE_NULL_HANDLE);
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
@@ -1,39 +1,41 @@
|
||||
#include <signal.h>
|
||||
#include <backtrace.h>
|
||||
#include <unity/unity.h>
|
||||
|
||||
#include <Pulse.h>
|
||||
|
||||
struct backtrace_state* state = NULL;
|
||||
static size_t trace_count = 0;
|
||||
#ifdef BACKTRACE
|
||||
#include <backtrace.h>
|
||||
struct backtrace_state* state = NULL;
|
||||
static size_t trace_count = 0;
|
||||
|
||||
void ErrorCallback(void* data, const char* msg, int errnum)
|
||||
{
|
||||
(void)data;
|
||||
fprintf(stderr, "Error in backtrace: %s (error %d)\n", msg, errnum);
|
||||
}
|
||||
void ErrorCallback(void* data, const char* msg, int errnum)
|
||||
{
|
||||
(void)data;
|
||||
fprintf(stderr, "Error in backtrace: %s (error %d)\n", msg, errnum);
|
||||
}
|
||||
|
||||
int SymbolCallback(void* data, unsigned long pc, const char* filename, int lineno, const char* function)
|
||||
{
|
||||
(void)data;
|
||||
if(filename && function)
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m %s() from %s:%d\033[1;0m\n", trace_count, pc, function, filename, lineno);
|
||||
else if(function)
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m %s() from unknown:unknown\033[1;0m\n", trace_count, pc, function);
|
||||
else
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m ??\()\033[1;0m\n", trace_count, pc);
|
||||
trace_count++;
|
||||
return 0;
|
||||
}
|
||||
int SymbolCallback(void* data, unsigned long pc, const char* filename, int lineno, const char* function)
|
||||
{
|
||||
(void)data;
|
||||
if(filename && function)
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m %s() from %s:%d\033[1;0m\n", trace_count, pc, function, filename, lineno);
|
||||
else if(function)
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m %s() from unknown:unknown\033[1;0m\n", trace_count, pc, function);
|
||||
else
|
||||
fprintf(stderr, "\t#%zu\033[1;34m 0x%lx\033[1;0m in\033[1;33m ??\()\033[1;0m\n", trace_count, pc);
|
||||
trace_count++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SignalHandler(int sig)
|
||||
{
|
||||
fprintf(stderr, "\n==========================================================\nFatal error: %s.\n<Begin of stack trace>\n", sig == SIGSEGV ? "segmentation fault" : "aborted");
|
||||
trace_count = 0;
|
||||
backtrace_full(state, 0, SymbolCallback, ErrorCallback, NULL);
|
||||
fprintf(stderr, "<End of stack trace>\n==========================================================\n");
|
||||
exit(1);
|
||||
}
|
||||
void SignalHandler(int sig)
|
||||
{
|
||||
fprintf(stderr, "\n==========================================================\nFatal error: %s.\n<Begin of stack trace>\n", sig == SIGSEGV ? "segmentation fault" : "aborted");
|
||||
trace_count = 0;
|
||||
backtrace_full(state, 0, SymbolCallback, ErrorCallback, NULL);
|
||||
fprintf(stderr, "<End of stack trace>\n==========================================================\n");
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void TestBackend();
|
||||
extern void TestDevice();
|
||||
@@ -43,9 +45,11 @@ extern void TestPipeline();
|
||||
|
||||
int main(void)
|
||||
{
|
||||
state = backtrace_create_state(NULL, 1, ErrorCallback, NULL);
|
||||
signal(SIGSEGV, SignalHandler);
|
||||
signal(SIGABRT, SignalHandler);
|
||||
#ifdef BACKTRACE
|
||||
state = backtrace_create_state(NULL, 1, ErrorCallback, NULL);
|
||||
signal(SIGSEGV, SignalHandler);
|
||||
signal(SIGABRT, SignalHandler);
|
||||
#endif
|
||||
|
||||
UNITY_BEGIN();
|
||||
TestBackend();
|
||||
|
||||
@@ -108,6 +108,7 @@ if has_config("vulkan-tests") then
|
||||
if is_plat("linux") then
|
||||
add_packages("libbacktrace")
|
||||
set_extension(".x86_64")
|
||||
add_defines("BACKTRACE")
|
||||
end
|
||||
target_end()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user