Alexander Galazin [Fri, 20 Aug 2021 12:20:33 +0000 (14:20 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/master
Change-Id: Ieb90dde42cb20ab43cebd0f2b5d3ad4091c3b57a
Alexander Galazin [Fri, 20 Aug 2021 10:14:58 +0000 (12:14 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.6 into vk-gl-cts/vulkan-cts-1.2.7
Change-Id: Ieaff21c7c6228a4507325afe13ec2a3807b345cb
Vihanakangas [Tue, 17 Aug 2021 11:14:46 +0000 (14:14 +0300)]
Check support in synchronization operation tests
Synchronization tests were creating pipelines before checking for support,
causing unnecessary use of CPU time when encountering an operation
later on that was not supported.
Affects:
dEQP-VK.synchronization.op.*
Components: Vulkan
VK-GL-CTS issue: 2731
Change-Id: Ia83afde4767ced1549a1b0573cdc9e8af8526870
Slawomir Cygan [Mon, 16 Aug 2021 16:04:21 +0000 (18:04 +0200)]
Read stencil aspect from image in DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL layout
The test was using sampler to read depth aspect from image in
combined depth+stencil format and in
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
layout - what is invalid.
Instead, the test now reads (and tests) stencil aspect of this
image. As the test code already supported testing stencil formats,
just a few conditions are changed/added to follow the stencil path
if VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
is used.
VK-GL-CTS Issue: 3048
Components: Vulkan
Affects: dEQP-VK.synchronization2.none_stage.*
Change-Id: I918a5cdad83bcd25b2f8b6cee642b56218c2b7fe
Ilkka Saarelainen [Wed, 11 Aug 2021 12:00:37 +0000 (15:00 +0300)]
Optimize image clearing tests
This CL optimizes image clearing tests.
The tests did a lot redundant calculation for each pixel in the verify stage.
This CL moves those calculations to outside of the pixel verify function.
Affects:
dEQP-VK.api.image_clearing.*
Components: Vulkan
VK-GL-CTS issue: 2933
Change-Id: Ie3403c591c9f084115a13cc78e0a66c54c48817c
Vihanakangas [Thu, 5 Aug 2021 06:52:05 +0000 (09:52 +0300)]
Ensure that destroying old swapchain has no effect
There should be no crash when recreating Vulkan swapchain with
old swapchain and later calling vkDestroySwapchainKHR on old swapchain.
New tests:
dEQP-VK.wsi.*.swapchain.destroy.old_swapchain
Components: Vulkan
VK-GL-CTS issue: 2935
Change-Id: I7f03e55767ececec8a6a70ef553f0676d3a3c616
marz [Sun, 6 Jun 2021 20:46:56 +0000 (22:46 +0200)]
Conservative rasterization with SampleMask
Additional test coverage for conservative rasterization Conservative
rasterization used in conjunction with various multisampling setup
including FullyCoveredEXT built-in, minSampleShading, postDepthCoverage
and SampleMask.
Components: Vulkan
VK-GL-CTS issue: 2868
Affects:
dEQP-VK.pipeline.multisample.conservative_with_full_coverage.*
Change-Id: I8c2858b81cfdf27e622acf74e273db9014499c9c
Alexander Galazin [Wed, 18 Aug 2021 09:46:04 +0000 (11:46 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: Iefdf1bc052c5f9c63bdf9062c01c96a4c11a92c6
Italo Nicola [Tue, 27 Jul 2021 08:26:47 +0000 (05:26 -0300)]
Implement getProcAddress for surfaceless platform
Currently this virtual function is not overridden, causing a crash
whenever a test calls getProcAddress in a surfaceless context.
Affects:
KHR-GL3{0,1,2}.transform_feedback.draw_xfb_instanced_test
KHR-GL3{0,1,2}.transform_feedback.draw_xfb_stream_instanced_test
Components: Framework
VK-GL-CTS issue: 3021
Change-Id: Idb29b5ca9d70c5f3be6a32fdf2c827d5d7591050
Tapani Pälli [Fri, 30 Jul 2021 11:54:09 +0000 (14:54 +0300)]
Fix for the various multisample tests with GL 4.5
Affects:
dEQP-GLES31.functional.shaders.sample_variables.*
dEQP-GLES31.functional.sample_shading.*
dEQP-GLES31.functional.shaders.multisample_interpolation.*
dEQP-GL45.functional.shaders.sample_variables.*
dEQP-GL45.functional.sample_shading.*
dEQP-GL45.functional.shaders.multisample_interpolation.*
Components: AOSP
VK-GL-CTS issue: 3014
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Change-Id: I6e4297a0558a31a1dc2258da7434d3fcc1900b73
Tapani Pälli [Thu, 29 Jul 2021 17:46:56 +0000 (20:46 +0300)]
Fix to multisample texture test shaders with GL 4.5
Affects:
dEQP-GL45.functional.texture.multisample.*
Components: AOSP
Issue: 3016
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Change-Id: Icf29df0c1b8cb5306ebf4a9444c63d8e1afa2d7c
Tapani Pälli [Thu, 29 Jul 2021 17:30:04 +0000 (20:30 +0300)]
Fix for the common function tests with GL 4.5
Affects:
dEQP-GL45.functional.shaders.builtin_functions.common.*
Components: AOSP
VK-GL-CTS issue: 3015
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Change-Id: Icf1343225a2dab84f70e2bc986f556c247454b4c
Lowry Li (Arm Technology China) [Wed, 11 Aug 2021 10:14:41 +0000 (18:14 +0800)]
Fix partial_image_npot_diff_format_clear fail
The tests added in
fffc9484834599de9eb5559205cec7cf0105379b /
VK-GL-CTS Issue: 2678 are missing a pipeline barrier between
the new clearing operation the following transfer operation
targeting the same resource.
Components: Vulkan
Affects:
dEQP-VK.api.copy_and_blit.*.image_to_image.simple_tests.
partial_image_npot_diff_format_clear
VK-GL-CTS issue: 3056
Change-Id: I3edf4d98e697e97c4b7934238cdbfc86f2d48632
Alexander Galazin [Thu, 5 Aug 2021 08:27:20 +0000 (10:27 +0200)]
Remove shaders.arrays from the Khronos mustpass
Components: OpenGL
VK-GL-CTS issue: 2540
Affects: KHR-GLES3.shaders.arrays.*
Change-Id: I291c26f1105bd72ca16e4057f23bb2188aed6dc4
Ilkka Saarelainen [Tue, 27 Jul 2021 11:31:06 +0000 (14:31 +0300)]
Fix Android system memory requirements
This CL changes how the available system memory is defined in Android.
The actual available system memory size is now used instead of
determining the available system memory by the CDD.
Affects:
dEQP-VK.api.buffer.suballocation.*
dEQP-VK.api.buffer.dedicated_alloc.*
dEQP-VK.api.object_management.*
dEQP-VK.memory.allocation.*
dEQP-VK.memory.device_group_allocation.*
dEQP-VK.pipeline.render_to_image.*.small.*
dEQP-VK.pipeline.render_to_image.*.huge.*
Components: Framework, Vulkan
VK-GL-CTS issue: 2621
Change-Id: I92fd157ec3928313ac92c29e6cbb3413c64a5096
Piotr Byszewski [Tue, 16 Feb 2021 14:57:44 +0000 (15:57 +0100)]
Test multiViewport with different depth ranges
This change extends existing tests to also cover creation of
viewports with different depth ranges, and make sure that
depth clipping/clamping works correctly across the different
viewports.
Components: Vulkan
VK-GL-CTS issue: 2500
Affects:
dEQP-VK.draw.depth_clamp.*
Change-Id: Ifa76daa1b53f04e48871a5efe07f5d3863066ca1
Piotr Byszewski [Thu, 22 Jul 2021 13:36:51 +0000 (15:36 +0200)]
Test OpImageQueryLod when fwidth(UV) == 0
Tests verify that lambda returned by OpImageQueryLod
is -22 or lower when fwidth(UV) == 0.
Components: Vulkan
VK-GL-CTS issue: 3027
Affets:
dEQP-VK.glsl.texture_functions.query.texturequerylod.*
Change-Id: I879024646c7a62d6cef7cb4b46a154b5e4750f36
Alexander Galazin [Fri, 13 Aug 2021 07:31:42 +0000 (09:31 +0200)]
Merge vk-gl-cts/github-master into vk-gl-cts/master
Change-Id: I9bf5cb55d51036216ffb8aafde67062b6c860c1f
Alexander Galazin [Fri, 13 Aug 2021 07:30:29 +0000 (09:30 +0200)]
Merge pull request #276 from Ella-0/master
Test behaviour of color write enable with colorWriteMask
Alexander Galazin [Thu, 12 Aug 2021 15:23:45 +0000 (17:23 +0200)]
Allow Vulkan CTS 1.2.7.1
Affects: dEQP-VK.api.driver_properties.properties
Components: Vulkan
Change-Id: Ic313a2b15d7c2be5c5b1f95aa189dc6bf1adbf70
Jason Ekstrand [Wed, 26 Aug 2020 22:47:24 +0000 (17:47 -0500)]
Add tests for VK_EXT_shader_atomic_float2
New tests:
dEQP-VK.glsl.atomic_operations.*float16*
dEQP-VK.glsl.atomic_operations.min_float*
dEQP-VK.glsl.atomic_operations.max_float*
dEQP-VK.image.atomic_operations.min*r32f*
dEQP-VK.image.atomic_operations.max*r32f*
Affects:
dEQP-VK.glsl.atomic_operations.*float*
dEQP-VK.image.atomic_operations.add*r32f*
dEQP-VK.image.atomic_operations.exchange*r32f*
Components: Vulkan
VK-GL-CTS issue: 2566
Change-Id: I7462cc74e799c2245407220fa9db7e5b659f86f4
(cherry picked from commit
ca4e5aff66bccbbe88935c10e2c55a3147c1fc03)
(cherry picked from commit
218eb73c4f30e720bd19a61704f5ad6ebcd73d48)
Ricardo Garcia [Mon, 19 Apr 2021 13:56:11 +0000 (15:56 +0200)]
Tests for VK_KHR_present_id and VK_KHR_present_wait
Add tests for VK_KHR_present_id and VK_KHR_present_wait. This commit
also refactors some code so it can be reused in several places, hence
marking all WSI tests as affected.
Affected tests:
dEQP-VK.info.device_mandatory_features
dEQP-VK.wsi.*
New tests:
dEQP-VK.wsi.*.present_id_wait.*
Components: Vulkan
VK-GL-CTS issue: 2098
VK-GL-CTS issue: 2099
Change-Id: I1c95fbf031d651773a9fff1c10a23038d73f6e53
(cherry picked from commit
8bf210fd592883b3adebb57c3d6cc49188d1758e)
(cherry picked from commit
b7a8721e2ffb9153283b434658463daac7ed1313)
Alexander Galazin [Tue, 27 Jul 2021 18:59:06 +0000 (20:59 +0200)]
Update glslang, SPIR-V Tools, headers
Components: Framework
Change-Id: Ie259277466b22ba816843c362da272a4284fcb93
(cherry picked from commit
c1e67a6d8689bdaad205ee0287ea4b490141c4d3)
Alexander Galazin [Tue, 27 Jul 2021 10:57:27 +0000 (12:57 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: Id59fb9125cac9068d68a8e5f219c3dc53a093ad0
(cherry picked from commit
ab44aa0a0a3a2c1ec5937a71c4cb8936f22fb247)
Alexander Galazin [Mon, 5 Jul 2021 14:18:18 +0000 (16:18 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: I6000ca21cc306130dd546887e68d1cecd4dc0e1f
(cherry picked from commit
9aa91388484350028ff7c7c4c063ee87146070b6)
Alexander Galazin [Thu, 12 Aug 2021 20:25:23 +0000 (22:25 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.6 into vk-gl-cts/vulkan-cts-1.2.7
Change-Id: I34e25155c4d2fc3a37f8699507a1330f86ef78a9
Alexander Galazin [Thu, 12 Aug 2021 19:53:13 +0000 (21:53 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.5 into vk-gl-cts/vulkan-cts-1.2.6
Change-Id: I8d78e920b4007ea7f47e66d64852693dfed22003
Alexander Galazin [Thu, 12 Aug 2021 18:56:51 +0000 (20:56 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.4 into vk-gl-cts/vulkan-cts-1.2.5
Change-Id: Id1af44b78cbe4ba82cc76c656e0a22421ac20073
Alexander Galazin [Thu, 12 Aug 2021 18:03:29 +0000 (20:03 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.3 into vk-gl-cts/vulkan-cts-1.2.4
Change-Id: I13ff1ac57c064dc46bbc7c555ba1fed07e04080c
Alexander Galazin [Thu, 12 Aug 2021 18:02:19 +0000 (20:02 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/vulkan-cts-1.2.3
Change-Id: Iab13500b9aaa9b6da0e99ea9d93fe9cabc66da33
Maniraj D [Fri, 30 Jul 2021 11:32:04 +0000 (11:32 +0000)]
Do proper checking for the presence of Xorg/XCB
In XcbDisplay::hasDisplay() API, hasthe incorrect
assumption that the xcb_connection_t is always valid,
if its value isn't NULL. XcbDisplay::hasDisplay() must
ensure that there are no connection errors by
using the xcb_connection_has_error() API.
Failure to do so would result in incorrectly trying
to exercise the XCB related test cases against
other than XCB WSIs, such as Wayland, for example.
Components: Vulkan
Affected tests: dEQP-VK.wsi.*
dEQP-VK.image.swapchain_mutable.*
VK-GL-CTS issue: 3037
Change-Id: Id722b3a3b3d82161ff00096518a026701b291751
Tony Zlatinski [Wed, 28 Jul 2021 21:41:09 +0000 (16:41 -0500)]
The existence of a DRM device is not mandatory
The VK_EXT_physical_device_drm spec states:
DRM defines multiple device node types. Each physical device may
have one primary node and one render node associated.
Physical devices may have no primary node (e.g. if the device does
not have a display subsystem), may have no render node (e.g. if it is
a software rendering engine), or may have neither (e.g. if it is a
software rendering engine without a display subsystem).
According to the above statement, a DRM device does not have to
always be present for a device to be compliant with the
VK_EXT_physical_device_drm spec.
Components: Vulkan
VK-GL-CTS Issue: 3029
Affects: dEQP-VK.api.device_drm_properties.drm_files_exist
Change-Id: I6d48b15d142650ee0db2dafd5e1b7f3c30e7a837
Ilkka Saarelainen [Thu, 12 Aug 2021 05:06:20 +0000 (08:06 +0300)]
Add missing items to android cts mustpass list
Some tests were missing from Android vk-master-2021-03-01 test list.
This CL adds those tests to the list.
Components: Vulkan
VK-GL-CTS issue: 3050
Change-Id: I973508a169e70d203dd465e9f22c41405c1c24a7
SoroushIMG [Mon, 26 Jul 2021 13:36:56 +0000 (14:36 +0100)]
Fix bug in compressed PixelStorageModes tests
Compressed pixel storage modes are tested by using the extension
ARB_compressed_texture_pixel_storage.
ARB_compressed_texture_pixel_storage is a core extension since
OpenGL 4.2. Therefore, the cases testing this behaviour need to
check for its support in GL context versions before 4.2.
Without this check drivers that do not provide this extension,
will fail this test instead of being marked as not supported.
This CL adds the mentioned extension checking.
Affects:
KHR-GL33.pixelstoragemodes.compressedteximage2d.*
KHR-GL33.pixelstoragemodes.compressedteximage3d.*
Components: OpenGL
VK-GL-CTS issue: 3020
Change-Id: Ib9a4edeb57995582c07aa11c7db11c6e7bbe1984
David Emett [Mon, 26 Jul 2021 16:33:03 +0000 (16:33 +0000)]
Work around bogus GCC 9 warnings
Bogus warning can be seen with this example:
#include <stddef.h>
long broken()
{
struct
{
long a, b;
} value;
for (size_t i = 0; i < sizeof(long); ++i)
{
((char *)&value.a)[i] = (char)0xde;
((char *)&value.b)[i] = (char)0xde;
}
return value.b;
}
Compiled with -O3 -Warray-bounds GCC 9 warns:
In function 'long int broken()':
cc1plus: warning: 'void* __builtin_memset(void*, int, long unsigned int)' offset [9, 16] from the object at 'value' is out of the bounds of referenced subobject 'broken()::<unnamed struct>::a' with type 'long int' at offset 0 [-Warray-bounds]
It looks like GCC is recognising the loop as two memsets, merging them,
then forgetting that it has done this.
It seems this can be worked around by just using memset rather than
implementing it manually, which is also simpler and produces better
code.
The example compiles without warning on GCC 10+ (you can try on
https://godbolt.org/), so presumably this bug has been fixed in later
versions of gcc.
Change-Id: I09799d6dd833b1fba8608cddaa36a32e555cf861
Antto Mäkinen [Mon, 2 Aug 2021 12:00:27 +0000 (15:00 +0300)]
Fix a GraphicsFuzz coverage test
This commit simplifies the result verification at the end of cov-apfloat-module-small-number.
Affects: dEQP-VK.graphicsfuzz.cov-apfloat-module-small-number
Components: Vulkan
VK-GL-CTS issue: 3035
Change-Id: Ia0e0347880cbddc2433cd3867c96a09645c5a35d
Iago Toral Quiroga [Mon, 2 Aug 2021 09:31:14 +0000 (11:31 +0200)]
Increase error threshold for some geometry shader tests
Components: Vulkan
VK-GL-CTS issue: 3034
Affected tests:
dEQP-VK.geometry.*
Change-Id: I5ed440019ab45f6f31787d199695630d06bb2a51
Iago Toral Quiroga [Mon, 2 Aug 2021 07:33:49 +0000 (09:33 +0200)]
Fix variable pointer tests for geometry stages on tilers
On tilers we may execute any geometry stage more than once, not just
the vertex shader.
Components: Vulkan
VK-GL-CTS issue: 3033
Affected tests:
dEQP-VK.spirv_assembly.instruction.graphics.variable_pointers.graphics.writes_single_buffer_*
Change-Id: I3ee5db4aa8176d09b10720d7683338ef8e8a8098
Ricardo Garcia [Thu, 29 Jul 2021 15:13:51 +0000 (17:13 +0200)]
Fix DRM modifier list tests
* dEQP-VK.drm_format_modifiers.list_modifiers.* tests now check every
supported modifier instead of returning prematurely if any of the
modifiers was not supported for the image usage flags the tests uses.
* dEQP-VK.drm_format_modifiers.create_list_modifiers.* tests check
modifier compatibility first before attempting to use compatible
modifier lists of different lengths. Test results no longer depend on
the order of modifiers returned by the implementation and do not
return NotSupported prematurely.
* dEQP-VK.drm_format_modifiers.export_import.* tests suffered from
similar issues. They tried to detect which of the supported modifiers
for a format met a list of requirements and returned early with
NotSupported if any of them failed to match those requirements,
instead of running the tests in all possible modifiers.
Affected tests:
dEQP-VK.drm_format_modifiers.*
Components: Vulkan
VK-GL-CTS issue: 3026
Change-Id: I4c6600b87f3c2b4b9b165fdc17988efe2e0cf670
Ari Suonpaa [Fri, 6 Aug 2021 12:08:21 +0000 (15:08 +0300)]
Relax protected heap allocation tests
Some implementations have limitations on protected heap
allocations, and these limitations cannot be queried
using the Vulkan API. This change allows an out-of-memory
to happen after a certain number of allocations to
compensate that.
VK-GL-CTS Issue: 3038
Affects:
dEQP-VK.memory.*allocation.*
Components: Vulkan
Change-Id: I3a34637c8c15eb8670613dce9b6e394a622a4c71
Ari Suonpaa [Tue, 23 Mar 2021 05:45:48 +0000 (07:45 +0200)]
Added layered AHB EGL tests
Added new EGL image format tests for using Android Native
Hardware buffers with layers. They are mapped as 2D texture
arrays using EGL image API.
EGL internal test filter was also removed as the EGL AHB
tests are now using public Android API.
VK-GL-CTS Issue: 2671
New tests:
dEQP-EGL.functional.image.*android_native*
Components: EGL, Framework
Change-Id: I34a7560703bb06b75be276dc8ba5247c3763877a
Ricardo Garcia [Wed, 21 Jul 2021 10:33:51 +0000 (12:33 +0200)]
Improve buffer to buffer copy tests
Buffer to buffer copy tests were filling the source and destination
buffers with the same contents, using functions that were both used for
images and buffers.
When filling source buffers, a linear memory allocation of R32_UINT
elements was filled with color red, which resulted in all bytes
containing value 255.
When filling destination buffers, the same procedure was followed using
color white. However, due to R32_UINT only having one component, this
also resulted in every buffer byte containing value 255.
The copy operation that followed could fail (e.g. with the
implementation not doing anything) and the test could still pass. This
commit makes the destination buffer be filled with zeros so as to verify
regions are being interpreted correctly.
Affected tests:
dEQP-VK.api.copy_and_blit.*buffer_to_buffer*
Components: Vulkan
VK-GL-CTS issue: 3008
Change-Id: I49e5ea5a4843540e57be22c67107db82b7903da2
Alexander Galazin [Thu, 5 Aug 2021 08:29:18 +0000 (10:29 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/master
Change-Id: Ie8036c780cda38f67032afa000852326c57b7860
Alexander Galazin [Thu, 5 Aug 2021 07:23:15 +0000 (09:23 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.6 into vk-gl-cts/vulkan-cts-1.2.7
Change-Id: I2ac7dec5e1cd15b13dec902ceeff581992d2678c
Ricardo Garcia [Thu, 15 Jul 2021 10:19:46 +0000 (12:19 +0200)]
Test multiview with VK_EXT_multi_draw
Add new VK_EXT_multi_draw test variants that check multi_draws together
with multiview.
New, affected and removed tests:
dEQP-VK.draw.multi_draw.*
Components: Vulkan
VK-GL-CTS issue: 2985
Change-Id: I0e2b36efa912629b3f6457913f3c3b6d9eeebfe8
Piotr Byszewski [Thu, 8 Jul 2021 15:37:09 +0000 (17:37 +0200)]
Add sample mask test for FSR
This change adds single test that uses pipelineFragmentShadingRate
with fragmentSize {2,2}, 4xMSAA and a sample mask of 0x9.
After drawing random triangles there is a check that samples are
written only to samples present in the sample mask.
VK-GL-CTS issue: 2397
Components: Vulkan
Affects:
dEQP-VK.fragment_shading_rate.misc_tests.*
Change-Id: I38bbddeb2f8d7e8aac1c3803b171ec5be2f0c21a
Daniel Koch [Tue, 27 Jul 2021 21:14:02 +0000 (17:14 -0400)]
Fix transform_feedback.simple.multiquery* tests
Tests were using host query reset which may not be present pre-VK 1.2.
Change tests to use device query reset (there are other dedicated tests which test HOST_QUERY_RESET).
Components: Vulkan
VK-GL-CTS Issue: 2866
Affects:
dEQP-VK.transform_feedback.simple.multiquery*
Change-Id: Ib8c943a53542f4e21167f6afb0005200043477c6
Connor Abbott [Mon, 26 Jul 2021 13:48:27 +0000 (15:48 +0200)]
Fix depth/stencil subpass dependencies in renderpass allocation tests
This seems like a copy/paste error, but the last subpass should have
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT and the current subpass
should have VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, analagous to
the color attachment case.
Affects:
dEQP-VK.renderpass.dedicated_allocation.attachment_allocation.input_output.*
Components: Vulkan
VK-GL-CTS Issue: 3019
Change-Id: I0f46316f9c5147d2391c6f0f2a37fb1e56420078
Vihanakangas [Fri, 28 May 2021 11:01:39 +0000 (14:01 +0300)]
Remove fallback and unify testing for image clearing tests
Image clearing tests were previously using render pass
to pre-clear an image. This commit removes the use of
render pass as a clearing method and instead uses a buffer
to clear the image.
Affects:
dEQP-VK.api.image_clearing.core.*
Components: Vulkan
VK-GL-CTS issue: 2604
Change-Id: I82b6ac6cb6f8a2d79e4f7ffa12abc636bc5a961a
Piotr Byszewski [Tue, 3 Aug 2021 10:22:10 +0000 (12:22 +0200)]
Portability: fix osx target
Currently cts can be be build on MacOS using default target
this CL adds missing libraries also to osx target.
Components: Framework
VK-GL-CTS public issue: 277
Affects:
*
Change-Id: Ic890bea33bd90240e84dd71b985cf146a1a4df0c
Ella Stanforth [Thu, 22 Jul 2021 11:35:39 +0000 (11:35 +0000)]
Test behaviour of color write enable with colorWriteMask
This commit adds new tests to test the interaction of color write enable and
color write mask.
New and affected tests:
dEQP-VK.pipeline.color_write_enable.*
Components: Vulkan
Reviewed-by: Ricardo Garcia <rgarcia@igalia.com>
Graeme Leese [Wed, 16 Jun 2021 15:47:04 +0000 (16:47 +0100)]
Add more tests for YCbCr plane compatibility
The only existing tests are using other UNORM formats, and a validation
layer change to allow compatible formats here has shown that this isn't
working properly on some drivers. This extends the tests that were added
as part of #1630 (CL 7356).
Components: Vulkan
VK-GL-CTS issue: 1630
New tests: dEQP-VK.ycbcr.plane_view.*_compatible_format_*int
Affects: dEQP-VK.ycbcr.plane_view.*_compatible_format_*
Change-Id: Ia14357fc8873566333ea888ef18a2155ffa6ef51
Graeme Leese [Wed, 7 Jul 2021 10:15:41 +0000 (11:15 +0100)]
Remove invalid reserved keywords tests
These identifiers are not listed as reserved in any spec that I can
find.
Components: OpenGLES
Removed Tests: dEQP-GLES3.functional.shaders.keywords.reserved_keywords.image*Shadow_*
Change-Id: I444d9a8a49d3dda7402faa50b79859aaef0ee690
Ricardo Garcia [Tue, 20 Jul 2021 10:36:05 +0000 (12:36 +0200)]
Test line stipple factor is ignored if not used
This commit adds a few extra line test variants that check
lineStippleFactor in VkPipelineRasterizationLineStateCreateInfoEXT is
ignored when stippledLineEnable is false. The new tests use both zero
and a large number to check everything continues to work.
New tests:
dEQP-VK.rasterization.primitives.no_stipple.*factor_0
dEQP-VK.rasterization.primitives.no_stipple.*factor_large
Affected tests:
dEQP-VK.rasterization.primitives*
Components: Vulkan
VK-GL-CTS issue: 3009
Change-Id: I6e329e8572cb0bae043119553bd4ea8d5682f660
Ricardo Garcia [Tue, 20 Jul 2021 14:20:50 +0000 (16:20 +0200)]
Test zero-size unused specialization constants
According to the spec for VkSpecializationMapEntry
> If a constantID value is not a specialization constant ID used in the
> shader, that map entry does not affect the behavior of the pipeline.
So it should be legal to use VkSpecializationMapEntry structures
indicating size zero for a given constant as long as the constant is not
used in the shaders.
This commits adds new test variants that verify implementations handle
such cases.
New tests:
dEQP-VK.pipeline.spec_constant.*.basic.*unused_*
Affected tests:
dEQP-VK.pipeline.spec_constant.*
Components: Vulkan
VK-GL-CTS issue: 3011
Change-Id: I2a8439368722e6caaa828fd91e061cfd5e2be61d
Sławomir Cygan [Thu, 22 Jul 2021 14:51:11 +0000 (16:51 +0200)]
Fix build on CLang failing due to -Wunused-private-field
Dereference a member uses only in Debug builds.
VK-GL-CTS Issue: 3013
Components: Vulkan
Change-Id: I7a607328bf033b24c1bba877f78c3fa4fd24e9e1
Vihanakangas [Thu, 10 Jun 2021 12:39:02 +0000 (15:39 +0300)]
SwiftShader script improvements
This commit applies varying fixes proposed in the issue.
VK-GL-CTS issue: 2956
Change-Id: I6f73bea9f5ab875b8d40990649fb1f9d9a2d603d
Alexander Galazin [Wed, 28 Jul 2021 06:54:34 +0000 (08:54 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/master
Change-Id: I4bf831e86123de179132f435a7c7bf838d0c89d3
Alexander Galazin [Tue, 27 Jul 2021 18:59:06 +0000 (20:59 +0200)]
Update glslang, SPIR-V Tools, headers
Components: Framework
Change-Id: Ie259277466b22ba816843c362da272a4284fcb93
Jason Ekstrand [Wed, 26 Aug 2020 22:47:24 +0000 (17:47 -0500)]
Add tests for VK_EXT_shader_atomic_float2
New tests:
dEQP-VK.glsl.atomic_operations.*float16*
dEQP-VK.glsl.atomic_operations.min_float*
dEQP-VK.glsl.atomic_operations.max_float*
dEQP-VK.image.atomic_operations.min*r32f*
dEQP-VK.image.atomic_operations.max*r32f*
Affects:
dEQP-VK.glsl.atomic_operations.*float*
dEQP-VK.image.atomic_operations.add*r32f*
dEQP-VK.image.atomic_operations.exchange*r32f*
Components: Vulkan
VK-GL-CTS issue: 2566
Change-Id: I7462cc74e799c2245407220fa9db7e5b659f86f4
(cherry picked from commit
ca4e5aff66bccbbe88935c10e2c55a3147c1fc03)
Ricardo Garcia [Mon, 19 Apr 2021 13:56:11 +0000 (15:56 +0200)]
Tests for VK_KHR_present_id and VK_KHR_present_wait
Add tests for VK_KHR_present_id and VK_KHR_present_wait. This commit
also refactors some code so it can be reused in several places, hence
marking all WSI tests as affected.
Affected tests:
dEQP-VK.info.device_mandatory_features
dEQP-VK.wsi.*
New tests:
dEQP-VK.wsi.*.present_id_wait.*
Components: Vulkan
VK-GL-CTS issue: 2098
VK-GL-CTS issue: 2099
Change-Id: I1c95fbf031d651773a9fff1c10a23038d73f6e53
(cherry picked from commit
8bf210fd592883b3adebb57c3d6cc49188d1758e)
Alexander Galazin [Tue, 27 Jul 2021 10:57:27 +0000 (12:57 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: Id59fb9125cac9068d68a8e5f219c3dc53a093ad0
Alexander Galazin [Tue, 27 Jul 2021 14:12:00 +0000 (16:12 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.6 into vk-gl-cts/vulkan-cts-1.2.7
Change-Id: I8f8c8aba438300565a896d21d27c2892eef477df
Alexander Galazin [Tue, 27 Jul 2021 11:34:05 +0000 (13:34 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.5 into vk-gl-cts/vulkan-cts-1.2.6
Change-Id: I1e865999cbff46e84b9045400eb2dde830296094
Alexander Galazin [Tue, 27 Jul 2021 10:25:19 +0000 (12:25 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.4 into vk-gl-cts/vulkan-cts-1.2.5
Change-Id: I22fcd718aadfed74408323615cc4bf58618d979a
Alexander Galazin [Tue, 27 Jul 2021 09:29:33 +0000 (11:29 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.3 into vk-gl-cts/vulkan-cts-1.2.4
Change-Id: If23bb885846d42651d7ac77b375b6c44ea02fa93
Alexander Galazin [Tue, 27 Jul 2021 08:01:37 +0000 (10:01 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/vulkan-cts-1.2.3
Change-Id: If1bb9f63d56815c3ced2ac72d17d4e55ec090f39
Samuel Iglesias Gonsálvez [Thu, 15 Jul 2021 10:15:09 +0000 (12:15 +0200)]
Fix early destruction of VkPipelineLayout
Components: Vulkan
VK-GL-CTS issue: 3004
Affected:
dEQP-VK.sparse_resources.shader_intrinsics.*
Change-Id: Id5508fac89961c5bb934005257d2caa26d32f2dd
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Ari Suonpaa [Wed, 9 Sep 2020 11:27:26 +0000 (14:27 +0300)]
Fix validation errors in AHB tests
AHB protected memory tests were also removed as the test
tried to use protected memory without creating a device
and queue that would support protected operations.
VK-GL-CTS Issue: 2508
Affects:
dEQP-VK.api.external.memory.android_hardware_buffer.*
Components: Vulkan
Change-Id: I307e7450d06d20b6497f2a529e5724ae0538e5a9
Piotr Byszewski [Thu, 9 Apr 2020 11:41:09 +0000 (13:41 +0200)]
Clean ExternalMemoryUtil
This change separates choosing of memory type from
allocateExportableMemory utility function. This makes
use of this functions more clear.
Previous implementation needed to be done ASAP and
involved passing of non-const reference to
allocateExportableMemory which was then filled.
This workaround made code unnecessarily hard to follow.
Components: Vulkan
VK-GL-CTS issue: 587
Affects:
dEQP-VK.api.external.memory.*
dEQP-VK.synchronization.signal_order.*
dEQP-VK.synchronization.cross_instance.*
Change-Id: I781388db390f13c7c03785dd0ae34ae0128ec31c
Jin Zhou [Thu, 17 Jun 2021 02:11:46 +0000 (22:11 -0400)]
Fix uninitialized local variables in generated shader.
There is uninitialized variable which is used as texture sampler's
coordinate. The behavior is undefined according to spec.
Affects:
dEQP-GLES3.functional.shaders.random.*
Components: Framework, OpenGL
VK-GL-CTS issue: 2972
Change-Id: I3e68a1a2158d248b24c927c481ecba4001496b3f
Samuel Iglesias Gonsálvez [Fri, 16 Jul 2021 08:28:02 +0000 (10:28 +0200)]
Fix most dEQP-VK.sparse_resources.shader_intrinsics.* validation errors
The majority of the validation errors were due to creating sparse
images before the derived class had the opportunity to check
the feature support of the format for the respective tests.
Change it to check that before anything else.
Components: Vulkan
VK-GL-CTS issue: 3006
Affected:
dEQP-VK.sparse_resources.shader_intrinsics.*
Change-Id: I37308d4a2650cf5cc45ecbffb86a934e6fd182cc
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Ricardo Garcia [Mon, 12 Jul 2021 14:02:41 +0000 (16:02 +0200)]
Additional dynamic depth bias tests
Additional tests to make sure the depth bias dynamic state is not
ignored and works properly, also when used in conjunction with the
dynamic depth bias enable state.
New tests:
dEQP-VK.dynamic_state.rs_state.nonzero_depth_bias*
dEQP-VK.pipeline.extended_dynamic_state.*dynamic_bias_params
Affected tests:
dEQP-VK.pipeline.extended_dynamic_state.*.depth_bias*
Components: Vulkan
VK-GL-CTS issue: 2965
Change-Id: Ic2b4428d112547ca054161728b8e1d403f6394b4
Ricardo Garcia [Tue, 13 Jul 2021 14:14:51 +0000 (16:14 +0200)]
Test VK_EXT_multi_draw with geometry and tessellation shaders
This commit adds new VK_EXT_multi_draw test variants that use geometry
and tessellation shaders in the pipeline to make sure they do not break
with VK_EXT_multi_draw.
New and affected tests:
dEQP-VK.draw.multi_draw.*
Components: Vulkan
VK-GL-CTS issue: 3000
Change-Id: Idfaa6e49895c9d94e484c89d7097af9599b4ed51
Graeme Leese [Wed, 7 Jul 2021 10:41:34 +0000 (11:41 +0100)]
Remove unused test cases from gen-keywords script
The script generated test cases for double underscore in identifiers,
but they were not included in the checked-in copy of the generated
output. The tests appear incorrect, so remove them from the script.
Components: OpenGLES
Affects: None
Change-Id: If301f22afac06a147f1ff58156bcf0ea4cb3b037
Hans-Kristian Arntzen [Tue, 6 Jul 2021 10:01:04 +0000 (12:01 +0200)]
Test dynamic vertex stride of 0.
Goes beyond existing specification and tests if we can use stride 0 as
well.
Components: Vulkan
Vulkan issue: 2742
Added tests:
dEQP-VK.pipeline.extended_dynamic_state.*.zero_stride_with_offset
Change-Id: I4838b60321f27dd4b4546b1e42ed2f6043aec5c1
Graeme Leese [Tue, 6 Jul 2021 13:50:30 +0000 (14:50 +0100)]
Add Image Store tests to BGRA images
These are said to be an important usecase for storage without format but
they're not currently tested. Add tests for these formtas. Only store
tests are currently supported because of limitations in the underlying
test structure.
Components: Vulkan
New tests: dEQP-VK.image.store.without_format.*.b8g8r8a8_*
dEQP-VK.image.format_reinterpret.*.b8g8r8a8_*
Change-Id: I243a14681b262941d95e08e0b5a87ca9ccee9d43
Piotr Byszewski [Mon, 28 Jun 2021 13:54:48 +0000 (15:54 +0200)]
Test fragment shading rate limits and rates
This change verifies all limits for VK_KHR_fragment_shading_rate
and tests vkGetPhysicalDeviceFragmentShadingRatesKHR.
VK-GL-CTS issue: 2397
Components: Vulkan
Affects:
dEQP-VK.fragment_shading_rate.misc.*
Change-Id: I81332ec819009817b1ca0580058617bbc07a53e2
Samuel Iglesias Gonsálvez [Tue, 15 Jun 2021 11:19:12 +0000 (13:19 +0200)]
Add more test related to early fragment tests
- Added tests for EarlyFragmentTest followed by a shader which
discards. Then check that depth buffer is updated but the color
buffer and other outputs are not.
- Added tests that write to gl_SampleMask and checked that do not affect
the depth values written to the depth buffer.
Components: Vulkan
VK-GL-CTS issue: 2968
Added tests:
dEQP-VK.fragment_operations.early_fragment.discard*
dEQP-VK.fragment_operations.early_fragment.samplemask*
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Change-Id: I4a0bd49ab9319747e8c92aaa26f64a4e077fa8a5
Alexander Galazin [Fri, 16 Jul 2021 10:55:30 +0000 (12:55 +0200)]
Remove replacement of bool32
Components: Vulkan
VK-GL-CTS issue: 2963
Affects: none
Change-Id: I4ccb580ba8b142e6425373d1395443ac747172f1
Alexander Galazin [Fri, 16 Jul 2021 09:54:16 +0000 (11:54 +0200)]
Replace DWORD with uint32_t
This change replaces DWORD with uint32_t instead of deUint32
Components: Vulkan
Affects: dEQP-VK.api.*create_win32*
VK-GL-CTS issue: 2963
Change-Id: I32e958863508e4641f769feebd450c25bfc95492
Samuel Iglesias Gonsálvez [Thu, 15 Jul 2021 10:15:09 +0000 (12:15 +0200)]
Fix early destruction of VkPipelineLayout
Components: Vulkan
VK-GL-CTS issue: 3004
Affected:
dEQP-VK.sparse_resources.shader_intrinsics.*
Change-Id: Id5508fac89961c5bb934005257d2caa26d32f2dd
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Mikko Tiusanen [Fri, 9 Jul 2021 12:28:20 +0000 (15:28 +0300)]
Reorder vulkan enum elements
Reorders lines in linear vulkan enums so that *_LAST is placed
after all unique values, followed by equivalence enums and
*_MAX_VALUE (last).
VK-GL-CTS issue: 2684
Components: Vulkan
Change-Id: I129a0b0afe3574a91ccc860ed6ea8de27671f9ff
Alexander Galazin [Mon, 19 Jul 2021 13:25:26 +0000 (15:25 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/master
Change-Id: I97026a16399e415525246d8f9a0be895f2d101be
Alexander Galazin [Fri, 9 Jul 2021 11:34:20 +0000 (13:34 +0200)]
Use uintptr_t in the framework
This change replaces deUintptr with uintptr_t
in the framework files
Components: Vulkan
Affects: dEQP-VK.*
VK-GL-CTS issue: 2963
Change-Id: Ic9bc75782e4b8825030044459b5ff90f78711eb3
Liam Middlebrook [Fri, 9 Jul 2021 17:38:28 +0000 (10:38 -0700)]
Change initializer for array of structures to avoid GCC bug
Works around the following gcc 4.8.4 internal compiler error:
vktReconvergenceTests.cpp:1169:35: internal compiler error: in gimplify_init_constructor, at gimplify.c:4271
SubgroupState stateStack[10] = {};
Components: Vulkan
Affected tests: dEQP-VK.reconvergence.*
VK-GL-CTS issue: 3001
Change-Id: I42ec5aa978351f84ad41aae4af9f4977d3263461
James Jones [Wed, 7 Jul 2021 20:59:12 +0000 (13:59 -0700)]
Fix FreeBSD build of VK_EXT_physical_device_drm tests
Linux defines the major() and minor() macros in
the sys/sysmacros.h header, but FreeBSD does not
have this header and instead defines them in
sys/types.h.
Components: Vulkan
Affects: dEQP-VK.api.device_drm_properties.*
Change-Id: I0bed149d24241e152437f530f5eb137738c46122
Alexander Galazin [Fri, 16 Jul 2021 08:55:49 +0000 (10:55 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.6 into vk-gl-cts/vulkan-cts-1.2.7
Change-Id: I3e12f2ef494b16c16e6aa957c99c543a057a7003
Alexander Galazin [Fri, 9 Jul 2021 11:23:57 +0000 (13:23 +0200)]
Use [u]int64_t in the framework
This change replaces deUint64/deInt64 with uint64_t/int64_t
in the framework files
Components: Vulkan
Affects: dEQP-VK.*
VK-GL-CTS issue: 2963
Change-Id: I76b24fbfadbd3fb31c9a20b172c021e0305290c2
Graeme Leese [Tue, 6 Jul 2021 13:12:43 +0000 (14:12 +0100)]
Extend image tests to support formats with no formats
Unless the test actually needs a SPIR-V format token, allow testing of
Vulkan formats for which there is no corresponding SPIR-V token. At the
moment this functionality is not used, but tests will soon be added that
exercise it.
Components: Framework, Vulkan
Affects (trivially): dEQP-VK.image.*
Change-Id: I11e16b6951ca40444131fa1e8d5e7bce6b075f85
Graeme Leese [Tue, 6 Jul 2021 14:28:17 +0000 (15:28 +0100)]
Define a framework function for getting SPIR-V format tokens
These are used in a couple of different tests, so it doesn't make sense
to define the format tokens in two places.
Components: Framework, Vulkan
Affects (trivially): dEQP-VK.image.*
Change-Id: Icffd8ac4b0d78e5dab076780e0221af3f358d74c
Alexander Galazin [Fri, 16 Jul 2021 07:01:36 +0000 (09:01 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.5 into vk-gl-cts/vulkan-cts-1.2.6
Change-Id: I73e4fbe8f154f15a77498121181c6a48028203fe
Sławomir Cygan [Thu, 15 Jul 2021 13:22:26 +0000 (15:22 +0200)]
Remove tests with too many overlapping instances in the accelleration structure
These tests generate a grid of random triangles and assign them to the large
number of instances in the acceleration structure. Because of the randomness,
all instances overlap with each other and the accelleration structure is extremely
slow to trace - as each ray must traverse through all instances.
This change removes some tests cases with 65536 instances and tests cases with
1048576 instances to avoid device timeouts.
The tests apply only to implementations with host accelleration structure builds
supported.
Components: Vulkan
VK-GL-CTS Issue: 3005
Change-Id: I94bcde596cd097672cf8e00c6fe018328998cb37
Affects: dEQP-VK.ray_tracing_pipeline.build.*
Piotr Byszewski [Thu, 11 Mar 2021 14:00:38 +0000 (15:00 +0100)]
Test blitting from compressed formats
This change extends existing tests to also test blitting of BC*,
ETC and EAC compressed formats onto all compatible uncompressed
formats.
Functionality from PipelineImageUtil is reused in blit tests
to generate random compressed data that is also stored in
uncompressed version. Compressed data is used to do the blit
on GPU while uncompressed version is used for verification on CPU.
VK-GL-CTS issue: 2366
Components: Vulkan
Affects:
dEQP-VK.api.copy_and_blit.*
Change-Id: Ifab885dc09b2d663d95b49e25458873c2eb0b0c4
Samuel Iglesias Gonsálvez [Wed, 19 May 2021 15:33:01 +0000 (17:33 +0200)]
Add test of vkCmdCopyImage with both layers and mipmaps
Components: Vulkan
VK-GL-CTS issue: 2983
Added:
dEQP-VK.api.copy_and_blit.*.image_to_image.array.array_to_array_whole_mipmap*
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Change-Id: I1f949e6065a125ffc2703abc2667e04e7df465a9
Ricardo Garcia [Fri, 2 Jul 2021 10:56:47 +0000 (12:56 +0200)]
Test dynamic topology with tessellation shaders
Add new test variants to the extended dynamic state tests to check using
dynamic topology with tessellation shaders works as expected.
New tests:
dEQP-VK.pipeline.extended_dynamic_state.*topology_patch*
Affected tests:
dEQP-VK.pipeline.extended_dynamic_state.*
Components: Vulkan
VK-GL-CTS issue: 2965
Change-Id: I40a3928e986b83c5a22c3d36431b5d272aa8617e
Graeme Leese [Tue, 6 Jul 2021 14:20:18 +0000 (15:20 +0100)]
Remove extended image format capabilities from more tests
The extended storage formats capability is mandatory, so simplify the
code by using ti all the time, instead of trying to determine when it is
required.
Also, change the method of determining when 64 bit support is required
to be consistent with the image.extend_operands_spirv1p4 tests.
Components: Framework, Vulkan
Affects: dEQP-VK.image.mismatched_write_op.*
Change-Id: Ia9cc474977e71a8682c886f2f6cd852be38f06c4
Graeme Leese [Tue, 6 Jul 2021 13:59:13 +0000 (14:59 +0100)]
Simplify image extend operand tests for extended formats
It is always valid to use the StorageImageExtendedFormats capability in
Vulkan, so simplify the tests by using it unconditionally, rather than
tracking when it would need to be turned on.
Components: Vulkan
Affects: dEQP-VK.image.extend_operands_spirv1p4.*
Change-Id: I5f0cc3c89f392965f72b07a79846000abb4bc5b1
Alexander Galazin [Fri, 9 Jul 2021 11:21:21 +0000 (13:21 +0200)]
Use [u]int16_t in the framework
This change replaces deUint16/deInt16 with uint16_t/int16_t
in the framework files
Components: Vulkan
Affects: dEQP-VK.*
VK-GL-CTS issue: 2963
Change-Id: I96948614f5cab64fff5fd65a7879660dfb7365d6
Alexander Galazin [Fri, 9 Jul 2021 11:17:38 +0000 (13:17 +0200)]
Use [u]int8_t in the framework
This change replaces deUint8/deInt8 with uint8_t/int8_t
in the framework files
Components: Vulkan
Affects: dEQP-VK.*
VK-GL-CTS issue: 2963
Change-Id: I5cadb68a7f34f054bdb76559ad393234c7d8c22a