This change implemented texture subresource on Vulkan. It added a new
function to handle barriers for texture subresource for bind groups.
It also simplified barriers which are set for texture clear and copy.
Before this patch, all barriers are done upon all mip levels and all
array layers. With this patch, barriers are done upon particular mip
level(s) and array layer(s).
We may need more texture subresource end2end tests for copy and clear
opterations. I will visit that later.
Bug: dawn:157
Change-Id: Ie2247c6315326494f2d3736334e84b2867a16c17
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22024
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Roll third_party/SPIRV-Tools/ 95df4c964..d3d89bb90 (11 commits)
95df4c9643..d3d89bb90c
$ git log 95df4c964..d3d89bb90 --date=short --no-merges --format='%ad %ae %s'
2020-05-26 andreperezmaselco.developer spirv-fuzz: Support bit width argument for int and float types (#3378)
2020-05-26 andreperezmaselco.developer Fix function use (#3372)
2020-05-25 jaebaek spirv-val: allow DebugInfoNone for DebugTypeComposite.Size (#3374)
2020-05-25 47594367+rg3igalia Add validation support for ImageGatherBiasLodAMD (#3363)
2020-05-21 38433336+AnastasiaStulova Fix validation failure on OpDecorationGroup (#3365)
2020-05-21 greg Remove deprecated interfaces from instrument passes (#3361)
2020-05-21 jaebaek Preserve debug info in inline pass (#3349)
2020-05-21 dnovillo Reject folding comparisons with unfoldable types. (#3370)
2020-05-21 paulthomson Improve build instructions for fuzzer (#3364)
2020-05-20 stevenperron Add unrolling to performance passes (#3082)
2020-05-20 jaebaek Handle OpConstantNull in ssa-rewrite (#3362)
Roll third_party/glslang/ 2e0f0a051..2b0eafb1d (7 commits)
2e0f0a0517..2b0eafb1de
$ git log 2e0f0a051..2b0eafb1d --date=short --no-merges --format='%ad %ae %s'
2020-05-25 alanbaker Update spirv tools (#2246)
2020-05-21 dneto Reorder member init to match decl order (#2241)
2020-05-21 40001162+alelenv Add support for primitive culling layout qualifier. (#2220)
2020-05-21 rharrison Replace incorrect uint32_t with correct int vars (#2235)
2020-05-21 shuizhuyuanluo Do not build glslang-testsuite when ENABLE_CTEST is disabled (#2240)
2020-05-21 mbechard fix incorrect error when multiple compilation units don't declare layouts (#2238)
2020-05-21 shuizhuyuanluo Add an option to make Exceptions enabled (#2239)
Roll third_party/shaderc/ 00ac5d821..7d2f8c57e (1 commit)
$ git log 00ac5d821..7d2f8c57e --date=short --no-merges --format='%ad %ae %s'
2020-05-21 rharrison Rolling 6 dependencies and update expectations (#1073)
Roll third_party/spirv-cross/ 29ad40e93..61cddd630 (4 commits)
29ad40e93e..61cddd6307
$ git log 29ad40e93..61cddd630 --date=short --no-merges --format='%ad %ae %s'
2020-05-25 post Handle physical pointers in reflection API.
2020-05-22 post GLSL: Improve support for GL_ARB_shader_draw_parameters in desktop GLSL.
2020-05-21 dsinclair Roll SPIRV-Tools, SPIRV-Headers and GLSLang.
2020-05-20 dsinclair Roll dependencies
Roll third_party/spirv-headers/ c0df742ec..ac638f181 (1 commit)
c0df742ec0..ac638f1815
$ git log c0df742ec..ac638f181 --date=short --no-merges --format='%ad %ae %s'
2020-05-20 dneto Update example to use unified1 headers
Roll third_party/tint/ 1bbc1cb2c..537039009 (5 commits)
https://dawn.googlesource.com/tint/+log/1bbc1cb2c122..537039009663
$ git log 1bbc1cb2c..537039009 --date=short --no-merges --format='%ad %ae %s'
2020-05-26 dsinclair Remove NOP.
2020-05-21 dj2 Add if with else continue test.
2020-05-21 dj2 [spirv-writer] Fill out cast code.
2020-05-20 dneto [spirv-reader] Support access chain
2020-05-20 dneto [wgsl-writer] Function var decls don't mention storage class
Roll third_party/vulkan-headers/ e01f13e1f..09531f279 (6 commits)
e01f13e1f7..09531f2793
$ git log e01f13e1f..09531f279 --date=short --no-merges --format='%ad %ae %s'
2020-05-15 oddhack Update for Vulkan-Docs 1.2.141
2020-05-04 devrel Remove advanced notice of header change
2020-05-04 oddhack Update for Vulkan-Docs 1.2.140
2020-04-27 oddhack Update for Vulkan-Docs 1.2.139
2020-04-23 mikew Revert "Export versioned targets for CMake"
2019-11-14 rahul Export versioned targets for CMake
Roll third_party/vulkan-loader/ 50eaecd72..006586926 (8 commits)
50eaecd721..006586926a
$ git log 50eaecd72..006586926 --date=short --no-merges --format='%ad %ae %s'
2020-05-25 shannon Build: Update known-good files for 1.2.141 header
2019-10-28 charles loader: add per-application override layer settings
2020-05-12 charles loader: Preload ICD use its own mutex
2020-05-05 shannon build: Fix `loader_genvk.py` error logging
2020-05-04 shannon build: Update known-good for 1.2.140 header
2020-04-28 petr_kraus docs: Fix typo
2020-04-24 lenny loader: Check for null when creating a queue
2020-04-18 petr_kraus docs: Fix link in interface docs
Roll third_party/vulkan-validation-layers/ 7e1fb3d60..31bdb2d43 (168 commits)
7e1fb3d602..31bdb2d437
$ git log 7e1fb3d60..31bdb2d43 --date=short --no-merges --format='%ad %ae %s'
2020-05-24 s.fricke tests: Add FindSupportedDepthStencilFormat check
2020-05-21 s.fricke layers: Fix False Positive AHB BindBuffer
2020-05-21 mark tests: Add tests cases for CreateInstance status messages
2020-05-19 mark tests: Add tests for the layer message filter
2020-05-19 mark tests: Generalize SetEnvVar for use in any test case
2020-05-19 mark layers: Update layer settings file for message filtering
2020-05-19 mark layers: Enable filtering of VUIDs from layer output
2020-05-15 mark chassis: Add processing for msg id filtering
2020-05-15 mark chassis: Output status message at CreateInstance-time
2020-05-21 mark tests: Avoid deprecated ext test false positive
2020-05-15 mark chassis: Switch enables/disables from struct to array
2020-05-22 mark corechecks: Fix typo in SubpassDescription error msg
2020-05-19 tony tests: Re-enable gpu-av ray tracing test
2020-05-20 tony gpu: Fix ray tracing scratch buffer creation
2020-05-20 s.fricke layers: Label 02498 and 02824
2020-05-20 s.fricke tests: Add samplerAnisotropy check
2020-05-21 jeremy tests: Test transform feedback VUIDs
2020-05-21 jeremy layers: Add transform feedback VUIDs
2020-05-18 tony tests: Test for query reset/begin in different cmdbufs
2020-05-18 tony layers: Fix queries false positives
2020-05-15 s.fricke tests: Add VUID 01431
2020-05-15 s.fricke layers: Add VUID 01431
2020-05-16 s.fricke layers: Fix bug for multiple compute pipelines
2020-05-16 s.fricke layers: Add index to pipeline log messages
2020-05-19 s.fricke tests: Add VK_EXT_pipeline_creation_cache_control
2020-05-16 s.fricke layers: Add VK_EXT_pipeline_creation_cache_control
2020-05-19 s.fricke tests: Remove duplicate feature being set
2020-05-16 s.fricke layers: Add VUID 01207
2020-05-16 s.fricke layers: Add VUID 00926
2020-05-15 s.fricke layers: Add VUID 00764
2020-05-14 tony tests: Add test for validation features
2020-05-13 tony layers: Validate validation features
2020-05-15 s.fricke tests: Add AHB MemoryReq VUIDs
2020-05-14 s.fricke layers: Add AHB MemoryReq VUIDs
2020-05-12 mark docs: Update khronos validation layer doc for form and content
2020-05-05 mark tests: Add spec URL tests
2020-05-05 mark cmake: Add spec build option to tests build
2020-05-04 mark cmake: Add layer option to create annotated spec vuid links
2020-05-02 mark logging: Construct either khronos or annotated spec links
2020-05-05 mark scripts: Use apiversion from json file instead of hardcoded
2020-05-01 mark scripts: Update val stats script to generate 1.2 errormsg URLs
2020-05-13 s.fricke layers: Add attachment index to message
2020-05-13 s.fricke layers: Label YCbCr VUIDs
2020-05-14 mark practices: Warn that debug_report is deprecated
2020-05-14 mark tests: Add deprecated extension test cases
2020-05-14 mark practices: Repair deprecated extension version checks
2020-05-13 tony layers: Fix custom border color check
2020-04-15 tony tests: Tests for custom border color
2020-04-15 tony layers: Validation for VK_EXT_custom_border_color
2020-05-12 jan-harald.fredriksen tests: Add VK_EXT_fragment_density_map validation tests
(...)
2020-04-28 s.fricke layers: Add Support for RP Attachment VUIDs
2020-04-29 s.fricke tests: Add support for vkBindImageMemory2 VUID
2020-04-29 s.fricke layers: Add support for vkBindImageMemory2 VUID
2020-04-27 souravp tests: VK_NV_device_diagnostic_checkpoints
2020-04-27 souravp layers: VK_NV_device_diagnostic_checkpoints
2020-04-23 s.fricke tests: Add support for VUID 02634
2020-04-23 s.fricke layers: Add support for VUID 02634
2020-04-25 s.fricke tests: Add VUID 01658 and 01659
2020-04-25 s.fricke layers: Add VUID 01658 and 01659
2020-04-28 tony layers: Fix ValidateClearAttachmentExtent
2020-04-29 mark practices: Fix ValidateReturnCodes parameters
2020-04-25 s.fricke tests: Add VUID 02682 and 02683
2020-04-25 s.fricke layers: Add VUID 02682 and 02683
2020-04-26 s.fricke tests: Fix unexpected errors for AHB test
2020-04-24 mark practices: Fix fcn names and revamp manual fcn handling
2020-04-27 tony gpu: Stop using deprecated spirv-tools var
2020-04-27 jzulauf tests: Add persitant storage for renderpass info
2020-04-27 tony practices: Don't validate swapchain memory
2020-04-09 mikes scripts: Object tracker optional handling
2020-04-23 tony practices: Fix CreateFramebuffer
2020-04-25 petr_kraus tests: Test swapchain image props
2020-04-25 petr_kraus layers: Initialize image props for a swapchain
2020-04-24 karen docs: update khronos_validation_layer.md
2020-04-24 lionel.g.landwerlin Fix validation of blended attachments on imageless framebuffers
2020-04-22 s.fricke tests: Add YCbCr Format Feature VUIDs
2020-04-22 s.fricke layers: Add YCbCr Format Feature VUIDs
2020-04-23 tony gpu: Fix promoted buffer device address
2020-04-21 s.fricke layers: Fix VUID 02023 to use image state format feature
2020-04-19 s.fricke Fix cubearray test from failing on device
2020-04-21 petr_kraus tests: Test concurrent access with vkGetDeviceQueue
2020-04-22 petr_kraus layers: Fix threading resetting counters on vkGet*
2020-04-16 mark scripts: Pick up VUIDS in comment lines
2020-04-16 mark stateless: Add comments to pick up implicit VUs in stats
2020-04-16 mark corechecks: Add comments for built-up VUIDs
2020-04-16 mark corechecks: Remove some comments that'd throw off valstats
2020-04-17 souravp tests: For VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421
2020-04-17 souravp layers: Add VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421
2020-04-18 petr_kraus tests: Remove mock workarounds in instanceless
2020-04-21 sam.walls practices: add null pointer check for PreCallRecordCreateInstance
2020-04-03 tony tests: Split out gpu-av and printf into their own classes
2020-04-19 git layers: add support for VK_EXT_headless_surface
2020-04-20 tony layers: Fix renderpass2 tracking
2020-04-19 s.fricke tests: Add support for VUID 02260
2020-04-19 s.fricke layers: Add support for VUID 02260
2020-04-20 jbolz layers: Fix crash when there are more blend attachments than subpass color attachments
2020-04-16 s.fricke tests: Check coverage without memory requirements
2020-04-16 s.fricke layers: Remove redundant memory checking
2020-04-19 petr_kraus tests: Fix failing TestAliasedMemoryTracking
2020-03-24 jbolz tests: Test cube image view layerCount
2020-03-24 jbolz layers: Validate cube image view layerCount
Created with:
roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers third_party/tint third_party/vulkan-headers third_party/vulkan-loader third_party/vulkan-validation-layers
Change-Id: I84be3d3f03acf0e3037b1da86478e665a12d71cf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22163
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Removes an assert when attempting to evict the residency LRU while
empty.
Bug: dawn:415
Change-Id: If346d0f2cc28ec089871b3c5aaf8f5641344f9fe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22023
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
This patch adds the dawn_end2end_tests on the use of 2D array texture
views as read-only and write-only storage textures.
In HLSL neither RWTextureCube nor RWTextureCubeArray are supported, and
the HLSL function Load() also accept neither TextureCube nor
TextureCubeArray, thus we can neither support imageCube nor
imageCubeArray in the shaders used by Dawn.
BUG=dawn:267
TEST=dawn_end2end_tests
Change-Id: I0bce8bd3bff75baa14943b974ef3a6cc2b6d2434
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21980
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
In Vulkan, importing memory by file descriptor takes ownership of
the file descriptor. It is necessary to dup it in
ClearImageAcrossDevicesAliased because the texture is imported
twice. This fixes these tests on SwiftShader.
Bug: dawn:417
Change-Id: I08b6464c4b8bd31f738037678e29fd6d066e7888
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22020
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
BUG=dawn:405
Change-Id: I7a79a0d7ce58ff995ec1ff917dd427875fb4deaf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21340
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
This patch adds a validation to disallow declaraing combined textures
and samplers in shaders.
SPVC doesn't provide a way to extract the information of combined
textures and samplers from shaders, so currently we cannot add the
related validation when we use SPVC.
BUG=dawn:423
TEST=dawn_unittests
Change-Id: I81f05dc6adb57fbc981ee1a651e160c096315551
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22000
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
This patch adds the adapter type in the dawn_end2end_test name when the
adapter is Microsoft Basic Render Driver. In a Windows Remote Desktop
session, there will be two adapters whose name is "Microsoft Basic
Render Driver" with one of the adapter type being "CPU" and another
being "Integrated GPU" on an Intel integrated GPU for example. To avoid
the conflicts in the name of end2end tests and causes ASSERT failures,
we add the adapter type to the test name when the adapter is Microsoft
Basic Render Driver.
BUG=dawn:396
TEST=dawn_end2end_tests
Change-Id: I26108ac106957ea7e72d531a366851fd71cbc2b0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21900
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Roll third_party/SPIRV-Tools/ c8590c18b..95df4c964 (16 commits)
c8590c18bd..95df4c9643
$ git log c8590c18b..95df4c964 --date=short --no-merges --format='%ad %ae %s'
2020-05-19 rharrison Add in a bunch of missed files to the BUILD.gn (#3360)
2020-05-19 rharrison Remove stale entries from BUILD.gn (#3358)
2020-05-19 vladimir.davidovich allow cross compiling for Windows Store, UWP, etc. (#3330)
2020-05-19 vasniktel spirv-fuzz: Remove FuzzerPassAddUsefulConstructs (#3341)
2020-05-19 vasniktel Add support for StorageBuffer (#3348)
2020-05-19 462213+sl1pkn07 Prevent Effcee install his things when build spirv-tools with testing enabled (#3256)
2020-05-19 stevenperron Don't register edges twice in merge return (#3350)
2020-05-14 stevenperron Revert "Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)" (#3345)
2020-05-14 afdx spirv-reduce: Remove unused struct members (#3329)
2020-05-14 andreperezmaselco.developer Add adjust branch weights transformation (#3336)
2020-05-13 stevenperron Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)
2020-05-13 jaebaek [spirv-opt] refactor inlining pass (#3328)
2020-05-13 afdx spirv-reduce: Remove unused uniforms and similar (#3321)
2020-05-13 afdx spirv-fuzz: Fix to fact manager (#3339)
2020-05-13 afdx spirv-fuzz: Get rid of unnecessary template method (#3340)
2020-05-12 stevenperron Do merge return if the return is not at the end of the function. (#3337)
Roll third_party/glslang/ 4fa68edd6..2e0f0a051 (9 commits)
4fa68edd68..2e0f0a0517
$ git log 4fa68edd6..2e0f0a051 --date=short --no-merges --format='%ad %ae %s'
2020-05-20 cepheus Fix#2227, which was coded incorrectly, to be simpler/safer.
2020-05-19 cepheus Build: Fix#2228, by correcting the type used.
2020-05-20 lryer Code refine. (#2227)
2020-05-18 laddoc Add check for DOUBLE in low versions (#2223)
2020-05-18 greg Flatten all interface variables (#2217)
2020-05-18 cepheus Bump version.
2020-05-15 lryer Reserve unused std140 uniform block in reflection, and fix uniform block matrix layout (#2041)
2020-05-15 cepheus Bump version.
2020-05-14 duke.acacia Move to newer version of SPIRV-Tools
Roll third_party/spirv-cross/ d638d2df9..29ad40e93 (4 commits)
d638d2df9c..29ad40e93e
$ git log d638d2df9..29ad40e93 --date=short --no-merges --format='%ad %ae %s'
2020-05-20 post GLSL: Add more test shaders for hit attribute types.
2020-05-20 post GLSL: Support ray payloads and hit attributes declared as Block.
2020-05-20 post GLSL: Add some more focused RT test shaders.
2020-05-19 post HLSL: Implement image queries for UAV images.
Roll third_party/tint/ 0bbf1e746..1bbc1cb2c (6 commits)
https://dawn.googlesource.com/tint/+log/0bbf1e746093..1bbc1cb2c122
$ git log 0bbf1e746..1bbc1cb2c --date=short --no-merges --format='%ad %ae %s'
2020-05-19 dneto [spirv-reader] Support null vector, matrix, arr, struct
2020-05-19 dneto [spirv-reader] Systematic bad construct exit tests
2020-05-19 dneto [spirv-reader] Remove TODO about nested selections
2020-05-19 dneto [spirv-reader] remove redundant disabled test
2020-05-14 dneto [spirv-reader] Unordered float compares
2020-05-14 rharrison Add include path to public config for BUILD.gn
Created with:
roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers third_party/tint
Change-Id: I4f7ff976bdd1527680c9c1f0bc7fdf6cd581ec4c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22022
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
These tests hit a failing ASSERT in SwiftShader.
Suppressing to get the bots running and green.
TBR=cwallez@chromium.org
Bug: dawn:417
Change-Id: I2a2955650df0bb94206534ce1e401299eea6f26a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21960
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Adds logic to lock residency for bound descriptor heaps, then unlock and
insert into the LRU cache when no longer bound. Adds a basic functional
test.
Bug: dawn:193
Change-Id: Idfaaee6b873374c07a0b94b1982ad65353218799
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21400
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This skips tests that would fail on SwiftShader on systems with
no display.
Bug: dawn:283
Change-Id: Ie3aa46349df3116305712a5aa143d874cef0d4b4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21781
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Texture subresource total number is wrongly calculated. This change
fixed the tiny bug.
Bug: dawn:157
Change-Id: Id6dad7e60fa9fe63dac3567814486d3f9dfcee9e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21902
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
All the buffer backend files had basically the same implemenations
of MapRequestTracker and the tracker was owned by device backends.
This refactor puts MapRequestTracker into its own file
and has the tracker be owned by DeviceBase and BufferBase.
Bug: dawn:400
Change-Id: Id28422b575e9c04d4435d5f119e0ffe08c2d1ce8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21760
Commit-Queue: Natasha Lee <natlee@microsoft.com>
Reviewed-by: Austin Eng <enga@chromium.org>
This patch adds the validation that forbids the buffer-to-buffer copies
when the source and destination buffer are the same one as in D3D12 the
Source and Destination resource cannot be the same when doing a
CopyBufferRegion.
BUG=dawn:17, dawn:420
TEST=dawn_unittests
Change-Id: Ie3e0c5361919ff369240a65d6e7fbae05b8332b0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21780
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Factor out common shader compilation logic to ShaderModuleD3D12
used by both RenderPipeline and ComputePipeline, and implement
a new compilation path using DXC when UseDXC toggle is enabled
Bug: dawn:402
Change-Id: I67d3ae0aecee11634af917735456ddbe10b3d86a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21840
Commit-Queue: Hugo Amiard <hugo.amiard@laposte.net>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Allows bindgroups that use the same samplers to share
a descriptor heap allocation. This is particularly important
for sampler heaps which incur expensive pipeline flushes
due to the smaller size requiring more frequent switches.
The device dolls out entries to a sampler heap allocation cache.
When the BindGroup is created, it does a lookup and refs the
allocation. This ensures the cache does not grow unbounded
or needlessly store unused entires.
This change is a follow-up of de-coupling heaps.
BUG=dawn:155
Change-Id: I3ab6f1bdb13a40905cb990cd7a2139e73da30303
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/20783
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
The tests can pass on Metal and OpenGL backend as expected.
But they can't pass on D3D12 and Vulkan backend. I will work
on that soon.
Bug: dawn:157
Change-Id: I4fcf229f7a24369004d5594a3801f0acad804fd0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21341
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
By default, the tests will run on all available adapters, so this
adds an --exclusive-device-type-preference flag which takes a list
of comma-delimited device type preferences (discrete,integrated,cpu).
Tests will run only on the first available device type.
This is useful because in Chromium's test infrastructure, the same
test arguments are passed to one machine on which we want to use the
discrete GPU, as well as one machine where we want to use the
integrated GPU.
Bug: dawn:396
Change-Id: Id936fff3356eef3c6d12dfd1407b0e1f0f020dc1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21202
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
These were experimental while we did not have the CTS running on
Dawn's CQ. We can remove them now.
Tbr=cwallez@chromium.org
Bug: dawn:396
Change-Id: I1d459b190e44374e54c47a8bc4ad37a70426847b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21800
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This moves the creation of the Instance and Adapter discover to
environment creation. It allows programatically filtering test
parameterizations based on what is available on the system instead of
relying on what is enabled at compile time.
Because of an issue with the Vulkan validation layers, the instance and
adapters are created twice. Once in environment creation, and once on
environment set up. The Vulkan validation layers use static global
mutexes which are unsafe when Chromium's test launcher forks the
launcher process between environment creation and SetUp.
Bug: dawn:396
Change-Id: Id79f0d274331e4ba95f75b2ca4e896ad0f7a31a8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21762
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
This patch adds dawn_end2end_tests to verify any textures whose first
use is being used as read-only or write-only storage texture have been
cleared to 0.
BUG=dawn:267
TEST=dawn_end2end_tests
Change-Id: I26a1b6b46ba8fc87c6599870771192262ce07d83
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21740
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Enables GBV by default when the backend validation layers are enabled.
This feature is particularly useful for catching mistakes in shaders
that otherwise pass when only using the debug layer.
BUG=dawn:363
Change-Id: I7b730ce8e43069dc3150e7a5857a0977b3147390
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21701
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This is a reland of 071fe56ffe
It creates textures as TYPELESS if they may need reinterpretation
of the bit layout. Right now only sampled Depth32Float needs this
so it is special-cased.
Original change's description:
> Support depth32float sampling on D3D12
>
> Bug: dawn:367
> Change-Id: I026e718130cbd92427c6292045fd041c878d4f77
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/20840
> Commit-Queue: Austin Eng <enga@chromium.org>
> Reviewed-by: Stephen White <senorblanco@chromium.org>
Bug: dawn:367
Change-Id: I8b0ad465915c4476099fc1097e0cd02b23bd21b6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21640
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This makes it much easier to understand where errors come from.
Bug: none
Change-Id: I345164177e6258a32bdc37d233bc5df8bba13132
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21660
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
They were deprecated in favor of bytesPerRow and rowsPerImage.
Bug: dawn:22
Change-Id: I5bd3262ee8ba2f891d01f6b8a3f5df86f7596686
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21684
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
It was deprecated in favor of chaining a
wgpu::ShaderModuleSPIRVDescriptor.
Bug: dawn:22
Change-Id: I210cd7c21c33c6ca8dd286ea64389b774a4355e5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21683
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
It was deprecated in favor of wgpu::Device::GetDefaultQueue.
Bug: dawn:22
Change-Id: I28d7e616b2beb7de8eed3a3df501eb97a6475928
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21682
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
It was deprecated in favor of viewDimension.
Bug: dawn:22
Change-Id: I8016d7440d98cc69acd1b48cb76f7ae1c1353896
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21681
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
This removes the following types and members as well as fixup code
and depraction tests for them:
- wgpu::BindGroupLayoutBinding
- wgpu::BindGroupLayoutDescriptor::bindingCount
- wgpu::BindGroupLayoutDescriptor::bindings
- wgpu::BindGroupBinding
- wgpu::BindGroupDescriptor::bindingCount
- wgpu::BindGroupDescriptor::bindings
Bug: dawn:22
Change-Id: Ifc0e25107f3dcfbb850624cb362909f38c90bec2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21680
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This patch adds the following:
- UseDXC toggle
- Loads DXC (and DXIL to sign the DXBC) in d3d12/PlatformFunctions
- Adds GetModuleDirectory to SystemUtils
GetModuleDirectory was added to prevent loading issues regarding dynamic libraries when the executable is not in the same path as the dawn module.
This patch doesn't add DXC to RenderPipelineD3D12 nor ComputePipelineD3D12.
Bug: dawn:402
Change-Id: I2b8e4a2b7df31b9c766c748f92e11050c0aec3a0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21420
Commit-Queue: Felix Maier <xilefmai@gmail.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Wgnu-zero-variadic-macro-arguments is fixed by:
- A previous googletest roll fixing the warning in gmock.
- Adding a dummy argument to AddTraceEvent so that the __VA_ARGS__ is
never empty in TraceEvent.h and doesn't require __VA_ARGS__ token
pasting with a comma.
- Extracting the first parameter in DAWN_INSTANTIATE_TEST with some
preprocessor tricks instead of singling it out, to avoid __VA_ARGS__
token pasting with a comma.
Wmicrosoft-enum-value is fixed by a previous spirv-cross roll that fixes
the warning upstream.
Bug: dawn:394
Change-Id: Icfe037ae9549087e9d62b6f42f91958addbb53ee
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21483
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This patch adds the validation on the buffer-to-buffer copies within the
same buffer. When the source and destination buffer are the same one in
CopyBufferToBuffer(), the copy region cannot overlap or it will cause
undefined behaviors on Metal and Vulkan.
BUG=dawn:17
TEST=dawn_unittests, dawn_end2end_tests
Change-Id: I63ab790787ec0a973ae22787a9348bddfb6a5373
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21602
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
This fixes a bug where dynamic offsets were applied to the wrong bindings.
Dynamic offsets are applied in increasing order of binding number.
Bug: dawn:408
Change-Id: I3de6ee1bfd6e00239ddc46f820c3f81ba82815cb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21620
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This avoids a stack overflow when many error scopes are pushed on device
shutdown. It also changes the error scopes to return a Unknown error
type on shutdown instead of NoError.
A regression test is added.
Bug: chromium:1078438
Bug: chromium:1081063
Change-Id: Ibfab8dd19480414c1854ec2bd4928939663ba698
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21440
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
It is valid to have race condition for multiple writes on the same
resource in some situations in render pass. These situations are:
1) multple storage buffer bindings on the same buffer,
2) multiple writeonly storage texture bindings on the same texture.
This change fixed a bug in tests and added a new test, in order to
make sure that validation code in Dawn allows this kind race condition.
Bug: dawn:407
Change-Id: I42332418bea5b6e608f6730e42f60c1c12b0b025
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21361
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
This is valid in WebGPU but causes validation errors in backends.
Also make it an OOM error on Metal to request a buffer close to
UINT32_MAX size because it would truncate the size, and could lead to
OOBs.
Bug: chromium:1069076
Change-Id: Ib961cb236cb7cabc0ae21203bf1d72ba82a56272
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21060
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Returning COM for getters needlessly refcounts which wastes CPU cycles
in critial sections and floods PIX traces with [Add/Release]Ref.
BUG=dawn:212
Change-Id: Ifa853f2d5f78a450fdb7ffb9492f0d08dfbcdd37
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21364
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>