I'm running some code which uses filament with a vulkan backend on a NVIDIA GeForce RTX 2080 Ti, with debug output enabled, and see log lines like:
Backend feature level: 1
FEngine feature level: 1
This is surprising, given how recent the GPU is.
Looking at the source code for VulkanDriver::getFeatureLevel, it appears that if the driver has a very large maxPerStageDescriptorSamplers, it will get FeatureLevel::FEATURE_LEVEL_1, which doesn't sound right.
This logic was inverted in commit 8cdac431a6d85e09ed9403a2af4ff5f758752ff5. Before that commit, the logic was:
if (imageCubeArray) {
if (supportedSamplerCount >= 31) {
return FeatureLevel::FEATURE_LEVEL_3;
}
return FeatureLevel::FEATURE_LEVEL_2;
}
return FeatureLevel::FEATURE_LEVEL_1;
i.e.: if maxPerStageDescriptorSamplers is big, you get FEATURE_LEVEL_3.
Describe the bug
I'm running some code which uses filament with a vulkan backend on a NVIDIA GeForce RTX 2080 Ti, with debug output enabled, and see log lines like:
Backend feature level: 1 FEngine feature level: 1
This is surprising, given how recent the GPU is.
Looking at the source code for VulkanDriver::getFeatureLevel, it appears that if the driver has a very large maxPerStageDescriptorSamplers, it will get FeatureLevel::FEATURE_LEVEL_1, which doesn't sound right.
This logic was inverted in commit 8cdac431a6d85e09ed9403a2af4ff5f758752ff5. Before that commit, the logic was:
i.e.: if maxPerStageDescriptorSamplers is big, you get FEATURE_LEVEL_3.
Was the change intentional?
Steps to reproduce
Try to instantiate an engine like:
Expected behavior
On a powerful enough GPU, I would expect the logs to say
Logs
Desktop (please complete the following information):
Additional context
I'm working in the Google codebase. I haven't tried compiling externally.