mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-12 14:46:08 +00:00
writer/hlsl: Emit for-loops where possible.
Use the new transforms to try and simplify loops into for-loops. Emit loops when the initialiser, condition and continuing are simple enough to do so. Bug: tint:952 Change-Id: I5b3c225b245ffa72996abf6a70f52a9cd25b748e Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/56772 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
@@ -21,7 +21,9 @@
|
||||
#include "src/transform/canonicalize_entry_point_io.h"
|
||||
#include "src/transform/decompose_memory_access.h"
|
||||
#include "src/transform/external_texture_transform.h"
|
||||
#include "src/transform/fold_trivial_single_use_lets.h"
|
||||
#include "src/transform/inline_pointer_lets.h"
|
||||
#include "src/transform/loop_to_for_loop.h"
|
||||
#include "src/transform/manager.h"
|
||||
#include "src/transform/pad_array_elements.h"
|
||||
#include "src/transform/promote_initializers_to_const_var.h"
|
||||
@@ -40,6 +42,12 @@ Hlsl::~Hlsl() = default;
|
||||
Output Hlsl::Run(const Program* in, const DataMap&) {
|
||||
Manager manager;
|
||||
DataMap data;
|
||||
|
||||
// Attempt to convert `loop`s into for-loops. This is to try and massage the
|
||||
// output into something that will not cause FXC to choke or misbehave.
|
||||
manager.Add<FoldTrivialSingleUseLets>();
|
||||
manager.Add<LoopToForLoop>();
|
||||
|
||||
// ZeroInitWorkgroupMemory must come before CanonicalizeEntryPointIO as
|
||||
// ZeroInitWorkgroupMemory may inject new builtin parameters.
|
||||
manager.Add<ZeroInitWorkgroupMemory>();
|
||||
|
||||
Reference in New Issue
Block a user