|
@@ -5828,6 +5828,7 @@ uint64_t RenderingDeviceDriverVulkan::get_lazily_memory_used() {
|
|
|
|
|
|
uint64_t RenderingDeviceDriverVulkan::limit_get(Limit p_limit) {
|
|
uint64_t RenderingDeviceDriverVulkan::limit_get(Limit p_limit) {
|
|
const VkPhysicalDeviceLimits &limits = physical_device_properties.limits;
|
|
const VkPhysicalDeviceLimits &limits = physical_device_properties.limits;
|
|
|
|
+ uint64_t safe_unbounded = ((uint64_t)1 << 30);
|
|
switch (p_limit) {
|
|
switch (p_limit) {
|
|
case LIMIT_MAX_BOUND_UNIFORM_SETS:
|
|
case LIMIT_MAX_BOUND_UNIFORM_SETS:
|
|
return limits.maxBoundDescriptorSets;
|
|
return limits.maxBoundDescriptorSets;
|
|
@@ -5897,6 +5898,8 @@ uint64_t RenderingDeviceDriverVulkan::limit_get(Limit p_limit) {
|
|
return limits.maxComputeWorkGroupSize[1];
|
|
return limits.maxComputeWorkGroupSize[1];
|
|
case LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Z:
|
|
case LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Z:
|
|
return limits.maxComputeWorkGroupSize[2];
|
|
return limits.maxComputeWorkGroupSize[2];
|
|
|
|
+ case LIMIT_MAX_COMPUTE_SHARED_MEMORY_SIZE:
|
|
|
|
+ return limits.maxComputeSharedMemorySize;
|
|
case LIMIT_MAX_VIEWPORT_DIMENSIONS_X:
|
|
case LIMIT_MAX_VIEWPORT_DIMENSIONS_X:
|
|
return limits.maxViewportDimensions[0];
|
|
return limits.maxViewportDimensions[0];
|
|
case LIMIT_MAX_VIEWPORT_DIMENSIONS_Y:
|
|
case LIMIT_MAX_VIEWPORT_DIMENSIONS_Y:
|
|
@@ -5923,8 +5926,12 @@ uint64_t RenderingDeviceDriverVulkan::limit_get(Limit p_limit) {
|
|
// The Vulkan spec states that built in varyings like gl_FragCoord should count against this, but in
|
|
// The Vulkan spec states that built in varyings like gl_FragCoord should count against this, but in
|
|
// practice, that doesn't seem to be the case. The validation layers don't even complain.
|
|
// practice, that doesn't seem to be the case. The validation layers don't even complain.
|
|
return MIN(limits.maxVertexOutputComponents / 4, limits.maxFragmentInputComponents / 4);
|
|
return MIN(limits.maxVertexOutputComponents / 4, limits.maxFragmentInputComponents / 4);
|
|
- default:
|
|
|
|
- ERR_FAIL_V(0);
|
|
|
|
|
|
+ default: {
|
|
|
|
+#ifdef DEV_ENABLED
|
|
|
|
+ WARN_PRINT("Returning maximum value for unknown limit " + itos(p_limit) + ".");
|
|
|
|
+#endif
|
|
|
|
+ return safe_unbounded;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|