vkCreateDevice() issues

I am new to Vulkan. I am following some tutorials to setup Vulkan basic stuffs. However, when I run my program, the validation layer gives me something like:’

vkCreateSampler: value of pCreateInfo->flags contains flag bits that are note recognized members of VkSamplerCreateFlagBits
vkCreateSampler: value of pCrreateInfo->anisotropyEnable (524657200) is nether VK_TRUE nor VK_FALSE
vkCreateSampler: value of pCreateInfo0>compareEnable (-2) is neither VK_TRUE nor VK_FALSE

I track my codes and find that these infomations come from calling vkCreateDevice(). Although the creation function returns VK_SUCCESS, these validation layer information makes me feel something wrong.
Can somebody help me explain this? Thanks a lot.

Are you sure that’s caused by vkCreateDevice? It sounds more like an error related to the creation of image samplers. Can you post the code of you device creation?

Please initialize variables, before first using, like as:

VkSamplerCreateInfo vkSamplerCreateInfo = {};

vkCreateSampler(..., &vkSamplerCreateInfo ,...);

But, I haven’t used VkSamplerCreateInfo yet. It is weird.

Yep. It looks like something wrong with image samplers. But I haven’t used VkSamplerCreateInfo yet. I run my code in debug mode and set several breakpoints to see when these information pop up. And just after executing vkCreateDevice(), these information pops up in the console.

Can you please post the code which executed vkCreateDevice? otherwise I don’t think we have a chance of understanding the problem :slight_smile:

It occurs to me that you filled out some structure incorrectly. Look how it says “contains flag bits that are note recognized…”

These are my codes for creating device:

QueueFamilyIndices indices = findQueueFamilies(m_physicalDevice);
float queuePriority = 1.0f;
VkDeviceQueueCreateInfo queueCreateInfo = {};
queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueCreateInfo.queueFamilyIndex = indices.graphicsFamily.value();
queueCreateInfo.queueCount = 1;
queueCreateInfo.pQueuePriorities = &queuePriority;

VkPhysicalDeviceFeatures deviceFeatures = {};

VkDeviceCreateInfo createInfo = {};
createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
createInfo.pQueueCreateInfos = &queueCreateInfo; 
createInfo.queueCreateInfoCount = 1; 
createInfo.pEnabledFeatures = &deviceFeatures;
createInfo.enabledExtensionCount = 0;
if (vkCreateDevice(m_physicalDevice, &createInfo, nullptr, &m_device) != VK_SUCCESS)
{
	throw std::runtime_error("failed to create logical device!");
}

Same as https://www.reddit.com/r/vulkan/comments/fjreue/creating_a_device_does_a_lot_more_when_using_c/

Those calls possibly belong to some obsolete implicit layer you have installed.