diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index b0d44ffe4..2596f3d47 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -561,15 +561,12 @@ bool Instance::CreateDevice() { }, vk::PhysicalDeviceFeatures2{ .features{ - .robustBufferAccess = features.robustBufferAccess, .geometryShader = features.geometryShader, - .dualSrcBlend = features.dualSrcBlend, .logicOp = features.logicOp, .depthClamp = features.depthClamp, .largePoints = features.largePoints, .samplerAnisotropy = features.samplerAnisotropy, .fragmentStoresAndAtomics = features.fragmentStoresAndAtomics, - .shaderStorageImageMultisample = features.shaderStorageImageMultisample, .shaderClipDistance = features.shaderClipDistance, }, }, diff --git a/src/video_core/renderer_vulkan/vk_shader_gen.cpp b/src/video_core/renderer_vulkan/vk_shader_gen.cpp index 221e5e97e..9635465d9 100644 --- a/src/video_core/renderer_vulkan/vk_shader_gen.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_gen.cpp @@ -47,7 +47,9 @@ static std::string GetVertexInterfaceDeclaration(bool is_output) { out += R"( out gl_PerVertex { vec4 gl_Position; +#if defined(GL_EXT_clip_cull_distance) float gl_ClipDistance[2]; +#endif }; )"; } @@ -1587,12 +1589,14 @@ void main() { gl_Position = vert_position; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0; +#if defined(GL_EXT_clip_cull_distance) gl_ClipDistance[0] = -vert_position.z; // fixed PICA clipping plane z <= 0 if (enable_clip1) { gl_ClipDistance[1] = dot(clip_coef, vert_position); } else { gl_ClipDistance[1] = 0; } +#endif } )";