|
@@ -1243,7 +1243,7 @@ static SDL_bool VULKAN_FindMemoryTypeIndex(VULKAN_RenderData *rendererData, uint
|
|
|
}
|
|
|
|
|
|
if (memoryTypeIndex >= rendererData->physicalDeviceMemoryProperties.memoryTypeCount) {
|
|
|
- SDL_SetError("[Vulkan] Unable to find memory type for allocation.");
|
|
|
+ SDL_SetError("[Vulkan] Unable to find memory type for allocation");
|
|
|
return SDL_FALSE;
|
|
|
}
|
|
|
*memoryTypeIndexOut = memoryTypeIndex;
|
|
@@ -1654,7 +1654,7 @@ static VkResult VULKAN_CreateDeviceResources(SDL_Renderer *renderer, SDL_Propert
|
|
|
renderer->output_colorspace == SDL_COLORSPACE_HDR10) {
|
|
|
rendererData->supportsEXTSwapchainColorspace = VULKAN_InstanceExtensionFound(rendererData, VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME);
|
|
|
if (!rendererData->supportsEXTSwapchainColorspace) {
|
|
|
- return SDL_SetError("[Vulkan] Using HDR output but %s not supported.", VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME);
|
|
|
+ return SDL_SetError("[Vulkan] Using HDR output but %s not supported", VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2441,9 +2441,9 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
|
|
|
/* Check that we have VK_KHR_sampler_ycbcr_conversion support */
|
|
|
if (!rendererData->supportsKHRSamplerYCbCrConversion) {
|
|
|
- SDL_free(textureData);
|
|
|
return SDL_SetError("[Vulkan] YUV textures require a Vulkan device that supports VK_KHR_sampler_ycbcr_conversion");
|
|
|
}
|
|
|
+
|
|
|
VkSamplerYcbcrConversionCreateInfoKHR samplerYcbcrConversionCreateInfo = { 0 };
|
|
|
samplerYcbcrConversionCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR;
|
|
|
|
|
@@ -2464,9 +2464,9 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
case SDL_MATRIX_COEFFICIENTS_BT2020_NCL:
|
|
|
case SDL_MATRIX_COEFFICIENTS_BT2020_CL:
|
|
|
samplerYcbcrConversionCreateInfo.ycbcrModel = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR;
|
|
|
+ break;
|
|
|
default:
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
- return SDL_SetError("[Vulkan] Unsupported Ycbcr colorspace.\n");
|
|
|
+ return SDL_SetError("[Vulkan] Unsupported Ycbcr colorspace: %d", SDL_COLORSPACEMATRIX(texture->colorspace));
|
|
|
}
|
|
|
samplerYcbcrConversionCreateInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
|
samplerYcbcrConversionCreateInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
@@ -2509,8 +2509,7 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
|
|
|
result = vkCreateSamplerYcbcrConversionKHR(rendererData->device, &samplerYcbcrConversionCreateInfo, NULL, &textureData->samplerYcbcrConversion);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
- return SDL_SetError("[Vulkan] vkCreateSamplerYcbcrConversionKHR %s.\n", SDL_Vulkan_GetResultString(result));
|
|
|
+ return SDL_SetError("[Vulkan] vkCreateSamplerYcbcrConversionKHR %s", SDL_Vulkan_GetResultString(result));
|
|
|
}
|
|
|
|
|
|
/* Also create VkSampler object which we will need to pass to the PSO as an immutable sampler */
|
|
@@ -2534,16 +2533,14 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
samplerCreateInfo.pNext = &samplerYcbcrConversionInfo;
|
|
|
result = vkCreateSampler(rendererData->device, &samplerCreateInfo, NULL, &textureData->samplerYcbcr);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
- return SDL_SetError("[Vulkan] vkCreateSampler %s.\n", SDL_Vulkan_GetResultString(result));
|
|
|
+ return SDL_SetError("[Vulkan] vkCreateSampler %s", SDL_Vulkan_GetResultString(result));
|
|
|
}
|
|
|
|
|
|
/* Allocate special descriptor set layout with samplerYcbcr baked as an immutable sampler */
|
|
|
result = VULKAN_CreateDescriptorSetAndPipelineLayout(rendererData, textureData->samplerYcbcr,
|
|
|
&textureData->descriptorSetLayoutYcbcr, &textureData->pipelineLayoutYcbcr);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
- return SDL_SetError("[Vulkan] VULKAN_CreateDescriptorSetAndPipelineLayout %s.\n", SDL_Vulkan_GetResultString(result));
|
|
|
+ return SDL_SetError("[Vulkan] VULKAN_CreateDescriptorSetAndPipelineLayout %s", SDL_Vulkan_GetResultString(result));
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
@@ -2561,7 +2558,6 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
|
|
|
result = VULKAN_AllocateImage(rendererData, width, height, textureFormat, usage, imageViewSwizzle, externalImage, textureData->samplerYcbcrConversion, &textureData->mainImage);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
SDL_LogError(SDL_LOG_CATEGORY_RENDER, "VULKAN_AllocateImage(): %s\n", SDL_Vulkan_GetResultString(result));
|
|
|
return result;
|
|
|
}
|
|
@@ -2578,7 +2574,6 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
|
|
&textureData->mainFramebuffer,
|
|
|
textureData->mainRenderpasses);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- VULKAN_DestroyTexture(renderer, texture);
|
|
|
SDL_LogError(SDL_LOG_CATEGORY_RENDER, "VULKAN_CreateFramebuffersAndRenderPasses(): %s\n", SDL_Vulkan_GetResultString(result));
|
|
|
return result;
|
|
|
}
|
|
@@ -3223,7 +3218,7 @@ static VkDescriptorPool VULKAN_AllocateDescriptorPool(VULKAN_RenderData *rendere
|
|
|
descriptorPoolCreateInfo.maxSets = SDL_VULKAN_MAX_DESCRIPTOR_SETS;
|
|
|
result = vkCreateDescriptorPool(rendererData->device, &descriptorPoolCreateInfo, NULL, &descriptorPool);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- SDL_SetError("[Vulkan] Unable to allocate descriptor pool vkCreateDescrptorPool: %s.\n", SDL_Vulkan_GetResultString(result));
|
|
|
+ SDL_SetError("[Vulkan] Unable to allocate descriptor pool vkCreateDescrptorPool: %s", SDL_Vulkan_GetResultString(result));
|
|
|
return VK_NULL_HANDLE;
|
|
|
}
|
|
|
|
|
@@ -3309,7 +3304,7 @@ static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULK
|
|
|
result = vkAllocateDescriptorSets(rendererData->device, &descriptorSetAllocateInfo, &descriptorSet);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
/* This should not fail - we are allocating from the front of the descriptor set */
|
|
|
- SDL_SetError("[Vulkan] Unable to allocate descriptor set.");
|
|
|
+ SDL_SetError("[Vulkan] Unable to allocate descriptor set");
|
|
|
return VK_NULL_HANDLE;
|
|
|
}
|
|
|
rendererData->currentDescriptorPoolIndex = currentDescriptorPoolIndex;
|
|
@@ -3488,7 +3483,7 @@ static SDL_bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderComm
|
|
|
&newConstantBuffer);
|
|
|
|
|
|
if (result != VK_SUCCESS) {
|
|
|
- SDL_SetError("[Vulkan] Could not allocate new memory for constant buffer.\n" );
|
|
|
+ SDL_SetError("[Vulkan] Could not allocate new memory for constant buffer" );
|
|
|
return SDL_FALSE;
|
|
|
}
|
|
|
|
|
@@ -3546,7 +3541,7 @@ static SDL_bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderComm
|
|
|
textureSampler = rendererData->samplers[SDL_VULKAN_SAMPLER_LINEAR];
|
|
|
break;
|
|
|
default:
|
|
|
- return SDL_SetError("Unknown scale mode: %d\n", textureData->scaleMode);
|
|
|
+ return SDL_SetError("Unknown scale mode: %d", textureData->scaleMode);
|
|
|
}
|
|
|
|
|
|
if (textureData->mainImage.imageLayout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) {
|
|
@@ -3755,7 +3750,7 @@ static SDL_Surface* VULKAN_RenderReadPixels(SDL_Renderer *renderer, const SDL_Re
|
|
|
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
|
|
|
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
|
|
&readbackBuffer) != VK_SUCCESS) {
|
|
|
- SDL_SetError("[Vulkan] Failed to allocate buffer for readback.");
|
|
|
+ SDL_SetError("[Vulkan] Failed to allocate buffer for readback");
|
|
|
return NULL;
|
|
|
}
|
|
|
|