Skip to content

Add —preserve-bindings and —preserve-spec-constants#2693

Merged
s-perron merged 1 commit intoKhronosGroup:masterfrom
troughton:preserve-bindings-and-constants
Jul 10, 2019
Merged

Add —preserve-bindings and —preserve-spec-constants#2693
s-perron merged 1 commit intoKhronosGroup:masterfrom
troughton:preserve-bindings-and-constants

Conversation

@troughton
Copy link
Copy Markdown
Contributor

Continuing from #2678, a more complete implementation of flags to preserve all bindings and/or specialisation constants within a SPIR-V module, which can be useful/necessary for reflection or for cross-compilation into other shader languages (e.g. for Metal argument buffers).

@s-perron I've implemented this as an optimiser option rather than a flag specifically for AggressiveDCE. At the moment, I think AggressiveDCE is the only pass that can remove unused bindings/spec-constants; however, if future passes started to do the same I'd imagine we'd want a single flag to control it. Does that sound okay?

I've also enabled the flags by default for HLSL legalisation, since some tools (e.g. dxc perform legalisation by default on HLSL source even when optimisation is disabled, and preserving the bindings/spec-constants in an optimisation-disabled environment seems the right option.

@troughton troughton force-pushed the preserve-bindings-and-constants branch from bdb2463 to 6013097 Compare June 23, 2019 06:39
@s-perron s-perron self-requested a review June 24, 2019 13:18
Copy link
Copy Markdown
Collaborator

@s-perron s-perron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks okay. However, there are two changes:

  1. Do not change any of the default behaviours. They were chosen because that is what the majority of users of DXC that we speak with want. They want to unused resources removed for efficiency reasons.

  2. The should be only 1 way to specific that the unused binding should be preserved. This can be confusing if people set, say, the parameters to the construct to false, but the decorations are preserved. We want to keep the interface simple.

// since the arguments in the constructor are per-pass overrides
// (e.g. we shouldn't strip bindings or spec constants for HLSL legalization).
preserve_bindings_ = preserve_bindings_ || context()->preserve_bindings();
preserve_spec_constants_ = preserve_spec_constants_ || context()->preserve_spec_constants();
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like having two ways of doing the same thing. Either have the options to ADCE or have a flag in the context. I think the flag in the context is a good idea.

// preserve_bindings and preserve_spec_constants here serve as overrides
// for context()->preserve_bindings() and context->preserve_spec_constants(),
// since e.g. when legalizing HLSL we never want to strip bindings or
// specialization constants.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we did all of the work for legalization, we had the specific requirement that we were to remove unused resources. It takes time to bind resources, so if the resource is unused, you can save time by not binding the resource.

Correct me if I am wrong, but removing the binding was also the default behaviour for FXC and DXC when generating DXIL. That should be the default behaviour.

.RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
.RegisterPass(CreateLocalSingleStoreElimPass())
.RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateAggressiveDCEPass(true, true))
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert this and all of the similar changes.

@ehsannas
Copy link
Copy Markdown
Contributor

@s-perron is right. Please don't change the default behavior. Unused bindings are removed by DXC when generating DXIL. And we want to have the similar behavior for the SPIR-V backend. Here is an example. (Notice that only sArr and tArr have bindings regardless of whether or not optimization is performed and regardless of optimization level). I believe this is mainly for efficiency/performance reasons (and I'm not sure if all drivers particularly play nice when there are unused bindings).

@troughton
Copy link
Copy Markdown
Contributor Author

To be clear, what I’ve changed here only disables removing bindings during legalisation. This matches the behaviour of passing -Od to dxc when legalisation is not required, which causes all bindings to be preserved. Optimisation will still strip bindings, and the default behaviour doesn’t change with this patch.

Regardless, I can make the changes you’ve suggested, but it does mean I’ll also need to add the same options to dxc.

@ehsannas
Copy link
Copy Markdown
Contributor

@troughton Oh I may have misunderstood your solution then. Let me take a second look. Thanks

@ehsannas
Copy link
Copy Markdown
Contributor

@troughton I still believe it'd be best not to change the default behavior of the legalization phase due to flows that expect unused bindings to be removed by the legalizer.

In terms of command line options for DXC: We strongly try not to add command line options to DXC unless absolutely necessary. DXC does have a command line option named -Oconfig= which can control the flags that DXC passes to spirv-opt. We should try to leverage this option rather than adding new command line options.

@s-perron
Copy link
Copy Markdown
Collaborator

I think we could use the -Oconfig option. It would be important to make sure the function Optimizer::RegisterPassesFromFlags is able to parse this spirv-opt option that is added.

@troughton troughton force-pushed the preserve-bindings-and-constants branch from 6013097 to 84b5646 Compare June 26, 2019 08:13
@troughton
Copy link
Copy Markdown
Contributor Author

I've made most of the changes you requested. I haven't modified Optimizer:: RegisterPassesFromFlags; to me, that feels like the wrong place to detect these flags; the optimiser doesn't currently have any knowledge of the optimiser flags until later in the pipeline.

I'm not sure of the best approach for this; I can work around it locally by disabling validation and then using a separate invocation to spirv-opt, but we probably don't want people to have to do that in general.

@s-perron s-perron self-requested a review June 28, 2019 14:08
Copy link
Copy Markdown
Collaborator

@s-perron s-perron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm okay with this PR as is.

You can use DXC with -fcgl -Vd, which disables legalization, optimization, and validation. Then run spirv-opt as a separate invocation, as you mentioned.

Any solution that uses -Oconfig in DXC will require DXC to change the way it uses -Oconfig. It only overrides the optimization passes, and not the legalization passes. I don't think we are willing to do that.

We still do not know if many people code their applications the way you do. In general, we hear that the resources should be removed, so I don't think we should add too much code for this workflow. This can change if we hear from more users.

Copy link
Copy Markdown
Collaborator

@s-perron s-perron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to fix up two "shadow variables" that GCC complains about. Also run your code through clang format using clang-format 5.0. This should make the bots happy.

void set_max_id_bound(uint32_t new_bound) { max_id_bound_ = new_bound; }

bool preserve_bindings() const { return preserve_bindings_; }
void set_preserve_bindings(bool preserve_bindings) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GCC complains because preserve_bindings is the name of this parameter and the function above. Can you fix that?

}

bool preserve_spec_constants() const { return preserve_spec_constants_; }
void set_preserve_spec_constants(bool preserve_spec_constants) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shadow variable here too.

@troughton troughton force-pushed the preserve-bindings-and-constants branch from 84b5646 to b281dc4 Compare July 4, 2019 00:15
@s-perron
Copy link
Copy Markdown
Collaborator

I'll fix up the formatting and merge it.

@s-perron s-perron force-pushed the preserve-bindings-and-constants branch from b281dc4 to 55afaa4 Compare July 10, 2019 17:23
Add optimizer options to for preservation of spec constants and variable with
binding decorations.  They are to be preserved even if they are unused.
@s-perron s-perron force-pushed the preserve-bindings-and-constants branch from 55afaa4 to ec5bd04 Compare July 10, 2019 17:27
@s-perron s-perron merged commit cd153db into KhronosGroup:master Jul 10, 2019
dneto0 pushed a commit to dneto0/SPIRV-Tools that referenced this pull request Sep 14, 2024
* Rolling 7 dependencies

Also updates known_failures and fixes a broken build rule.

Roll third_party/effcee/ b83b58d17..4bef5dbed (2 commits)

google/effcee@b83b58d...4bef5db

$ git log b83b58d17..4bef5dbed --date=short --no-merges --format='%ad %ae %s'
2019-07-08 dneto Require Python 3
2019-07-08 dneto Add Clang warning -Wextra-semi

Roll third_party/glslang/ 4b4b41a..3cea2e5 (29 commits)

KhronosGroup/glslang@4b4b41a...3cea2e5

$ git log 4b4b41a..3cea2e5 --date=short --no-merges --format='%ad %ae %s'
2019-08-02 cepheus Bump revision and give the bots another chance to work.
2019-08-01 rharrison Add in header for uint32_t definition
2019-07-30 rharrison Convert no RTTI rule to be compiler specific
2019-07-28 lryer Fix Clang compiler warning.
2019-07-28 lryer Fix location distribution not in order
2019-07-25 stevenperron Remove execute permission from LICENSE.txt
2019-07-25 lryer Fix memory init issue, to make sure the class members are init in order.
2019-07-23 cepheus Revert "Merge pull request KhronosGroup#1792 from Roy-AMD/automapping-opengl-location"
2019-07-22 alele Fix bugs in missing Builtin decoration for some NV builtins for tessellation control shaders. Fix bug in member remapping.
2019-07-22 cepheus SPV: Update to latest SPIR-V header.
2019-07-18 greg Update spirv-tools and spirv-headers known good.
2019-07-17 cepheus Build: shut up warning to add unnecessary parens.
2019-07-17 alele Fix bug in printing trailing comma when dumping AST for a structure.
2019-07-16 jmacnak Update known good SPIRV-Tools commit
2019-07-15 sparmar Allow unsized view array dimension for non-block perviewNV attributes
2019-07-15 cepheus ESSL: Fix KhronosGroup#1823: Conditions for when derivatives are in compute shader.
2019-07-15 rex.xu OpIsHelperInvocationEXT should declare relevant SPV extension and capability
2019-07-13 cepheus GLSL: Fix KhronosGroup#1833: Don't constant fold integer mix to a float.
2019-07-12 jmacnak spirv: Generate missing SampleMaskOverrideCoverageNV capability op
2019-07-12 rharrison Explicitly remove RTTI in the top-level build config
2019-07-10 aaron.hagan Add support for SPV_KHR_shader_clock
2019-07-10 jbolz Avoid generating 8/16-bit constants when 8/16-bit arithmetic extensions aren't enabled
2019-07-08 alanbaker Test updates
2019-07-08 alanbaker Update SPIRV-Tools revision
2019-07-06 rex.xu Change implementation of gl_SIMDGroupSizeAMD
2019-07-03 cepheus SPV: Fix KhronosGroup#1783: Don't do bounds checking for spec-const-expression size
2019-06-25 jbolz Handle SPIR-V type mismatch when constructing a composite
2019-06-07 lryer code format refine
2019-06-06 lryer Add interface symbol and uniform symbol location auto mapping for OpenGL shader.

Roll third_party/googletest/ 437e1008c..b4961ab1c (60 commits)

google/googletest@437e100...b4961ab

$ git log 437e1008c..b4961ab1c --date=short --no-merges --format='%ad %ae %s'
2019-08-06 absl-team Googletest export
2019-08-05 misterg Googletest export
2019-08-05 misterg Googletest export
2019-08-02 absl-team Googletest export
2019-08-01 absl-team Googletest export
2019-08-01 absl-team Googletest export
2019-07-31 absl-team Googletest export
2019-07-31 absl-team Googletest export
2019-07-31 misterg Googletest export
2019-08-01 guillemglez Fix table formatting in advanced.md
2019-07-09 krystian.kuzniarek adjust a comment to the similar section in advanced.md
2019-07-31 anttsov Update README.md
2019-07-28 krystian.kuzniarek update pre-C++11 paragraphs
2019-07-26 krystian.kuzniarek fix typos
2019-07-26 krystian.kuzniarek fix numbering of ordered lists in Markdown
2019-07-25 krystian.kuzniarek remove trailing whitespaces
2019-07-30 anttsov Update README.md
2019-07-29 absl-team Googletest export
2019-07-29 misterg Googletest export
2019-07-29 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-29 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-11 adam.f.badura Correct CMake to cover Cygwin
2019-07-25 absl-team Googletest export
2019-07-25 absl-team Googletest export
2019-07-18 misterg Googletest export
2019-07-23 rytis.karpuska Fix small errors in primer.md
2019-07-19 chris.baish Moved explanation to single line as well
2019-07-19 chris.baish Moved table to single lines
2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
2019-07-18 krystian.kuzniarek explicitly show overriding to align examples to their comments
2019-07-18 krystian.kuzniarek document a missing parent class
2019-07-18 43465319+ChrisBaish Update primer.md
2019-07-17 misterg remove outdated
2019-07-17 misterg remove outdated
2019-07-17 misterg Preparation for including docs in round-trip with OSS, Manual merge, review and merge docs internal-OSS
2019-07-17 absl-team Googletest export
2019-07-11 adam.f.badura Add missing <functional> include
2019-07-16 misterg Preparation for including docs in round-trip with OSS. Manual review and merge docs internal-OSS
2019-07-16 misterg Preparation for including docs in round-trip with OSS. Manual review and merge docs internal-OSS
2019-07-16 misterg Googletest export
2019-07-15 absl-team Googletest export
2019-07-10 absl-team Googletest export
2019-07-15 misterg Preparation for including docs in round-trip with OSS
2019-07-15 misterg Preparation for including docs in round-trip with OSS
2019-07-15 misterg Preparation for including docs in round-trip with OSS
2019-07-15 misterg Preparation for including docs in round-trip with OSS
2019-07-13 krystian.kuzniarek fix a broken link
2019-07-13 krystian.kuzniarek add missing references to DesignDoc and KnownIssues
2019-07-13 krystian.kuzniarek rename and apply snake_case on KnownIssues.md
2019-07-13 krystian.kuzniarek rename and apply snake_case on FrequentlyAskedQuestions.md
2019-07-13 krystian.kuzniarek rename and apply snake_case on ForDummies.md
2019-07-13 krystian.kuzniarek rename and apply snake_case on Documentation.md
2019-07-13 krystian.kuzniarek rename and apply snake_case on DesignDoc.md
2019-07-13 krystian.kuzniarek rename and apply snake_case on CheatSheet.md
2019-07-10 sam.sobell Fix bad advice in cook book (KhronosGroup#2308)
2019-07-01 cclauss Travis CI: The sudo: tag is now deprecated in Travis CI
2018-01-29 knut.omang Remove / from parameterized test names if base test name is empty

Roll third_party/re2/ e356bd3f8..67bce690d (8 commits)

google/re2@e356bd3...67bce69

$ git log e356bd3f8..67bce690d --date=short --no-merges --format='%ad %ae %s'
2019-07-31 junyer Switch from //... to //:all when building with Bazel.
2019-07-26 junyer Get rid of StringAppendF().
2019-07-26 junyer Get rid of SStringPrintf().
2019-07-25 junyer Oops, missed a couple.
2019-07-25 junyer Don't make the arraysize() macro cast to int.
2019-07-24 junyer One more tweak for Python 3.
2019-07-24 junyer Get the Unicode scripts working with Python 3.
2019-07-21 junyer Update Unicode data to 12.1.0.

Roll third_party/spirv-cross/ 53ab2144b..4ce04480e (79 commits)

KhronosGroup/SPIRV-Cross@53ab214...4ce0448

$ git log 53ab2144b..4ce04480e --date=short --no-merges --format='%ad %ae %s'
2019-08-01 post Fix severe performance issue with invariant expression invalidation.
2019-07-26 cdavis MSL: Unify the get_*_address_space() methods.
2019-07-26 post MSL: Cleanup temporary use with emit_uninitialized_temporary.
2019-07-26 post MSL: Deal with Modf/Frexp where output is access chain to scalar.
2019-07-26 post Do not force temporary unless continue-only for loop dominates.
2019-07-25 post Missed case where DoWhile continue block deals with Phi.
2019-07-25 post Vulkan GLSL: Support disabling samplerless texture function EXT.
2019-07-25 post Workaround MSVC 2013 compiler issues.
2019-07-22 cdavis MSL: Adjust BuiltInWorkgroupId for vkCmdDispatchBase().
2019-07-24 post Fix some typos in comments.
2019-07-24 post Do not attempt to pack types which are already scalar.
2019-07-24 post HLSL query lod cleanups.
2019-07-24 post Do not eagerly invalidate all active variables on a branch.
2019-07-23 post Do not disable temporary forwarding when we suppress usage tracking.
2019-07-23 post Add another test for unpacking without load forwarding.
2019-07-23 post Look at pointee type when unpacking expressions.
2019-07-23 post Fix some warnings when building in MoltenVK.
2019-07-23 post Deal correctly with non-forwarded packed loads.
2019-07-23 post Test CompositeInsert/Extract/VectorShuffle on packed vectors.
2019-07-23 post Add test for array of scalar struct.
2019-07-23 post Recursively pack struct types when we find scalar packed structs.
2019-07-23 post Run format_all.sh.
2019-07-23 post Unpack vector expression in Matrix-Vector multiplies.
2019-07-23 post Test matrix multiplies in more complex scenarios.
2019-07-23 post Test implicit packing of struct members.
2019-07-23 post GLSL/HLSL: Verify member alignment for explicit offset as well.
2019-07-23 post Add tests for struct padding and self-alignment.
2019-07-23 post Use to_unpacked_row_major_expression to unify row-major in MSL/GLSL.
2019-07-23 post Simplify row-major matrix/vector multiplies.
2019-07-23 post Test array of std140 vectors.
2019-07-23 post Add struct size padding tests.
2019-07-22 post Add test for CompositeExtract from row-major loaded vector.
2019-07-22 post Add test for split access chain into row-major matrix.
2019-07-22 post Remove obsolete matrix workaround code.
2019-07-22 post Only transpose unpacked expressions.
2019-07-22 post Deal correctly with complete stores to row_major matrices.
2019-07-22 post Declare correct matrix type when unpacking.
2019-07-22 post Don't forget to register a write to LHS expression in certain case.
2019-07-22 post Deal with swizzled stores to std140 matrices.
2019-07-22 post Fix some row-major column store cases.
2019-07-22 post Fix more stray parens.
2019-07-22 post Fixup stray parent in output.
2019-07-22 post Correctly unpack row-major matrices when storing to LHS.
2019-07-22 post MSL: Add std140 and scalar matrix layouts.
2019-07-22 post MSL: Add std430 matrix access test.
2019-07-22 post MSL: Support storing to row-major column.
2019-07-22 post Tests run clean.
2019-07-19 post Fix unpacking of packed but not remapped types on load.
2019-07-19 post Traverse correct types when checking scalar layout.
2019-07-19 post Deal with scalar layout of entire structs.
2019-07-19 post Pass down row-major state to unpacking functions.
2019-07-19 post Deal with all forms of matrix writes ...
2019-07-19 post Can deal with std140 matrices now.
2019-07-18 post Start considering how to emit physical type ID.
2019-07-18 post Deal more cleanly with matrices and row-major.
2019-07-18 post Reintroduce struct_member_* MSL queries.
2019-07-18 post MSL: Begin rewrite of buffer packing logic.
2019-07-18 cdavis Don't forward uses of an OpIsHelperInvocationEXT op.
2019-07-13 cdavis Support the SPV_EXT_demote_to_helper_invocation extension.
2019-07-17 post Test glsl.std450 more exhaustively.
2019-07-11 cdavis MSL: Support the SPV_INTEL_shader_integer_functions2 extension.
2019-07-11 cdavis Update external repos.
2019-07-12 cdavis Support the SPV_KHR_device_group extension.
2019-07-11 cdavis MSL: Support the SPV_AMD_shader_trinary_minmax extension.
2019-07-12 post Run format_all.sh.
2019-07-12 post Deal correctly with return sign of bitscan operations.
2019-07-10 post MSVC 2015: Workaround bogus warning with move_backwards.
2019-07-10 post MSVC: Fix some warnings in C wrapper.
2019-07-10 cdavis MSL: Use the select() function for OpSelect.
2019-07-10 cdavis Support the SPV_KHR_post_depth_coverage extension.
2019-07-10 cdavis MSL: Handle coherent, volatile, and restrict.
2019-07-11 post GLSL: Need extension to use bitcast on GLSL < 330.
2019-07-11 lifeng.pan Remove unreasonable assertion for OpTypeImage Sampled parameter.
2019-07-10 cdavis MSL: Handle packed matrices.
2019-07-10 cdavis MSL: Fix alignment of packed types.
2019-07-10 post Forget loop variable enables after emitting block chain.
2019-07-10 post MSL: Re-roll array expressions in initializers.
2019-07-09 cdavis MSL: Support scalar block layout.
2019-07-09 post MSVC 2013: Work around another compiler bug with array init.

Roll third_party/spirv-headers/ 29c1114..e4322e3 (2 commits)

KhronosGroup/SPIRV-Headers@29c1114...e4322e3

$ git log 29c1114..e4322e3 --date=short --no-merges --format='%ad %ae %s'
2019-07-14 aaron.hagan Add SPV_KHR_shader_clock to spirv-headers
2019-07-12 michael.kinsner Reserve additional loop control bit for upcoming update to SPV_INTEL_fpga_loop_controls extension

Roll third_party/spirv-tools/ b8ab808..698b56a (43 commits)

KhronosGroup/SPIRV-Tools@b8ab808...698b56a

$ git log b8ab808..698b56a --date=short --no-merges --format='%ad %ae %s'
2019-08-05 afdx Add 'copy object' transformation (KhronosGroup#2766)
2019-08-02 paulthomson fuzz: change output extension and fix usage string (KhronosGroup#2778)
2019-08-01 geoff Remove extra ';' after member function definition. (KhronosGroup#2780)
2019-07-31 zoddicus Update WebGPU validation rules of OpAtomic*s (KhronosGroup#2777)
2019-07-31 alanbaker Treat access chain indexes as signed in SROA (KhronosGroup#2776)
2019-07-30 dneto Add pass to inject code for robust-buffer-access semantics (KhronosGroup#2771)
2019-07-30 zoddicus Update OpMemoryBarriers rules for WebGPU (KhronosGroup#2775)
2019-07-30 dneto Add opt test fixture method SinglePassRunAndFail (KhronosGroup#2770)
2019-07-29 dneto Element type is const for analysis::Vector,Matrix,RuntimeArray (KhronosGroup#2765)
2019-07-29 dnovillo Protect against out-of-bounds references when folding OpCompositeExtract (KhronosGroup#2774)
2019-07-29 alanbaker Don't move debug or decorations when folding (KhronosGroup#2772)
2019-07-29 zoddicus Update OpControlBarriers rules for WebGPU (KhronosGroup#2769)
2019-07-26 dnovillo Fix KhronosGroup#2609 - Handle out-of-bounds scalar replacements. (KhronosGroup#2767)
2019-07-25 afdx Limit fuzzer tests so that they take less time to run (KhronosGroup#2763)
2019-07-25 stevenperron Fix check for unreachable blocks in merge-return (KhronosGroup#2762)
2019-07-25 afdx Transformation and fuzzer pass to add dead continues (KhronosGroup#2758)
2019-07-24 zoddicus Remove unneeded future imports (KhronosGroup#2739)
2019-07-24 stevenperron Process OpDecorateId in ADCE (KhronosGroup#2761)
2019-07-24 stevenperron Record correct dominators in merge return (KhronosGroup#2760)
2019-07-23 stevenperron SSA rewriter: Don't use trivial phis (KhronosGroup#2757)
2019-07-23 alanbaker Fix block depth rule priority (KhronosGroup#2755)
2019-07-23 alanbaker Case validation with repeated labels (KhronosGroup#2689)
2019-07-22 greg Bindless Instrument: Make init check depend solely on input_init_enabled (KhronosGroup#2753)
2019-07-22 kevin.petit Validate storage class OpenCL environment rules for atomics (KhronosGroup#2750)
2019-07-22 51214578+jmacnak-nv Allow LOD ops in compute shaders with derivative group execution modes (KhronosGroup#2752)
2019-07-18 dneto Document opt::Instruction::InsertBefore methods (KhronosGroup#2751)
2019-07-17 stevenperron Revert "Do not inline OpKill Instructions (KhronosGroup#2713)" (KhronosGroup#2749)
2019-07-16 jbolz For Vulkan, disallow structures containing opaque types (KhronosGroup#2546)
2019-07-16 stevenperron Fix bug in merge return (KhronosGroup#2734)
2019-07-15 51214578+jmacnak-nv Allow ray tracing shaders in inst bindle check pass. (KhronosGroup#2733)
2019-07-12 zoddicus Correctly implement WebGPU related flag exclusions (KhronosGroup#2737)
2019-07-12 greg Remove Common Uniform Elimination Pass (KhronosGroup#2731)
2019-07-12 cwallez BUILD.gn: Add deps and move files for `gn check` (KhronosGroup#2735)
2019-07-11 zoddicus Update execution scope rules for WebGPU (KhronosGroup#2730)
2019-07-11 33432579+alan-baker Extra small storage validation (KhronosGroup#2732)
2019-07-11 jbolz Add validation for SPV_EXT_demote_to_helper_invocation (KhronosGroup#2707)
2019-07-10 52076061+digit-google BUILD.gn: Add targets to build all command-line tools (KhronosGroup#2727)
2019-07-10 stevenperron Change the order branches are simplified in dead branch elim (KhronosGroup#2728)
2019-07-11 troughton Add —preserve-bindings and —preserve-spec-constants (KhronosGroup#2693)
2019-07-10 stevenperron Handle decorations better in some optimizations (KhronosGroup#2716)
2019-07-10 zoddicus Update memory scope rules for WebGPU (KhronosGroup#2725)
2019-07-08 33432579+alan-baker Remove extra semis (KhronosGroup#2717)
2019-07-08 33432579+alan-baker Validate usage of 8- and 16-bit types with only storage capabilities (KhronosGroup#2704)

Created with:
  roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants