diff --git a/tests/regres/deqp-patches/deqp-fsr.patch b/tests/regres/deqp-patches/deqp-fsr.patch
deleted file mode 100644
index 47afd34..0000000
--- a/tests/regres/deqp-patches/deqp-fsr.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From 353f3d1100ed6590bc09a6632ebd5440b197f79f Mon Sep 17 00:00:00 2001
-From: Nicolas Capens <capn@google.com>
-Date: Mon, 13 Jun 2022 11:27:21 -0400
-Subject: [PATCH] Fix regresion in FSR tests
-
-FSR tests were recently repeated few times - for pipeline libraries
-and for secondary command buffers in dynamic rendering cases. As a
-result there were cases where delayed group creation with
-createChildren had another nested call to createChildren. This CL
-modifies code to use only tow delayed group creation calls - for
-renderpass2 and dynamic_rendering sub-groups.
-
-Components: Vulkan
-
-VK-GL-CTS issue: 3760
-
-Affects:
-dEQP-VK.fragment_shading_rate.*
-
-Change-Id: If8da1532c0c924ef812ab055de4c71c5b9ba86b4
----
- .../vktFragmentShadingRateTests.cpp           | 147 +++++++++---------
- 1 file changed, 72 insertions(+), 75 deletions(-)
-
-diff --git a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
-index d8430c10b..344c87a49 100644
---- a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
-+++ b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
-@@ -429,6 +429,7 @@ void createMiscTests(tcu::TestContext& testCtx, tcu::TestCaseGroup* parentGroup)
- void createTests (tcu::TestCaseGroup* group, SharedGroupParams groupParams)
- {
- 	tcu::TestContext& testCtx = group->getTestContext();
-+
- #ifndef CTS_USES_VULKANSC
- 	createBasicTests(testCtx, group, groupParams);
- #endif // CTS_USES_VULKANSC
-@@ -450,91 +451,87 @@ void createTests (tcu::TestCaseGroup* group, SharedGroupParams groupParams)
- 	}
- }
- 
--void createPipelineConstructionTypePermutations(tcu::TestContext& testCtx, tcu::TestCaseGroup* parentGroup, SharedGroupParams baseGroupParams)
-+void createPipelineConstructionTypePermutations(tcu::TestCaseGroup* parentGroup, SharedGroupParams baseGroupParams)
- {
--	parentGroup->addChild(createTestGroup(testCtx, "monolithic", "Monolithic pipeline tests", createTests,
--		SharedGroupParams(
--			new GroupParams
--			{
--				baseGroupParams->useDynamicRendering,
--				baseGroupParams->useSecondaryCmdBuffer,
--				baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
--				vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC,
--			})));
--	parentGroup->addChild(createTestGroup(testCtx, "pipeline_library", "Graphics pipeline library tests", createTests,
--		SharedGroupParams(
--			new GroupParams
--			{
--				baseGroupParams->useDynamicRendering,
--				baseGroupParams->useSecondaryCmdBuffer,
--				baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
--				vk::PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY,
--			})));
--	parentGroup->addChild(createTestGroup(testCtx, "fast_linked_library", "Fast linked graphics pipeline library tests", createTests,
--		SharedGroupParams(
--			new GroupParams
--			{
--				baseGroupParams->useDynamicRendering,
--				baseGroupParams->useSecondaryCmdBuffer,
--				baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
--				vk::PIPELINE_CONSTRUCTION_TYPE_FAST_LINKED_LIBRARY,
--			})));
--}
-+	tcu::TestContext& testCtx = parentGroup->getTestContext();
- 
--} // anonymous
-+	auto constructGroupParams = [](SharedGroupParams baseGroupParams, vk::PipelineConstructionType pipelineConstructionType)
-+	{
-+		return SharedGroupParams(new GroupParams
-+		{
-+			baseGroupParams->useDynamicRendering,
-+			baseGroupParams->useSecondaryCmdBuffer,
-+			baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
-+			pipelineConstructionType,
-+		});
-+	};
- 
--tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
--{
--	de::MovePtr<tcu::TestCaseGroup> mainGroup(new tcu::TestCaseGroup(testCtx, "fragment_shading_rate", "Fragment shading rate tests"));
--	de::MovePtr<tcu::TestCaseGroup> renderpass2Group(new tcu::TestCaseGroup(testCtx, "renderpass2", "Draw using render pass object"));
--	createPipelineConstructionTypePermutations(testCtx, renderpass2Group.get(),
--		SharedGroupParams(
--			new GroupParams
--			{
--				false,																// bool							useDynamicRendering;
--				false,																// bool							useSecondaryCmdBuffer;
--				false,																// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
--				vk::PipelineConstructionType(0)		// placeholder					// PipelineConstructionType		pipelineConstructionType;
--			}));
-+	de::MovePtr<tcu::TestCaseGroup> monolithic(new tcu::TestCaseGroup(testCtx, "monolithic", "Monolithic pipeline tests"));
-+	createTests(monolithic.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC));
-+	parentGroup->addChild(monolithic.release());
- 
- #ifndef CTS_USES_VULKANSC
--	de::MovePtr<tcu::TestCaseGroup> dynamicRenderingGroup(new tcu::TestCaseGroup(testCtx, "dynamic_rendering", "Draw using VK_KHR_dynamic_rendering"));
--	de::MovePtr<tcu::TestCaseGroup> drPrimaryCmdBuffGroup(new tcu::TestCaseGroup(testCtx, "primary_cmd_buff", "Draw using Draw commands are recorded in primary command buffer"));
--	createPipelineConstructionTypePermutations(testCtx, drPrimaryCmdBuffGroup.get(),
--		SharedGroupParams(
--			new GroupParams
--			{
--				true,																// bool							useDynamicRendering;
--				false,																// bool							useSecondaryCmdBuffer;
--				false,																// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
--				vk::PipelineConstructionType(0)		// placeholder					// PipelineConstructionType		pipelineConstructionType;
--			}));
--	de::MovePtr<tcu::TestCaseGroup> drPartialSecondaryCmdBuffGroup(createTestGroup(testCtx, "partial_secondary_cmd_buff", "Secondary command buffer doesn't include begin/endRendering", createTests,
--		SharedGroupParams(
--			new GroupParams
--			{
--				true,																// bool							useDynamicRendering;
--				true,																// bool							useSecondaryCmdBuffer;
--				false,																// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
--				vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC,							// PipelineConstructionType		pipelineConstructionType;
--			})));
--	de::MovePtr<tcu::TestCaseGroup> drCompleteSecondaryCmdBuffGroup(createTestGroup(testCtx, "complete_secondary_cmd_buff", "Secondary command buffer contains completely dynamic renderpass", createTests,
--		SharedGroupParams(
--			new GroupParams
-+	de::MovePtr<tcu::TestCaseGroup> pipelineLibrary(new tcu::TestCaseGroup(testCtx, "pipeline_library",	"Graphics pipeline library tests"));
-+	de::MovePtr<tcu::TestCaseGroup> fastLinkedLibrary(new tcu::TestCaseGroup(testCtx, "fast_linked_library",	"Fast linked graphics pipeline library tests"));
-+
-+	// repeat tests but using different pipeline construction types
-+	createTests(pipelineLibrary.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY));
-+	createTests(fastLinkedLibrary.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_FAST_LINKED_LIBRARY));
-+
-+	parentGroup->addChild(pipelineLibrary.release());
-+	parentGroup->addChild(fastLinkedLibrary.release());
-+#endif // CTS_USES_VULKANSC
-+}
-+
-+#ifndef CTS_USES_VULKANSC
-+void createDynamicRenderingPermutations(tcu::TestCaseGroup* parentGroup)
-+{
-+	tcu::TestContext& testCtx = parentGroup->getTestContext();
-+
-+	auto constructGroupParams = [](bool useSecondaryCmdBuffer, bool secondaryCmdBufferCompletelyContainsDynamicRenderpass)
-+	{
-+		return SharedGroupParams(new GroupParams
- 			{
--				true,																// bool							useDynamicRendering;
--				true,																// bool							useSecondaryCmdBuffer;
--				true,																// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
--				vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC,							// PipelineConstructionType		pipelineConstructionType;
--			})));
--
--	dynamicRenderingGroup->addChild(drPrimaryCmdBuffGroup.release());
--	dynamicRenderingGroup->addChild(drPartialSecondaryCmdBuffGroup.release());
--	dynamicRenderingGroup->addChild(drCompleteSecondaryCmdBuffGroup.release());
-+				true,														// bool							useDynamicRendering;
-+				useSecondaryCmdBuffer,										// bool							useSecondaryCmdBuffer;
-+				secondaryCmdBufferCompletelyContainsDynamicRenderpass,		// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
-+				vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC,					// PipelineConstructionType		pipelineConstructionType;
-+			});
-+	};
-+
-+	de::MovePtr<tcu::TestCaseGroup> drPrimaryCmdBuffGroup			(new tcu::TestCaseGroup(testCtx, "primary_cmd_buff",			"Draw using Draw commands are recorded in primary command buffer"));
-+	de::MovePtr<tcu::TestCaseGroup> drPartialSecondaryCmdBuffGroup	(new tcu::TestCaseGroup(testCtx, "partial_secondary_cmd_buff",	"Secondary command buffer doesn't include begin/endRendering"));
-+	de::MovePtr<tcu::TestCaseGroup> drCompleteSecondaryCmdBuffGroup	(new tcu::TestCaseGroup(testCtx, "complete_secondary_cmd_buff",	"Secondary command buffer contains completely dynamic renderpass"));
-+
-+	// repeat tests but with different location of dynamic rendering commands
-+	createPipelineConstructionTypePermutations(drPrimaryCmdBuffGroup.get(), constructGroupParams(false, false));
-+	createTests(drPartialSecondaryCmdBuffGroup.get(),  constructGroupParams(true, false));
-+	createTests(drCompleteSecondaryCmdBuffGroup.get(), constructGroupParams(true, true));
-+
-+	parentGroup->addChild(drPrimaryCmdBuffGroup.release());
-+	parentGroup->addChild(drPartialSecondaryCmdBuffGroup.release());
-+	parentGroup->addChild(drCompleteSecondaryCmdBuffGroup.release());
-+}
- #endif // CTS_USES_VULKANSC
- 
-+} // anonymous
-+
-+tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
-+{
-+	de::MovePtr<tcu::TestCaseGroup> mainGroup			(new tcu::TestCaseGroup(testCtx, "fragment_shading_rate", "Fragment shading rate tests"));
-+	de::MovePtr<tcu::TestCaseGroup> renderpass2Group	(createTestGroup(testCtx, "renderpass2", "Draw using render pass object",
-+		createPipelineConstructionTypePermutations,
-+		SharedGroupParams(new GroupParams
-+		{
-+			false,																// bool							useDynamicRendering;
-+			false,																// bool							useSecondaryCmdBuffer;
-+			false,																// bool							secondaryCmdBufferCompletelyContainsDynamicRenderpass;
-+			vk::PipelineConstructionType(0)		// placeholder					// PipelineConstructionType		pipelineConstructionType;
-+		})));
- 	mainGroup->addChild(renderpass2Group.release());
-+
- #ifndef CTS_USES_VULKANSC
-+	de::MovePtr<tcu::TestCaseGroup> dynamicRenderingGroup(createTestGroup(testCtx, "dynamic_rendering", "Draw using VK_KHR_dynamic_rendering", createDynamicRenderingPermutations));
- 	mainGroup->addChild(dynamicRenderingGroup.release());
- #endif // CTS_USES_VULKANSC
- 
--- 
-2.36.0.windows.1
-
diff --git a/tests/regres/deqp.json b/tests/regres/deqp.json
index c2e36b3..4bda260 100644
--- a/tests/regres/deqp.json
+++ b/tests/regres/deqp.json
@@ -3,7 +3,6 @@
     "branch": "",
     "sha": "e22ec5fc4cbf4cbba97601433f1c93fb893a200d",
     "patches": [
-        "tests/regres/deqp-patches/deqp-x11.patch",
-        "tests/regres/deqp-patches/deqp-fsr.patch"
+        "tests/regres/deqp-patches/deqp-x11.patch"
     ]
 }
