diff --git a/tests/regres/deqp-patches/deqp-oob-read-fix.patch b/tests/regres/deqp-patches/deqp-oob-read-fix.patch
deleted file mode 100644
index 35335e9..0000000
--- a/tests/regres/deqp-patches/deqp-oob-read-fix.patch
+++ /dev/null
@@ -1,61 +0,0 @@
- .../spirv_assembly/vktSpvAsmImageSamplerTests.cpp   | 21 +++++++++++----------
- 1 file changed, 11 insertions(+), 10 deletions(-)
-
-diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
-index 9b8c1da7a..d81109d33 100644
---- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
-+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp
-@@ -1146,14 +1146,16 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group)
- 	vector<tcu::Vec4>			inputDataBase		(numDataPoints);
- 	for (deUint32 numIdx = 0; numIdx < numDataPoints; ++numIdx)
- 		inputDataBase[numIdx] = tcu::randomVec4(rnd);
-+	// Depth only has 1 component
-+	vector<tcu::Vec4>			inputDataBaseDepth	= inputDataBase;
-+	inputDataBaseDepth.resize(numDataPoints / 4);
- 
- 	for (deUint32 opNdx = 0u; opNdx < READOP_LAST; opNdx++)
- 	{
- 		de::MovePtr<tcu::TestCaseGroup>	readOpGroup	(new tcu::TestCaseGroup(testCtx, getReadOpName((ReadOp)opNdx), ""));
- 
--		vector<tcu::Vec4>				inputData	= inputDataBase;
--		if (opNdx > READOP_IMAGESAMPLE)
--			inputData.resize(numDataPoints / 4u);
-+		const VkFormat					imageFormat			= getImageFormat((ReadOp)opNdx);
-+		const bool						hasDepthComponent	= tcu::hasDepthComponent(vk::mapVkFormat(imageFormat).order);
- 
- 		for (deUint32 descNdx = 0u; descNdx < DESCRIPTOR_TYPE_LAST; descNdx++)
- 		{
-@@ -1176,7 +1178,7 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group)
- 					// optypeimage_mismatch uses an additional level of test hierarchy
- 					const char *groupname = testNdx == TESTTYPE_OPTYPEIMAGE_MISMATCH ? optypeimageFormatMismatchCase[formatIndex] : getTestTypeName((TestType)testNdx);
- 					de::MovePtr<tcu::TestCaseGroup>	typeGroup(new tcu::TestCaseGroup(testCtx, groupname, ""));
--
-+					vector<Vec4>&					inputData = hasDepthComponent && testNdx != TESTTYPE_OPTYPEIMAGE_MISMATCH ? inputDataBaseDepth : inputDataBase;
- 					GraphicsResources				resources;
- 
- 					resources.inputs.push_back(Resource(BufferSp(new Vec4Buffer(inputData)), getVkDescriptorType((DescriptorType)descNdx)));
-@@ -1202,12 +1204,6 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group)
- 
- 					getDefaultColors(defaultColors);
- 
--					if (opNdx > READOP_IMAGESAMPLE)
--					{
--						resources.verifyIO		= verifyDepthCompareResult;
--						resources.inputFormat	= getImageFormat((ReadOp)opNdx);
--					}
--
- 					// If testing for mismatched optypeimage, ignore the rendered
- 					// result (we're only interested to see if we crash)
- 					if (testNdx == TESTTYPE_OPTYPEIMAGE_MISMATCH)
-@@ -1215,6 +1211,11 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group)
- 						resources.verifyIO		= nopVerifyFunction;
- 						resources.inputFormat	= optypeimageFormatMismatchVkFormat[formatIndex];
- 					}
-+					else if (hasDepthComponent)
-+					{
-+						resources.verifyIO		= verifyDepthCompareResult;
-+						resources.inputFormat	= getImageFormat((ReadOp)opNdx);
-+					}
- 
- 					de::MovePtr<tcu::TestCaseGroup> depthGroup (new tcu::TestCaseGroup(testCtx, "depth_property", ""));
- 					for (deUint32 propertyNdx = 0u; propertyNdx < DEPTH_PROPERTY_LAST; propertyNdx++)
diff --git a/tests/regres/deqp.json b/tests/regres/deqp.json
index fc7732b..80e431c 100644
--- a/tests/regres/deqp.json
+++ b/tests/regres/deqp.json
@@ -3,7 +3,6 @@
     "branch": "",
     "sha": "7aaf3aef809de09834ff355f38917d8a16830ec8",
     "patches": [
-        "tests/regres/deqp-patches/deqp-x11.patch",
-        "tests/regres/deqp-patches/deqp-oob-read-fix.patch"
+        "tests/regres/deqp-patches/deqp-x11.patch"
     ]
 }
