[vulkan] Don't use QFV_CreateImage for resource images

The resource functions assume the requested layers is correct (really,
the lighting code assumes that the resource functions assume such), but
QFV_CreateImage multiplies the layer count by 6 for cube maps (really,
the issue is in QFV_CreateImage, but I want to move away from it
anyway).
This commit is contained in:
Bill Currie 2022-10-27 13:26:00 +09:00
parent c605e50d52
commit 0a3c7b5b76

View file

@ -37,6 +37,26 @@
#include "QF/Vulkan/instance.h" #include "QF/Vulkan/instance.h"
#include "QF/Vulkan/resource.h" #include "QF/Vulkan/resource.h"
static void
create_image (qfv_device_t *device, qfv_resobj_t *image_obj)
{
qfv_devfuncs_t *dfunc = device->funcs;
__auto_type image = &image_obj->image;
VkImageCreateInfo createInfo = {
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, 0,
image->cubemap ? VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : 0,
image->type, image->format, image->extent, image->num_mipmaps,
image->num_layers,
image->samples,
VK_IMAGE_TILING_OPTIMAL,
image->usage,
VK_SHARING_MODE_EXCLUSIVE,
0, 0,
VK_IMAGE_LAYOUT_UNDEFINED,
};
dfunc->vkCreateImage (device->dev, &createInfo, 0, &image->image);
}
int int
QFV_CreateResource (qfv_device_t *device, qfv_resource_t *resource) QFV_CreateResource (qfv_device_t *device, qfv_resource_t *resource)
{ {
@ -76,16 +96,8 @@ QFV_CreateResource (qfv_device_t *device, qfv_resource_t *resource)
break; break;
case qfv_res_image: case qfv_res_image:
{ {
create_image (device, obj);
__auto_type image = &obj->image; __auto_type image = &obj->image;
image->image = QFV_CreateImage (device,
image->cubemap,
image->type,
image->format,
image->extent,
image->num_mipmaps,
image->num_layers,
image->samples,
image->usage);
QFV_duSetObjectName (device, VK_OBJECT_TYPE_IMAGE, QFV_duSetObjectName (device, VK_OBJECT_TYPE_IMAGE,
image->image, image->image,
va (resource->va_ctx, "image:%s:%s", va (resource->va_ctx, "image:%s:%s",