Control timeline semaphore emulation at runtime, remove extension layer.

* The `VK_LAYER_KHRONOS_timeline_semaphore` extension layer may still be used, but it is no longer required. To simplify maintenance, this change removes IREE's build system helpers and documentation for it.
* The `integrations/tensorflow/e2e/e2e_control_flow_test_tf_iree_vulkan` test required bumping `kMaxInFlightFenceCount` to remain passing when using IREE's new timeline semaphore emulation.
* Updated SwiftShader instructions on Windows now that the Linux-only extension layer is not required with it.
diff --git a/docs/GetStarted/getting_started_linux_vulkan.md b/docs/GetStarted/getting_started_linux_vulkan.md
index 924f123..9ee8c61 100644
--- a/docs/GetStarted/getting_started_linux_vulkan.md
+++ b/docs/GetStarted/getting_started_linux_vulkan.md
@@ -24,11 +24,9 @@
 using [SwiftShader](https://swiftshader.googlesource.com/SwiftShader/) (a high
 performance CPU-based implementation of Vulkan).
 
-Vulkan API version > 1.2 is recommended where available. The
-`VK_KHR_timeline_semaphore` extension (part of Vulkan 1.2) is required, and the
-[Vulkan-ExtensionLayer](https://github.com/KhronosGroup/Vulkan-ExtensionLayer)
-project can be used to enable it for drivers (like SwiftShader) without native
-support.
+Vulkan drivers implementing API version >= 1.2 are recommended. IREE requires
+the `VK_KHR_timeline_semaphore` extension (part of Vulkan 1.2), though it is
+able to emulate it, with performance costs, as necessary.
 
 ## Vulkan Setup
 
@@ -97,39 +95,6 @@
 $ export VK_ICD_FILENAMES=$PWD/build-swiftshader/Linux/vk_swiftshader_icd.json
 ```
 
-### Setting up Vulkan-ExtensionLayer
-
-If you are missing support for `VK_KHR_timeline_semaphore`, setup the extension
-layer.
-
-Build:
-
-```shell
-# -- CMake --
-$ cmake --build build/ --target vk_layer_khronos_timeline_semaphore
-
-# -- Bazel --
-$ bazel build @vulkan_extensionlayer//:libVkLayer_khronos_timeline_semaphore.so @vulkan_extensionlayer//:VkLayer_khronos_timeline_semaphore_json
-```
-
-You should then also set the `VK_LAYER_PATH` environment variable to include the
-path to the built layer:
-
-```shell
-# -- CMake --
-$ export VK_LAYER_PATH=$PWD/build/third_party/vulkan_extensionlayer/layers/:$VK_LAYER_PATH
-
-# -- Bazel --
-$ export VK_LAYER_PATH=$PWD/bazel-bin/external/vulkan_extensionlayer/:$VK_LAYER_PATH
-```
-
-### Setting up the Vulkan Loader
-
-IREE relies on the `VK_KHR_timeline_semaphore` extension. The minimal loader
-version supporting this extenion is `1.1.124`. So if you see failures regarding
-timeline semaphore, in addtion to setting up the extension layer, please also
-check to make sure the loader is at a proper version.
-
 ### Support in Bazel Tests
 
 Bazel tests run in a sandbox, which environment variables may be forwarded to
@@ -140,7 +105,6 @@
 test --test_env="LD_LIBRARY_PATH={PATH_TO_VULKAN_SDK}/x86_64/lib/"
 test --test_env="LD_PRELOAD=libvulkan.so.1"
 test --test_env="VK_ICD_FILENAMES={PATH_TO_IREE}/build-swiftshader/Linux/vk_swiftshader_icd.json"
-test --test_env="VK_LAYER_PATH=$VK_LAYER_PATH:{PATH_TO_IREE}/bazel-bin/external/vulkan_extensionlayer/"
 ```
 
 ## Using IREE's Vulkan Compiler Target and Runtime Driver
@@ -187,9 +151,3 @@
 # -- Bazel --
 $ bazel run iree/samples/vulkan:vulkan_inference_gui
 ```
-
-## What's next?
-
-More documentation coming soon...
-
-<!-- TODO(scotttodd): link to Vulkan debugging, developer guides -->
diff --git a/docs/GetStarted/getting_started_windows_vulkan.md b/docs/GetStarted/getting_started_windows_vulkan.md
index 83e369c..b76b756 100644
--- a/docs/GetStarted/getting_started_windows_vulkan.md
+++ b/docs/GetStarted/getting_started_windows_vulkan.md
@@ -22,13 +22,11 @@
 
 You must have a physical GPU with drivers supporting Vulkan. We support using
 [SwiftShader](https://swiftshader.googlesource.com/SwiftShader/) (a high
-performance CPU-based implementation of Vulkan) on platforms where the
-[Vulkan-ExtensionLayer](https://github.com/KhronosGroup/Vulkan-ExtensionLayer)
-project builds, but it does not currently
-[build on Windows](https://github.com/KhronosGroup/Vulkan-ExtensionLayer/issues/16).
+performance CPU-based implementation of Vulkan).
 
-Vulkan API version > 1.2 is recommended where available, though older versions
-with support for the `VK_KHR_timeline_semaphore` extension may also work.
+Vulkan drivers implementing API version >= 1.2 are recommended. IREE requires
+the `VK_KHR_timeline_semaphore` extension (part of Vulkan 1.2), though it is
+able to emulate it, with performance costs, as necessary.
 
 ## Vulkan Setup
 
@@ -74,23 +72,38 @@
 
 If these tests pass, you can skip down to the next section.
 
-### Setting up the Vulkan Loader
-
-IREE relies on the `VK_KHR_timeline_semaphore` extension. The minimal loader
-version supporting this extenion is `1.1.124`. So if you see failures regarding
-timeline semaphore, please also check to make sure the loader is at a proper
-version.
-
-<!--
 ### Setting up SwiftShader
 
-TODO(scotttodd): Document when SwiftShader supports `VK_KHR_timeline_semaphore`
-                 Or Vulkan-ExtensionLayer builds for Windows
+If your system lacks a physical GPU with compatible Vulkan drivers, or you just
+want to use a software driver for predictable performance, you can set up
+SwiftShader's Vulkan ICD (Installable Client Driver).
 
-### Setting up Vulkan-ExtensionLayer
+IREE has a
+[helper script](https://github.com/google/iree/blob/master/build_tools/third_party/swiftshader/build_vk_swiftshader.sh)
+for building SwiftShader from source using CMake:
 
-TODO(scotttodd): Document when Vulkan-ExtensionLayer builds for Windows
--->
+```shell
+$ bash build_tools/third_party/swiftshader/build_vk_swiftshader.sh
+```
+
+<!-- TODO(scotttodd): Steps to download prebuilt binaries when they exist -->
+
+After building, set the `VK_ICD_FILENAMES` environment variable so the Vulkan
+loader uses the ICD:
+
+```powershell
+> $env:VK_ICD_FILENAMES = Resolve-Path "build-swiftshader/Windows/vk_swiftshader_icd.json"
+```
+
+### Support in Bazel Tests
+
+Bazel tests run in a sandbox, which environment variables may be forwarded to
+using the `--test_env` flag. A user.bazelrc file using SwiftShader looks like
+this (substitute for the `{}` paths):
+
+```
+test --test_env="VK_ICD_FILENAMES={PATH_TO_IREE}/build-swiftshader/Windows/vk_swiftshader_icd.json"
+```
 
 ## Using IREE's Vulkan Compiler Target and Runtime Driver
 
@@ -136,9 +149,3 @@
 # -- Bazel --
 > bazel run iree/samples/vulkan:vulkan_inference_gui
 ```
-
-## What's next?
-
-More documentation coming soon...
-
-<!-- TODO(scotttodd): link to Vulkan debugging, developer guides -->