This CL changes SubresourceStorage to have an inline storage for the
per-aspect compressed data and allocate the storage for decompressed
data lazily. This will avoid the large performance cost of allocations
in the happy case.
Bug: dawn:441
Change-Id: Iae1cab87b699cb0e60031abe7306cdff92fbd049
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35521
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
https://dawn-review.googlesource.com/c/dawn/+/34921 introduced a couple
of bugs. This CL fixes them and tests to ensure that the new validation
logic is working correctly.
BUG=dawn:527
Change-Id: Ief01dfda0b97a202bf12ff6aeb0e7a3b84b4b81c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35700
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
This CL adds the Merge() operation to SubresourceStorage() that allows
modifying the content of a storage with another storage.
Bug: dawn:441
Change-Id: I28e3cd7bc967056eda2c387b2b6e164eb370a241
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35520
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Updates BindGroupLayoutEntry to allow for the newly split-up descriptors
that define each binding type in it's own member (buffer, texture, etc.)
The previous style of descriptor is still supported but is deprecated.
For the sake of keeping the scope reasonable, this change does not alter
the BindingInfo structure that's used internally by the various
backends. That will come as a followup.
Bug: dawn:527
Change-Id: I2f301f5f36fa2ce7ff15126ac90dc4c19d5e32ca
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34921
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This CL adds the start of the implementation of a SubresourceStorage<T>
container class that stores per-subresource state in a compressed
fashion. Only the getter methods and Update() modifying methods are
added because they are the first step necessary to test the behavior of
SubresourceStorage.
Subsequent CLs will:
- add the Merge() operation
- move the per-aspect storage to be inlined and avoid allocation of
mData and mLayerCompressed if possible
- use the container where applicable in dawn_native
- (maybe) move clear-state tracking in the backends as part of barrier
tracking
Bug: dawn:441
Change-Id: Ic93e5af16dd705b260424f05e4dc3e0c9f6fbd0a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34464
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Specifically there are build failures due to size_t not being defined
in CachedObject.h, as well as unused functions in ShaderModule.cpp
Change-Id: Ie9bd903660e3563fdf797e716bf55f6fa8627e84
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35103
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
GCC complains that explicit specialization in non-namespace scope
is happening for ObjectContentHasher.
In file included from
../../third_party/dawn/src/dawn_native/ShaderModule.cpp:19:
../../third_party/dawn/src/dawn_native/ObjectContentHasher.h:56:19:
error: explicit specialization in non-namespace scope 'class
dawn_native::ObjectContentHasher'
56 | template <>
| ^
Additionally make RecordIterable constexpr, because it is called
from constexpr methods. GCC complains about this as well:
../../third_party/dawn/src/dawn_native/ObjectContentHasher.h:76:50:
error: call to non-'constexpr' function 'void
dawn_native::ObjectContentHasher::RecordIterable(const IteratorT&) [with
IteratorT = std::__cxx11::basic_string<char>]'
76 | recorder->RecordIterable<std::string>(str);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
Bug: None
Change-Id: I535f5f5e0beded09f105f9871759b617c7384ae0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35003
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephan Hartmann <stha09@googlemail.com>
Initializing SubresourceRange with {x, y, z} type of constructor
was error prone because it was going from the smallest concept
to the larger one instead of being hierarchical.
This CL changes the order of the structure and more importantly
adds a constructor that's in hierarchical order and groups related
members together. For example:
SubresourceRange range(Aspect::Color, {layerStart, layerCount}, {0, mipCount});
It also adds a rename of SingleMipAndLayer in hierarchical order as
SubresourceRange::Single and a helper that gives a full range as
SubresourceRange::Full (it will be used in follow-up CLs).
Bug: dawn:441
Change-Id: I8e71bae1129a96222f7779014575b24b31f5ef7a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35000
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Turns on Tint generation of MSL if UseTintGenerator is on
Bug: dawn:571
Change-Id: Icfa523c36a509baf5da3b2a54152a7fb462c86f4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32303
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Indexed draw buffer (color state) support on ES is not core until 3.2.
Previously, we were failing (asserting) if color state was changed for
a non-zero attachment. This CL compares the state, and only asserts if the
color state actually differs per-attachment.
It also implements a disable_indexed_draw_buffers toggle, which allows a
test to check for the functionality in a platform-independent manner.
BUG=dawn:580, dawn:582
Change-Id: I11c67b0dd72f73e7302c06cad24e8a268fb37a76
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34981
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Turns on Tint generation of SPIR-V if UseTintGenerator is on.
This affects SPIR-V generation for Vulkan, and SPIR-V passed
into SPIRV-Cross to produce GLSL.
It enables DrawTests use_tint_generator for Vulkan/GL where it
should have at least basic support.
Bug: dawn:571
Change-Id: I5df1435bee17572259f5aa3605c4bf19c0136cbc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32302
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This factors code to move parsing of tint::ast::Module to the
frontend. All backends will use this code path when
UseTintGenerator is enabled for both SPIR-V and WGSL ingestion.
To avoid too much code explosion, parsing and validating the
shader is moved into ValidateShaderModuleDescriptor which
returns a result struct that gets passed into creation.
Bug: dawn:571
Change-Id: I598693ef36954fd0056a0744a2a0ebd7cc7d40a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32301
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Use the correct toggle when checking for support.
Also disable a test which tests it unconditionally.
Change-Id: I5f98004865df5e1f4dd6cf6eaa4769444b90e9c2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34980
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Sets IBStripCutValue on the D3D12 render pipeline to the appropriate
value when an index buffer is used. Revises primitive restart tests to
catch when IBStripCutValue is not set.
Bug: dawn:575
Change-Id: I77058d8fe62a52c09641b82d3383a404b7ac6d4a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34340
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
These are guarded by `#if DAWN_USE_NEW_TINT_TRANSFORM_API` preprocessor conditionals, this define will be added to the tint `transform.h` file, atomically switching code paths when the new API lands.
See https://dawn-review.googlesource.com/c/tint/+/34800 for the tint change.
Bug: tint:390
Bug: tint:389
Change-Id: I0f397550f921a46c5bb29b1e71aacfee19ec5dd3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34880
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Dawn's object-based cache creates keys from memory
addresses. These keys cannot be used in a persistent
cache. This change modifies the keys to only
use hashes so they can be re-used for caching
pipelines.
BUG=dawn:549
Change-Id: Ica64d58ae6a3c6266435cfc3f776c820190f7895
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30740
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Aspect and SubresourceRange will be used by the SubresourceStorage
container that will itself be used by TextureBase. Avoid cyclic header
dependencies by moving SubresourceRange and Aspect to their own header.
Also refactors the handling of Aspect to aspect index in preparation for
using it in SubresourceStorage (each Aspect will have a fixed index).
Bug: dawn:441
Change-Id: I66c60f899d236a233ef30a287227610f8b469f88
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34463
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Also implement a workaround for missing glViewportIndexedf().
BUG=dawn:580,dawn:597
Change-Id: I618161ae9750925c1c892123607db84563f0869c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34721
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
These were accidentally left out in the original code and fixes
WebGPU CTS zero init tests with renderable formats on Mac.
Bug: dawn:145
Change-Id: Ied886098408a749c094addb2ceaeb7e8c14938d7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34726
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This CL removes all references to the tint context object which is going
away.
Bug: None
Change-Id: I3b74a8a65b89ba2236cfa71e7551756c8624e2a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34725
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
In WGSL, textureLoad translates to an OpImageFetch without the
combined sampler. In OpenGL, we need to use SPIRV-Cross to insert
a dummy nearest filtering sampler and bind that in the backend.
Bug: dawn:585
Change-Id: I92ae6ad35263d3720e59fa93688ca914a9495a81
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34401
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This CL enable CopyTextureForBrowser to accept options. The first
supported option is flipY, which can be implemented through scale and
offset uniforms.
BUG=dawn:465
Change-Id: Ia90153ee63a50e0e40beb1c13c63764d19a0b809
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34402
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
OpenGL ES doesn't have the glShaderStorageBlockBinding() call, so we
modify the binding decorations set in the shader instead. This requires
plumbing through some more pipeline state at shader translation time.
BUG=dawn:584
Change-Id: Ib7fdb6a7ad1eff1a99d44d55e9d923214affe702
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34400
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Adds in a toggle to control using Tint or SPIRV Cross for reflection.
The current implementation only gets name and stage information via Tint,
backfilling the rest from SPIRV Cross.
Future CLs will fill in the rest of the entry point metadata.
Bug: dawn:578
Change-Id: Iee16b9dbb9a17d4aaa68e5e52e4aa91ee0a62624
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33500
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Renames indexTypeSize to indexFormatSize. I forgot to add the changes
prior to pushing the commit.
Bug: dawn:502
Change-Id: I38f19edc021141c5a5ab57c6220978b7c88b116e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33923
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
In previous internal shader, we draw a just fit-in rectangle to do the
copy. But there is arithmetic precision issues in border pixels when
copy from a large texture.
ANGLE handle the same issue by drawing a large triangle. Dawn adopte the
same idea here
BUG=dawn:465
Change-Id: I2366e28b1e96e7a33116a170023a5138d8c9f770
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33900
Reviewed-by: Shaobo Yan <shaobo.yan@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Shaobo Yan <shaobo.yan@intel.com>
The next commit in spirv-headers contains breaking changes that removes
the provisional ray-tracing extension and add the final version of it.
To ease the roll past that, we first roll just before the breaking
changes.
It required a roll of SPIRV-Tools and SPIRV-Cross to handle
smaller-scale breaking changes.
Also fixes a compilation issue with spirv-headers and SPIRV-Cross having
conflictin SPV_VERSION macros.
Roll third_party/spirv-headers/ 060627f0b..5ab5c9619 (7 commits)
060627f0b0..5ab5c96198
$ git log 060627f0b..5ab5c9619 --date=short --no-merges --format='%ad %ae %s'
2020-11-04 michael.kinsner Reserve additional loop control bit for Intel extension (NoFusionINTEL) (#175)
2020-11-02 4464295+XAMPPRocky Add EmbarkStudios/rust-gpu to vendor list. (#174)
2020-10-23 john Bump revision to 4, for SPIR-V 1.5.
2020-10-19 TobyHector Add SPV_EXT_shader_image_int64 (#170)
2020-10-19 TobyHector Added SPV_KHR_fragment_shading_rate (#172)
2020-10-12 hwguy.siplus Register the Xenia emulator as a generator (#171)
2020-09-27 atyuwen Register the Messiah SPIR-V CodeGen (#169)
Created with:
roll-dep third_party/spirv-headers
Roll third_party/spirv-cross/ 8891bd351..be527632a (67 commits)
8891bd3512..be527632a6
$ git log 8891bd351..be527632a --date=short --no-merges --format='%ad %ae %s'
2020-11-25 comexk spirv_msl: Don't add fixup hooks for builtin variables if they're unused.
2020-11-23 cdavis MSL: Don't mask off inactive bits in ballot masks.
2020-11-20 cdavis MSL: Adjust FragCoord for sample-rate shading.
2020-11-23 post GLSL: Fix buffer_reference with aliased names.
2020-11-23 post GLSL: Emit storage qualifiers for buffer_reference.
2020-11-23 post HLSL: Fix validation with FXC for test.
2020-11-23 post Normalize all internal workaround methods to use spv prefix.
2020-11-21 scribam CMake: Set minimum required version to 3.0
2020-11-18 cdavis MSL: Expand subgroup support.
2020-11-12 git GLSL: Require GL_ARB_vertex_attrib_64bit for double input in pre-4.10
2020-11-14 cdavis MSL: Expose some more features on iOS.
2020-11-11 post MSL: Add missing reference file.
2020-11-11 post Fix switch fallthrough
2020-11-09 git GLSL: Legacy / extension fallbacks for textureSize and texelFetch
2020-10-29 jsikorski MSL: extract global variables from subgroup ballot operations
2020-11-08 post Run format_all.sh.
2020-11-08 post Update texture gather test result.
2020-11-07 git GLSL: Add error checking and extension fallback for textureGather
2020-11-07 git GLSL: Remove unused `lod` argument from legacy_tex_op()
2020-11-05 git GLSL: implement transpose() in GLSL 1.10 / ES 1.00
2020-11-06 git GLSL: Fix round/roundEven for legacy GLSL.
2020-11-05 git GLSL: Fix support for textureLod in legacy vertex shaders
2020-11-06 post MSL: Fix regression in image gather handling.
2020-11-02 cdavis MSL: Support pull-model interpolation on MSL 2.3+.
2020-11-03 git HLSL: Support roundEven() in HLSL SM 4.0 and above
2020-11-03 git HLSL: Add regression test for SM3.0 texture samplers
2020-10-31 git HLSL: Support depth comparison texture sampling in SM 2/3.
2020-11-03 post HLSL: Add option to flatten matrix vertex input semantics.
2020-11-03 post Parser: Don't assume OpTypePointer will always take a SPIRType.
2020-11-02 bill.hollings Syntax and format updates from code review.
2020-11-02 crisserpl2 Updated ref file for subgroups_basicvoteballot.vk.comp
2020-10-31 devsh.graphicsprogramming Fix some bad assumptions about emulating `subgroupBarrier`
2020-10-30 bill.hollings Minor format and typo updates from code review.
2020-10-27 cdavis MSL: Allow Bias and Grad arguments with comparison on Mac in MSL 2.3.
2020-10-30 post GLSL: Fix nonuniformEXT injection.
2020-10-30 atyuwen fixed compile error with -std=c++20
2020-10-30 atyuwen added metal keyworld: "level" (#1501)
2020-10-29 bill.hollings MSL: Support run-time sized image and sampler arrays (GL_EXT_nonuniform_qualifier/SPV_EXT_descriptor_indexing).
2020-10-27 cdavis MSL: Allow framebuffer fetch on Mac in MSL 2.3.
2020-10-27 cdavis MSL: Allow post-depth coverage on Mac in MSL 2.3.
2020-10-27 post Handle case where block is loop header, continue AND break block.
2020-10-14 post GLSL: Support a workaround for loading row-major matrices.
2020-10-20 cdavis MSL: For 2.1+, don't disable rasterization for vertex writes.
2020-10-26 post MSL: Do not use component::x gather for depth2d textures.
2020-10-26 post Update TravisCI python reference.
2020-10-21 cdavis MSL: Cast broadcast booleans to ushort.
2020-10-20 cdavis MSL: Mask ballots passed to Ballot bit ops.
2020-10-20 cdavis MSL: Support vectors with OpGroupNonUniformAllEqual.
2020-10-20 cdavis MSL: Correct definitions of subgroup ballot mask variables.
2020-10-20 cdavis MSL: Don't remove periods from swizzle buffer index exprs.
2020-10-14 cdavis MSL: Handle Offset and Grad operands for 1D-as-2D textures.
2020-10-14 cdavis MSL: Don't use a bitcast for tessellation levels in tesc shaders.
2020-10-14 post GLSL: Use need_transpose when checking for non-native matrix.
2020-10-14 post MSL: Support querying and modifying generated combined sampler suffix.
2020-10-13 cdavis MSL: Fix calculation of atomic image buffer address.
2020-10-13 cdavis MSL: Add missing interlock handling to atomic image buffers.
2020-10-13 cdavis MSL: Support atomic access to images from argument buffers.
2020-09-28 cdavis MSL: Support SPV_EXT_demote_to_helper_invocation for MSL 2.3.
2020-10-08 post Style nits for GL subgroup implementation.
2020-10-08 post Add missing VK variant of the test file.
2020-10-08 post Update GL subgroup test file.
2020-10-08 crisserpl2 Resolved issues 1350, 1351, 1352
2020-09-30 post GLSL: Add support for transform_feedback3 geometry streams.
2020-09-30 post GLSL: Use literal array size for cull/clip array sizes.
2020-09-28 post Work around MSVC warning.
2020-09-28 post Allow flip_vert_y in all relevant stages.
2020-09-22 dsinclair Roll dependencies.
Created with:
roll-dep third_party/spirv-cross
Roll third_party/SPIRV-Tools/ 60ce96e2f..671914c28 (115 commits)
60ce96e2ff..671914c28e
$ git log 60ce96e2f..671914c28 --date=short --no-merges --format='%ad %ae %s'
2020-11-18 greg Fix buffer oob instrumentation for matrix refs (#4025)
2020-11-13 afdx spirv-opt: Set parent when adding basic block (#4021)
2020-11-13 jaebaek spirv-opt: properly preserve DebugValue indexes operand (#4022)
2020-11-11 dneto Use less stack space when validating Vulkan builtins (#4019)
2020-11-05 46493288+sfricke-samsung spirv-val: Fix SPV_KHR_fragment_shading_rate VUID label (#4014)
2020-11-05 46493288+sfricke-samsung spirv-val: Label Layer and ViewportIndex VUIDs (#4013)
2020-11-05 alanbaker Add dead function elimination to -O (#4015)
2020-11-04 jaebaek Add DebugValue for invisible store in single_store_elim (#4002)
2020-11-04 dnovillo Fix SSA re-writing in the presence of variable pointers. (#4010)
2020-11-04 afdx spirv-fuzz: Fixes to pass management (#4011)
2020-11-03 afdx spirv-fuzz: Add support for reining in rogue fuzzer passes (#3987)
2020-11-03 vasniktel spirv-fuzz: Fix assertion failure in FuzzerPassAddCompositeExtract (#3995)
2020-11-03 vasniktel spirv-fuzz: Fix invalid equation facts (#4009)
2020-11-03 vasniktel spirv-fuzz: Fix bugs in TransformationFlattenConditionalBranch (#4006)
2020-11-03 andreperezmaselco.developer spirv-fuzz: Fix bug related to transformation applicability (#3990)
2020-10-30 jaebaek Temporarily add EmptyPass to prevent glslang from failing (#4004)
2020-10-30 Junda.Liu spirv-opt: Add support to prevent functions from being inlined if they have DontInline flag (#3858)
2020-10-29 jaebaek Propagate OpLine to all applied instructions in spirv-opt (#3951)
2020-10-29 bclayton CMake: Add SPIRV_TOOLS_BUILD_STATIC flag (#3910)
2020-10-29 dneto Avoid copying a ref in a loop (#4000)
2020-10-28 justsid spirv-val: Allow the ViewportIndex and Layer built-ins on SPIR-V 1.5 (#3986)
2020-10-28 dnovillo Simplify logic to decide whether CCP modified the IR (#3997)
2020-10-27 jaebaek Add DebugValue for DebugDecl invisible to value assignment (#3973)
2020-10-26 greg Fix bounds check instrumentation to handle 16-bit values (#3983)
2020-10-23 andreperezmaselco.developer spirv-fuzz: Add expand vector reduction transformation (#3869)
2020-10-23 vasniktel spirv-fuzz: Don't replace irrelevant indices in OpAccessChain (#3988)
2020-10-23 vasniktel spirv-fuzz: Add FuzzerPassAddCompositeExtract (#3904)
2020-10-22 afdx spirv-fuzz: Fix mismatch with shrinker step limit (#3985)
2020-10-22 afdx spirv-fuzz: Fix off-by-one error in replayer (#3982)
2020-10-22 afdx spirv-fuzz: Get order right for OpSelect arguments (#3974)
2020-10-22 afdx spirv-fuzz: Do not add synonym-creating loops in dead blocks (#3975)
2020-10-22 afdx spirv-fuzz: Skip OpTypeSampledImage when propagating up (#3976)
2020-10-22 afdx spirv-fuzz: Pass OpUndef in function call if needed (#3978)
2020-10-22 afdx spirv-fuzz: Fix off-by-one in TransformationCompositeConstruct (#3979)
2020-10-22 afdx spirv-fuzz: Tolerate absent ids in data synonym fact management (#3966)
2020-10-21 afdx spirv-fuzz: Fix to id availability (#3971)
2020-10-21 afdx spirv-fuzz: Fix operand types (#3962)
2020-10-21 8729214+jonahryandavis Update SPIRV-Headers revision in DEPS file (#3961)
2020-10-21 afdx spirv-fuzz: Don't flatten conditional if condition is irrelevant (#3944)
2020-10-21 afdx spirv-fuzz: Do not produce OpPhis of type OpTypeSampledImage (#3964)
2020-10-21 afdx spirv-fuzz: Restrict fuzzer pass to reachable blocks (#3970)
2020-10-21 afdx spirv-fuzz: Handle more types when extending OpPhi instructions (#3969)
2020-10-21 afdx spirv-fuzz: Skip early terminator wrappers when merging returns (#3968)
2020-10-21 afdx spirv-fuzz: Avoid irrelevant constants in synonym-creating loops (#3967)
2020-10-21 afdx spirv-fuzz: Skip dead blocks in FuzzerPassAddOpPhiSynonyms (#3965)
2020-10-21 afdx spirv-fuzz: Avoid the type manager when looking for struct types (#3963)
2020-10-20 afdx spirv-fuzz: Fix to TransformationDuplicateRegionWithSelection (#3941)
2020-10-20 afdx spirv-fuzz: Skip OpFunction when replacing irrelevant ids (#3932)
2020-10-20 afdx spirv-fuzz: Use component-wise selectors when flattening conditional branches (#3921)
2020-10-20 TobyHector Add SPV_EXT_shader_image_int64 (#3852)
(...)
2020-10-13 afdx spirv-fuzz: Do not allow creation of constants of block-decorated structs (#3903)
2020-10-13 afdx spirv-fuzz: Fixes related to irrelevant ids (#3901)
2020-10-13 afdx spirv-fuzz: Fix to transformation that adds a synonym via a loop (#3898)
2020-10-13 afdx spirv-fuzz: Fix to duplicate region with selection (#3896)
2020-10-09 afdx spirv-fuzz: Do not expose synonym facts for non-existent ids (#3891)
2020-10-08 afdx spirv-fuzz: Do not add synonyms involving irrelevant ids (#3890)
2020-10-08 afdx spirv-fuzz: Do not replace irrelevant ids that are not in blocks (#3892)
2020-10-08 afdx spirv-fuzz: Wrap OpKill and similar in function calls (#3884)
2020-10-08 dj2 Update val to handle reversed instruction sections. (#3887)
2020-10-06 afdx spirv-fuzz: Replace dead-block terminators with OpKill etc. (#3882)
2020-10-06 vasniktel spirv-fuzz: TransformationPropagateInstructionDown (#3692)
2020-10-06 afdx spirv-fuzz: Transformation to add wrappers for OpKill and similar (#3881)
2020-10-06 afdx spirv-fuzz: Use overflow ids when duplicating regions (#3878)
2020-10-06 vasniktel spirv-fuzz: Fix rvalue references (#3883)
2020-10-02 afdx spirv-fuzz: Avoid using block-decorated structs in transformations (#3877)
2020-10-02 afdx spirv-fuzz: Use overflow ids when inlining functions (#3880)
2020-10-02 jaebaek Debug info preservation in convert-local-access-chains pass (#3835)
2020-10-02 vasniktel spirv-fuzz: Refactor fact manager tests (#3879)
2020-10-02 afdx spirv-fuzz: Integrate spirv-reduce with shrinker (#3849)
2020-10-02 afdx spirv-fuzz: Only recommend passes when a pass had an effect (#3863)
2020-10-02 stefano.milizia00 spirv-fuzz: Merge the return instructions in a function (#3838)
2020-10-01 jaebaek Debug info preservation in redundancy-elimination pass (#3839)
2020-10-01 jaebaek Debug info preservation in if-conversion pass (#3861)
2020-10-01 vasniktel spirv-fuzz: Refactor conditions in the fact manager (#3867)
2020-10-01 vasniktel spirv-fuzz: TransformationWrapRegionInSelection (#3674)
2020-10-01 afdx spirv-fuzz: Enable some passes with high probability (#3860)
2020-10-01 afdx spirv-fuzz: Do not add constants for Block-decorated structs (#3862)
2020-10-01 vasniktel spirv-fuzz: Fix to FuzzerPassFlattenConditionalBranches (#3865)
2020-09-30 vasniktel spirv-fuzz: Fix TransformationRecordSynonymousConstants (#3868)
2020-09-30 afdx spirv-fuzz: Fix flatten conditional branch transformation (#3859)
2020-09-29 afdx spirv-fuzz: Report fresh ids in transformations (#3856)
2020-09-28 dj2 [spirv-dis] Add some context comments to disassembly. (#3847)
2020-09-28 emaxx Fix use-after-move in val/validate.cpp (#3848)
2020-09-26 antonikarp spirv-fuzz: Fix bug in TransformationDuplicateRegionWithSelection (#3819)
2020-09-26 andreperezmaselco.developer spirv-fuzz: Support OpNot bit instruction case (#3841)
2020-09-25 afdx spirv-fuzz: Return IR and transformation context after replay (#3846)
2020-09-24 paulthomson spirv-fuzz: fix test (#3845)
2020-09-24 afdx spirv-fuzz: Use unique_ptr<FactManager> in TransformationContext (#3844)
2020-09-24 ehsannas Start SPIRV-Tools v2020.6
2020-09-24 ehsannas Finalize SPIRV-Tools v2020.5
2020-09-24 ehsannas Update CHANGES
2020-09-24 vasniktel spirv-fuzz: Support dead blocks in TransformationAddSynonym (#3832)
2020-09-24 vasniktel spirv-fuzz: Move IRContext parameter into constructor (#3837)
2020-09-24 Simran-B Add missing backticks around <result-id> (#3840)
2020-09-23 rharrison Validate SPIRV Version number when parsing binary header (#3834)
2020-09-23 stefanomil spirv-fuzz: Create synonym of int constant using a loop (#3790)
2020-09-22 58573781+richard-lunarg Fix compiler error on macOS with XCode12 (#3836)
2020-09-22 vasniktel spirv-fuzz: Handle OpPhis in TransformationInlineFunction (#3833)
2020-09-22 stevenperron Update CHANGES
2020-09-22 afdx spirv-fuzz: Refactor fuzzer, replayer and shrinker (#3818)
Created with:
roll-dep third_party/SPIRV-Tools
Bug: chromium:1153258
Change-Id: I3502579aa3b334a7addaac148e6ec3a8e636150b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34141
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This matches the defaults of webgpu.h and allows its use from inside
dawn_native for the implementations of SwapChain.
Bug: dawn:269
Change-Id: Icfe15f1775e78690fe4fb7b871bd0c0365d444e4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33783
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
A common error when using dynamic offset bindings is to forget to set
the size of the binding, which causes all offsets != 0 to produce an
error. Make the error more explicit when that happens to guide
developers.
Bug: dawn:583
Change-Id: I38a5dfaf3f6756765c7e50cd470ac205b567d00c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33784
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
This also simplifies a bunch of code in backends that was used to handle
getting the indexFormat from the pipeline "late".
Bug: dawn:502
Change-Id: Ibae50c8df21323fd391515f6036552e9fb868d93
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32023
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
This is enough to get all of the sample apps running on a conformant ES 3.1 implementation, such as ANGLE/Vk or NVidia's OpenGL ES Linux driver.
Implements a new opengl::AdapterDiscoveryOptionsES subclass to specify its creation at adapter discovery time.
Adds a "-b opengles" command-line flag to the code samples.
Asserts on a call to glShaderStorageBlockBinding() on ES.
Works around missing indexed draw buffers support by asserting when a non-0 color attachment is specified.
Works around missing glClearTexSubImage() by asserting. :/
These will likely require front-end validation.
BUG=dawn:580
Change-Id: I4a4240ca695a22388c55073fd2aee0323cd4afc9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31000
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
We need the ability to parse the GL version irrespective of
GL extension handling, so pull it out into its own class.
BUG=dawn:580
Change-Id: I620267146159ba8e4fa8cba5f6ebff57e981add0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33540
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
There was a data-race between getting and using the pointer to
mLastSubmittedCommands in WaitForCommandsToBeScheduled and setting it
inside the scheduling handler.
Lock the mutex before calling waitUntilScheduled so that the object
doesn't get destroyed from underneath us.
Bug: chromium:1142024
Change-Id: Iadbf473530342de6d108d39285d723815452ac7c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31260
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
This change is a prerequisite to D3D pipeline caching.
This change introduces:
- Caching interface which enables the cache.
- Helper for backends to load/store blobs to be cached.
- Ability to cache HLSL shaders.
Bug:dawn:549
Change-Id: I2af759882d18b3f45dc63e49dcb6a3caa1be3485
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32305
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This patch adds another way to get DXC DLLs (dxcompiler.dll and
dxil.dll) by searching the default installation path of Windows x64
SDK (C:\Program Files (x86)\Windows Kits\10\\bin\10.0.[version].0\x64)
so that now Dawn can find these two DLLs when Windows SDK is correctly
installed at the default location.
This patch also forces enabling the "use_dxc" toggle when Dawn can
find DXC DLLs and the device is created with "ShaderFloat16" extension
enabled because currently the HLSL shaders with float16_t can only be
compiled with DXC DLLs.
BUG=dawn:402
Change-Id: I410195d9e079f54faebbca71fff77a71f489f08e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33180
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
This will allow us on the Tint side to refactor the transform code to
correctly run the type determiner at the end of transforms, instead of
hacking it into the transform itself.
Bug: tint:308
Change-Id: I4fd5693ec700b2165ce8c08028b09df6cd8591e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33123
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
This helps push for comparing against nullptr more consistently.
Also replaces .Get() == nullptr and .Get() != nullptr with just ==
nullptr and != nullptr.
Bug: dawn:89
Change-Id: I884a4819f97305a73c11bad84391d1d2113ab7e2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32922
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This patch adds an additional check in the initialization of device
on D3D12 backend to ensure that 'use_dxc' is enabled only when Dawn
can load DXC DLLs (dxil.dll and dxcompiler.dll).
BUG=dawn:402
Change-Id: I85bc8698cf54b612244efc3673241f60a9cee209
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/33060
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
This makes refcounting of these objects more automatic to try and
prevent leaks or use-after-frees in the future.
Also removes operator* from RefBase (and Ref) because it is never used
and cannot work in a normal way for ObjectiveC protocols that cannot be
dereferenced.
Bug: dawn:89
Change-Id: I2e3fbfd638e2ba76d8c563f30bc489a384152552
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32161
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
The GN files were incorrectly using mac_min_system_version to refer to
the deployment target. The right variable is mac_deployment_target, and
using mac_min_system_version breaks Chrome's ability to update the
minimum system version without needing to update the deployment target.
Bug: chromium:1148931
Change-Id: I4c49bb24cb6c4293249c5cb26dd8971b863d260c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32720
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
The same query cannot be written twice in same render pass, so each
render pass also need to have its own query availability map.
Update timestamp query to only check the same query overwrite in same
render pass.
Bug: dawn:434
Change-Id: Icb070adf79a3d76c25367675f7432666eb0dd84f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31180
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
Only increments last submitted and last completed serials from the D3D12
backend when commands were submitted to the GPU.
Bug: dawn:119
Change-Id: I01748b7f4ac90443adac4cdef29016184f992e9c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32162
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tint may remap entry point names when translating a shader, so need to
use the Inspector to get the remapped name for calling into DXC/FXC.
Roll third_party/tint/ 1995ddf87..1980095da (1 commit)
https://dawn.googlesource.com/tint/+log/1995ddf876ef..1980095da7f4
$ git log 1995ddf87..1980095da --date=short --no-merges --format='%ad %ae%s'
2020-11-12 rharrison [inspector] Convert GetRemapped to be a pass through
Created with:
roll-dep third_party/tint
BUG=tint:273
Change-Id: I62cdd78334d4b3dacfdd7cf5668917622bc22ea2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32540
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This will allow using the same logic for other kinds of smartpointers,
like NSRef<>
Bug: dawn:89
Change-Id: Idbe08208fdb38b236f52635bc913162e60baf0f0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32160
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This helper function makes the code easier to read because the name
encodes the semantic of the operation compared to the bit-twiddling that
it replaces.
Bug: None
Change-Id: Iab587e04a91cf60acf8920de1f20bb55f3ea3816
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31668
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This removes outstanding TODOs in the creation of the VkSwapChain
by correctly handling imageCount and validation that the surface
supports identity transform and opaque alpha mode.
Bug: dawn:269
Change-Id: Ifbc30a9832a6853731be0460928ddcd4966a1e6a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31560
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This makes a nearly one-to-one mapping between the JS and C APIs, which
benefits projects like Blink and Emscripten.
- JavaScript's `undefined` is equivalent to C `WGPU_STRIDE_UNDEFINED`.
- JavaScript's `0` is equivalent to C `0`.
- To implement the API correctly, Blink must special-case an actual
value coming in from JS that is equal to WGPU_STRIDE_UNDEFINED
(0xFFFF'FFFF), and inject an error.
Keeps but deprecates a reasonable approximation of the old behavior.
Bug: dawn:520
Change-Id: Ie9c992ffab82830090d0dfc3120731e89cd9691c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31140
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit adds a Toggle that switches SPIRV-cross's HLSL generator for
Tint's HLSL writer. New Toggle currently defaults to false.
Bug: dawn:548
Change-Id: I37e238c6ba887efd65727809c8a6919df515a35e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31640
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Enrico Galli <enrico.galli@intel.com>
Previsouly having a ShaderModule with multiple entrypoints with the same
name and different stages was valid in Dawn. However it is disallowed by
the WGSL specification so change Dawn to index the ShaderModule's
entrypoints only by their name (instead of name and stage).
Bug: dawn:216
Change-Id: Id6fc80a03436b008c2f057bd30c70fdf240919e8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31665
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This CL adds sampling of depth-only and stencil-only texture
views on all backends. However, Metal on macOS <= 10.11 will
need a workaround to use separate depth/stencil textures for
each aspect since it is impossible to sample the stencil
aspect of a combined depth/stencil texture.
Also fixes sampling of depth24plus on D3D12 which had an
incomplete check for determining if a TYPELESS format is
necessary.
Bug: dawn:439, dawn:553
Change-Id: Id4991c565f822add200054296714e2dcd330119a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30725
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Like copyTextureCHROMIUM in Chromium, CopyImageBitmapToTexture can use
internal pipeline to do the GPU uploading. But Dawn doesn't support
internal pipeline now.
This patch adds the first internal pipeline for Dawn and add the API
CopyTextureForBrowser to use internal pipeline to do gpu uploading.
The patch integrates very simple wgsl vertex/fragment shaders to do
simple direct blit to verify the whole system works.
BUG=dawn:465
Change-Id: I8b566af38a10eea00f7426c39e752958ef057abd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30960
Commit-Queue: Shaobo Yan <shaobo.yan@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
This should fix the warning triggering when using Dawn in Skia.
Bug: None
Change-Id: I045ebc87f9e8dbff035920fc6eaa409c2b70d0f2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30701
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Some APIs exposed by Dawn are not expected to be fully secured until
after the first Origin Trial of WebGPU. To prevent their usage we add a
new toggle that will be set by default by Chromium. This toggle throws a
validation error when an unsafe API is used.
Bug: chromium:1138528
Change-Id: I831db70bdac5128ebc32d36d55a0eaefc42c1807
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31443
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
The `tint::reader::wgsl::Parser` constructor is being migrated to taking a `tint::Source::File` pointer instead of a string. This help improve error messages by letting them refer to the source file locations.
Bug: tint:282
Change-Id: Ib21351f77fbaa10a07d096b38e51373be68ba424
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31562
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
With some refactoring of the relevant validation code.
Bug: dawn:520
Change-Id: Iedda0f7b1b67c20d3a88f2c4183dcc8eeae2096f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30742
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This solves an issues where when switching swapchains the previous
one was destroyed before the new one was created, doing so detached
itself from the Surface, which in turn made the new swapchain not do
a graceful transition via vkSwapchainCreateInfoKHR::oldSwapchain.
Keeping the reference on the surface makes sure we always have
knowledge of the previous swapchain when replacing it. It requires
re-working the lifetime model of NewSwapChainBase to not require a
call to DetachFromSurface in the destructor, and having the Device
explicitly tell a swapchain it got attached on creation (otherwise
there are ASSERTs firing when swapchain creation fails).
In addition, backends are changed to use a SwapChain::Create method
and fail with a validation error (for now) when the previous swapchain
didn't use the same API.
vulkan::SwapChain is updated to use the previous swapchain's device's
fenced deleter to destroy it which is important in the device
switching tests.
The SwapChainValidationTests are updated because with the lifetime
changes the texture view can be kept alive after the application has
lost the last reference to the wgpu::SwapChain.
TBRing since it was reviewed in a different CL (but for the wrong
branch).
TBR=enga@chromium.orgTBR=senorblanco@chromium.org
Bug: dawn:269
Change-Id: Ie4374b5685af990d68969ab9cd7767e53c287ace
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/31041
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This patch fixes a crash issue when the device is destroyed before
the callback of CreateReady{Render, Compute}Pipeline is called. Now
when the callback is called in DeviceBase::ShutDown(), the cached
pipeline object will also be destroyed before the callback returns.
BUG=dawn:529
TEST=dawn_end2end_tests
Change-Id: I91ec2608b53591d265c0648f5c02daf7fadac85e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30744
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
vkQueuePresentKHR() may return VK_SUBOPTIMAL_KHR when "a swapchain no
longer matches the surface properties exactly, but can still be used to
present to the surface successfully", so it can also be treated as a
valid return value that indicates vkQueuePresentKHR() has returned
successfully.
This patch fixes the crash when we run the dawn_end2end_test
SwapChainTests.ResizingWindowOnly on the latest Intel Vulkan Windows
driver.
BUG=dawn:269
TEST=dawn_end2end_tests
Change-Id: I571ee74ea75b7a7f6fa59c7eebeed87a2429180d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30842
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Changed upstream in:
- https://github.com/gpuweb/gpuweb/pull/1014
- https://github.com/gpuweb/gpuweb/pull/1130
Note that in some of the cases where width==0 || height==0 || depth==0,
this increases the number of linear data bytes required for a copy.
Since this is a corner case, no deprecation logic is added.
Removes a duplicated copy of this logic in TestUtils.cpp.
Bug: dawn:520
Change-Id: I3b3d079c6ef316df7d95ba5c349bf8de4646fa4d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30741
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This CL updates the CMake file to allow building Dawn with WGSL support
enabled. A few other required fixes are included.
Bug: None
Change-Id: I11a09710f0ad075a07e23c44ff884826850655e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30841
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
In Vulkan the swapchain can stop working if the window resizes and
doesn't match the size of the swapchain images anymore. WebGPU
applications might not handle resizes instantly, so if the swapchain
becomes incompatible we give them a temporary texture that we'll then
blit inside the real swapchain texture.
This also handles the case where the application requires more usages
than what the swapchain can support.
In addition, temporary checks are added that fail swapchain creation if
the VkSurface doesn't support BGRA8Unorm which is the only allowed
format for WebGPU swapchains at the moment.
SwapChainTests should now work on Vulkan and are enabled.
Bug: dawn:269
Change-Id: I812c0653125ed86d3a0f8f67347e961c7b207a98
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30700
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
- There are some methods need to know which query indexes are used in
encoders: endOcclusionQuery, endPipelineStatisticsQuery, resolveQuerySet.
- On Vulkan, we also need to use the used query indexes to reset each
queries between uses. And because the reset command must be called
outside render pass, we need to check whether a query index is writen
twice on command encoder and render/compute encoders.
- Add validation on writeTimestamp for duplicate writes at same index.
Bug: dawn:434
Change-Id: I6d00dd91e565d960246b6d01ad434d2d5c095deb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/27561
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
This pulls in the DAWN_UNUSED macro.
Change-Id: Id3551c7835b5177c3715d27a1c43d32c9a272bd7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30520
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Fixes the build on ChromeOS where the #ifdefs there leave some
variables unused.
Bug: none
Change-Id: I7804fd15112e49a6bda1dadcb4137804409d1642
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30463
Commit-Queue: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This patch adds the entry point of CreateReadyComputePipeline in both
dawn_native and dawn_wire.
TODOs:
1. Add more tests in dawn_unittests and dawn_end2end_tests.
2. Put the main logic of creating a pipeline into a separate thread.
BUG=dawn:529
TEST=dawn_end2end_tests
Change-Id: I7edd269a5422a8b85320a7f9173df925decba633
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30060
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
And deprecate using ::Float in the bind group layout for
"shadow textures" in the pipeline (along with a deprecation test).
Adds the ability to be used with DepthComparison only to depth textures,
this could potentially a breaking change if users where doing
depth-comparison on float32 textures but that's not supported in WebGPU.
Bug: dawn:527
Change-Id: Ib28b0443e3002e0aa2811713b9e843c2417e13e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30240
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
This also introduces a per-aspect supportedComponentTypes that exactly
mirrors baseType for now but will contain additional bits in the future
(like DepthComparison for depth textures).
It is also a step towards being able to create single-aspect view of
depth-stencil textures to sample either the depth or the stencil
component.
Bug: dawn:527
Change-Id: I3ab224d07c136c682cc2993b9a8599237d318130
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30103
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Removes validation preventing integer formats from being cleared to
>2^24. Adds a test that clears to the largest values for UINT32 and
SINT32 formats.
Bug: dawn:537
Change-Id: I8aabd36608138725c8ddbbedd50192c0978da99c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30300
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Changes Device::Tick to return a boolean that denotes whether or not
Tick needs to be called again.
Bug: dawn:119
Change-Id: I9d4c7e291536d676b33fc61d652667c1fbff8c62
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29980
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Previously Format::Type was used instead of wgpu::TextureComponentType
so that ::Other could server as a tag value. This was confusing and
almost the single use of ::Other.
In a follow-up CL the format baseType is changed to be a per-aspect
value, and Format::Type. This CL is a self-contained step in that
direction.
Bug: dawn:527
Change-Id: Ida834087f45a8fca17670ffe8ebd4d5c4f1cd423
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30102
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
In follow-up CLs the aspect of texture views becomes more important as
it is used to query the texture format's base type and supported
componenet types.
Previously asking for the AspectInfo for wgpu::TextureAspect::All could
be ambiguous for depth-stencil formats. By using the internal bitfields
the constraint is much more clear that a single bit must be set.
Bug: dawn:527
Change-Id: Iebff40f28c4a6c38ebe5a7cccf62f8ab3363e4e3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30101
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
In follow up CLs additional will be added to the AspectInfo, like the
supported component types.
Also simplify the logic for GetTexelInfo since all aspects are the first
aspects, except stencil which is always stencil8.
Bug: dawn:517
Change-Id: Iebbcb8a7f8fa2c4b7b06f65d6e4e8917c0a85366
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30100
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
And use it to print the driver version at the start of
dawn_end2end_tests. This will help when figuring out issues
happening on CQ but not necessarily locally.
Bug: None
Change-Id: Ibdb9ab8cab53cc1e1cf8a807da53edeca616bed9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29602
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This also removes an unused param from the ValidateSPIRV method.
BUG=dawn:543
Change-Id: I369a8097ef49751cedbe6605989750a292027b6b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29842
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Use QueueBase to track fences in flight and map requests so that they
can be resolved in the order they were added. Before these tasks were
separately tracked in FenceSignalTracker and MapRequestTracker, so tasks
would be resolving out of order.
Bug: dawn:404
Change-Id: I8b58fb72c99f43bc4593f56e08920d48ac506157
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29441
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Natasha Lee <natlee@microsoft.com>
This allows empty scissors, so add a test for it.
This disallows scissor boxes that are bigger than the renderpass
attachment so remove an end2end test for that behavior.
Update the SetScissorRect validation tests.
Bug: dawn:542
Change-Id: I5b8578a4df1b94510a9356bd4007efddf2711588
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29820
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
- Add WriteTimestamp and ResolveQuerySet on Metal
- Enable end2end tests of timestamp query on Metal
- Lazy initialize the distination buffer in ResolveQuerySet
- Update part of end2end tests to test from render pass instead of
command encoder due to we cannot write timestamp on CommandEncoder
without any copy commands on Metal.
Bug: dawn:434
Change-Id: Ie9217e1f5a00bc252d6293ef7521c2e343ba9259
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29020
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Hao Li <hao.x.li@intel.com>
As a side-effect this allows empty viewports which need special handling
in Vulkan because it is not allowed to set width to 0 (but ok to set
height to 0).
Validation tests are updated to cover the new validation checks.
Most of the viewport end2end tests are rewritten because they didn't
pass the new validation.
A new end2end test is added to test various kinds of empty viewports to
cover the extra logic in the Vulkan backend.
Bug: dawn:542
Change-Id: I8bb25612eeed04162a6b942983167eacab3a1906
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29681
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>