Fix a number of asserts hit by latest tests

Test: dEQP-VK.pipeline.*.device_index_as_view_index.*
Test: dEQP-VK.image.host_image_copy.*_remaining_layers
Change-Id: Ifd223265430903f3bb139e46721cb231ceaa0e00
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/75568
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/Device/Context.cpp b/src/Device/Context.cpp
index ee753ba..3d289f9 100644
--- a/src/Device/Context.cpp
+++ b/src/Device/Context.cpp
@@ -1317,6 +1317,7 @@
 	    ~(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT |
 	      VK_PIPELINE_CREATE_DERIVATIVE_BIT |
 	      VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT |
+	      VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT |
 	      VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT |
 	      VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT |
 	      VK_PIPELINE_CREATE_LIBRARY_BIT_KHR |
diff --git a/src/Vulkan/VkImage.cpp b/src/Vulkan/VkImage.cpp
index cc17cf7..6e0a0e5 100644
--- a/src/Vulkan/VkImage.cpp
+++ b/src/Vulkan/VkImage.cpp
@@ -645,7 +645,9 @@
 	VkDeviceSize srcLayerSize = memoryIsSource ? memorySlicePitchBytes : imageLayerSize;
 	VkDeviceSize dstLayerSize = memoryIsSource ? imageLayerSize : memorySlicePitchBytes;
 
-	for(uint32_t i = 0; i < imageSubresource.layerCount; i++)
+	const uint32_t layerCount = imageSubresource.layerCount == VK_REMAINING_ARRAY_LAYERS ?
+		arrayLayers - imageSubresource.baseArrayLayer : imageSubresource.layerCount;
+	for(uint32_t i = 0; i < layerCount; i++)
 	{
 		const uint8_t *srcLayerMemory = srcMemory;
 		uint8_t *dstLayerMemory = dstMemory;
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 09562eb..3276759 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -691,7 +691,6 @@
 		case VK_STRUCTURE_TYPE_MAX_ENUM:  // TODO(b/176893525): This may not be legal. dEQP tests that this value is ignored.
 			break;
 		default:
-			UNSUPPORTED("curExtension->sType: %s", vk::Stringify(curExtension->sType).c_str());
 			break;
 		}
 		curExtension = reinterpret_cast<VkBaseOutStructure *>(curExtension->pNext);