未分配-CoreValidation-DrawState-InvalidImageLayout
UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout
我正在尝试使用 uimage2D 在 glsl 中使用图像。
layout (binding = 0,rgba32ui)uniform writeonly uimage2D image;
void main(){
imageSize(image);
}
对于这段代码我得到错误
validation layer: Validation Error: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x30a8448, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | Submitted command buffer expects VkImage 0x7c45730000000006[] (subresource: aspectMask 0x1 array layer 0, mip level 0) to be in layout VK_IMAGE_LAYOUT_GENERAL--instead, current layout is VK_IMAGE_LAYOUT_UNDEFINED.
错误是因为 imageSize(image)
.
我已将 ImageLayout 声明为 VK_IMAGE_LAYOUT_GENERAL
,但我仍然收到此错误。
VkDescriptorImageInfo imageInfo{};
imageInfo.imageLayout =VK_IMAGE_LAYOUT_GENERAL;
imageInfo.imageView = textureImageView;
imageInfo.sampler = textureSampler;
什么可能导致此错误?
VkDescriptorImageInfo
不“声明”任何东西。它只是通知 driver 您将使用哪种布局。错误正是这样说的;你骗了 driver。你告诉它你会在 VK_IMAGE_LAYOUT_GENERAL
布局中给它图像,但是当它实际被采样时它实际上发现它在不同的布局中。
您需要通过管道障碍更改图像布局。
我正在尝试使用 uimage2D 在 glsl 中使用图像。
layout (binding = 0,rgba32ui)uniform writeonly uimage2D image;
void main(){
imageSize(image);
}
对于这段代码我得到错误
validation layer: Validation Error: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x30a8448, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | Submitted command buffer expects VkImage 0x7c45730000000006[] (subresource: aspectMask 0x1 array layer 0, mip level 0) to be in layout VK_IMAGE_LAYOUT_GENERAL--instead, current layout is VK_IMAGE_LAYOUT_UNDEFINED.
错误是因为 imageSize(image)
.
我已将 ImageLayout 声明为 VK_IMAGE_LAYOUT_GENERAL
,但我仍然收到此错误。
VkDescriptorImageInfo imageInfo{};
imageInfo.imageLayout =VK_IMAGE_LAYOUT_GENERAL;
imageInfo.imageView = textureImageView;
imageInfo.sampler = textureSampler;
什么可能导致此错误?
VkDescriptorImageInfo
不“声明”任何东西。它只是通知 driver 您将使用哪种布局。错误正是这样说的;你骗了 driver。你告诉它你会在 VK_IMAGE_LAYOUT_GENERAL
布局中给它图像,但是当它实际被采样时它实际上发现它在不同的布局中。
您需要通过管道障碍更改图像布局。