Alexander Galazin [Sat, 23 May 2020 17:47:38 +0000 (19:47 +0200)]
Merge pull request #195 from sigexp/pixelstoragemodes
Add tests for usage of pixel storage modes
Alexander Galazin [Fri, 22 May 2020 18:46:19 +0000 (20:46 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: I00f85ff8e2e090a76aadd10873a9e5f2c97a99c6
Alexander Galazin [Fri, 22 May 2020 13:27:00 +0000 (15:27 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: Ib92cff43028341f5341b62242d909d5a6437a03a
Alexander Galazin [Fri, 22 May 2020 12:18:06 +0000 (14:18 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.0 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I670536e7c9c657dc578a76ad7964df03fefe592e
Alexander Galazin [Fri, 22 May 2020 11:49:31 +0000 (13:49 +0200)]
Merge vk-gl-cts/opengl-es-cts-3.2.6 into vk-gl-cts/master
Change-Id: Ief430387884ceddd9750e1d92a65b97a4d062f36
James Glanville [Wed, 6 May 2020 13:01:23 +0000 (14:01 +0100)]
Limit dimensionality of arrays-of-arrays in random SSBO tests
One of these tests used a 5 dimensional array-of-arrays, resulting
in thousands of instructions that caused issues on devices with low
ram. This change limits the total dimensionality to prevent this.
Components: AOSP
VK-GL-CTS issue: 2355
Affects:
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.15
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.23
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.41
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.7
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.21
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.36
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.49
Change-Id: I9211e376130014e6c1d50f4a2d843033a5219b2d
Alexander Galazin [Thu, 7 May 2020 14:16:08 +0000 (16:16 +0200)]
Fix Fedora 32 gcc/clang warnings
Component: AOSP, OpenGL, Vulkan
VK-GL-CTS issue: 2350
Affects:
KHR*direct_state_access.vertex_arrays*
KHR*core.arrays_of_arrays.sized_declarations_invalid*
dEQP-VK.geometry.*
Change-Id: I55680ac671d0610917d45f7187deec6e883dd6b7
(cherry picked from commit
a4ccc4a84710123839a4f4a9409e93af9ed1ddbc)
Alexander Galazin [Thu, 7 May 2020 14:16:08 +0000 (16:16 +0200)]
Fix Fedora 32 gcc/clang warnings
Component: AOSP, OpenGL, Vulkan
VK-GL-CTS issue: 2350
Affects:
KHR*direct_state_access.vertex_arrays*
KHR*core.arrays_of_arrays.sized_declarations_invalid*
dEQP-VK.geometry.*
Change-Id: I55680ac671d0610917d45f7187deec6e883dd6b7
Mike Byrne [Mon, 18 Nov 2019 12:30:23 +0000 (12:30 +0000)]
Split spirv_assembly tests workload
The dEQP-VK.spirv_assembly.* tests should allow the render workload to
be split into multiple submissions if required to prevent GPU timeouts
encountered in some tests.
An additional flag is added to allow specific test groups to request
that the test workload is split.
Affects: dEQP-VK.spirv_assembly.*
VK-GL-CTS Issue: 2294
Components: Vulkan
Change-Id: I9295f675c06b3b966d89afae98334ebb5c9530c8
Ricardo Garcia [Tue, 12 May 2020 13:05:32 +0000 (15:05 +0200)]
Add --deqp-print-validation-errors cmd line option
This commit adds a new --deqp-print-validation-errors command-line
option to be able to print validation errors to stderr as soon as they
are generated by the layers, making it easier to both quickly see
validation errors without using the test log and use the printing line
as a breakpoint to debug validation error causes.
VK-GL-CTS issue: 2361
Components: Vulkan, Framework
Change-Id: I32b79ede82c9b7d6f0c369ff4cfcc47f5992440c
Ricardo Garcia [Wed, 29 Apr 2020 13:52:03 +0000 (15:52 +0200)]
Test using ViewportIndex from frag shaders only
This commits adds a new test to check the viewport index can be
correctly read from the fragment shader even when not set by a previous
vertex processing shader stage. In that case, the implicit value is 0.
New test:
dEQP-VK.draw.shader_viewport_index.fragment_shader_implicit
Components: Vulkan
VK-GL-CTS issue: 2339
Change-Id: Idb994d3b5bd87f3ee3e2413c38ec61493a39c529
Alexander Galazin [Thu, 21 May 2020 08:51:18 +0000 (10:51 +0200)]
Merge vk-gl-cts/opengl-cts-4.6.0 into vk-gl-cts/master
Change-Id: If73e9fb2ab24139f72bca734f252fb0cab8f0828
Ari Suonpaa [Thu, 7 May 2020 12:48:53 +0000 (15:48 +0300)]
Test OpArrayLength with stride larger than element size
This new test is similar to
dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_*
but an array stride is changed. This verifies that OpArrayLength
implementation calculates the array size correctly even
when an array element size and a stride don't match.
VK-GL-CTS Issue: 2236
New tests:
dEQP-VK.spirv_assembly.instruction.compute.oparraylength.array-stride-larger-than-element-size
Change-Id: I5b96391a3935f039996cc28efd6717f379757100
Components: Vulkan
Brian Watling [Fri, 8 May 2020 17:42:15 +0000 (13:42 -0400)]
Add an Amber test which uses textureOffset()
This test exercises textureOffset() to confirm correct behaviour.
New tests:
dEQP-VK.graphicsfuzz.texel_offset
Components: Vulkan
Change-Id: Ib5827039ab25fc6a9de0778139ab668ea41306af
Ari Suonpaa [Sat, 9 May 2020 08:28:09 +0000 (11:28 +0300)]
Test negative value conversion to b10g11r11 float format.
Added a test that verifies negative values are converted
correctly to b10g11r11 packed float format. These values
need to be clamped to zero.
Also moved texture subgroup LOD Amber test files to
a common directory shared by the new test.
VK-GL-CTS Issue: 2271
New tests:
dEQP-VK.texture.conversion.b10g11r11-negative-values
Components: Vulkan
Change-Id: Ide52844f1467f1e7c23d7510ba951d398a8814ac
Timothy Arceri [Sun, 3 May 2020 05:57:02 +0000 (15:57 +1000)]
Fix some egl robustness tests
Because the values of color were initially undefined an optimised
compiler can simply set all components of the vector to the value
being assigned to color[u_index] and eventually eliminate color and
u_index completely.
To avoid this we initialise color.
Affects:
dEQP-EGL.functional.robustness.reset_context.shaders*
Components: OpenGL
VK-GL-CTS issue: 2349
Change-Id: I6eb929eec07b039afb247427af91aba65dbade9b
Aleksy Sokolowski [Tue, 28 Apr 2020 15:52:02 +0000 (17:52 +0200)]
Fix epsilon calculation for RGB10_A2 pixel format
10 bit precision epsilon was used for test cases
which support only 8-bit precision (due to 8 bit texture
format used or pixel transfers using 8 bit data types).
Components: OpenGL
VK-GL-CTS Issue: 2335
Affects:
KHR-GL46.texture_gather.plain-gather-float-2d-srgb-alpha
KHR-GL46.compute_shader.pipeline-compute-chain
Change-Id: Ic40eb6caae4106fd55b62253aaaafa84237b03fa
Piotr Byszewski [Thu, 14 May 2020 13:26:18 +0000 (15:26 +0200)]
Fix warnings found by compiling with MS VC++ 2019
This change resolves all found warnings including 'nodiscard'
warnings mentioned in the issue description.
Components: Vulkan, OpenGL, EGL
VK-GL-CTS public issue: 188
Affects:
*
Change-Id: I962f02a1a7e55dcc5141e1cbdf2497482972e02a
Piotr Byszewski [Wed, 13 May 2020 16:25:24 +0000 (18:25 +0200)]
Correct few tests from indirect_dispatch group
All test instances that were part of gen_in_compute group used
descriptor set layout that was created and stored localy - in helper
function. This change stores it as a class attribute.
Components: Vulkan
VK-GL-CTS public issue: 205
Affects:
dEQP-VK.compute.indirect_dispatch.gen_in_compute.*
Change-Id: Ie54b33f145d6aa54acd62b3a074938eedd1ac3f3
Piotr Byszewski [Tue, 12 May 2020 10:48:47 +0000 (12:48 +0200)]
Correct sparse_image_format_properties2 tests
numCoreProperties and numExtProperties were initialized to ~0 and
this value was not checked later which led CTS to alocate 2^32-1
element vectors. This causes a bad alloc exception.
Components: Vulkan
VK-GL-CTS public issue: 135
Affects:
dEQP-VK.api.info.sparse_image_format_properties2.*
Change-Id: Iaf402069ca52bec5f7ba569b223e76d2ccc72316
Piotr Byszewski [Tue, 12 May 2020 17:00:30 +0000 (19:00 +0200)]
Clarify integer formats conversions in blit_image tests
This change just updates comments to make code clear.
It was not clear if getTextureChannelClass identified how values are
stored or how they are sampled but it was specified in description of
TextureChannelClass. This change clarifies description of
getTextureChannelClass and comments in blit tests to avoid confusion
in future.
Components: Vulkan
VK-GL-CTS public issue: 174
Change-Id: I49944508337d2950eb8066bf8e3b9ff3db855668
Piotr Byszewski [Mon, 11 May 2020 15:12:29 +0000 (17:12 +0200)]
Correct external_memory_host tests
Images and buffers that will be bound to imported memory must be
created with a VkExternalMemory(Buffer/Image)CreateInfo.
Components: Vulkan
VK-GL-CTS public issue: 193
Affects:
dEQP-VK.memory.external_memory_host.*
Change-Id: I8a28e2ca25eb478c664474140ea5e36120b8463f
Piotr Byszewski [Mon, 11 May 2020 10:33:30 +0000 (12:33 +0200)]
Correct opatomic_storage_buffer_volatile tests
numWorkGroups used in volatile atomics tests was higher than minimal
value that should be supported by implementation. This change reduces
it to minimal value of maxComputeWorkGroupCount. Note that in this
case we can't query limit properties as we don't have access to
Context at shader construction level.
Components: Vulkan
VK-GL-CTS public issue: 203
Affects:
dEQP-VK.spirv_assembly.instruction.compute.opatomic_storage_buffer_volatile.*
Change-Id: Ibf91e5629431525a195a2221ee65371ed1ba8809
Alexander Galazin [Wed, 20 May 2020 13:26:35 +0000 (15:26 +0200)]
Merge vk-gl-cts/opengl-es-cts-3.2.6 into vk-gl-cts/master
Change-Id: Ieeee1002be28bdaffed9177386edf13cd860d610
Alexander Galazin [Wed, 20 May 2020 10:11:52 +0000 (12:11 +0200)]
Merge vk-gl-cts/opengl-es-cts-3.2.5 into vk-gl-cts/opengl-es-cts-3.2.6
Change-Id: I9ff5ee4471a46bfc98a96186c79bbaa79aa5d37f
Alexander Galazin [Tue, 19 May 2020 11:56:46 +0000 (13:56 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: Ie87d541785c979466d4a45dbb0c3df8b8a0f6884
Alexander Galazin [Fri, 15 May 2020 15:10:48 +0000 (17:10 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: I545a33bdcfbd332d0646e35d1815cc84f2fe645d
Alexander Galazin [Wed, 13 May 2020 07:41:47 +0000 (09:41 +0200)]
Whitelist Vulkan CTS 1.2.2.1
Components: Vulkan
Affects: dEQP-VK.api.driver_properties.properties
Change-Id: I8c1b46d210dec2ad6f85fbb2cd04c9969d350069
Alexander Galazin [Thu, 14 May 2020 16:50:52 +0000 (18:50 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I8224a74ae64ae8aafa4e0edbaab5aa7c5f2b322d
Alexander Galazin [Thu, 14 May 2020 15:13:47 +0000 (17:13 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.0 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I2594c8998a3e6dcc779d6fd84715ee26dddce726
Slawomir Cygan [Thu, 7 May 2020 15:47:08 +0000 (17:47 +0200)]
Add missing barrier to HOST in memory_barrier test
The test was lacking a barrier between device write access and
validation of the data on host.
Components: Vulkan
VK-GL-CTS Issue: 2359
Affects: dEQP-VK.memory_model.message_passing.*
Change-Id: Ia75277aaa2c7e25bff807cd3c6ebe14513403bfc
Matthew Netsch [Mon, 4 May 2020 18:15:49 +0000 (14:15 -0400)]
Fix wide line rasterization tests
Components: Vulkan
VK-GL-CTS Issue: 2347
Affects:
dEQP-VK.rasterization.primitives*line*wide
Change-Id: Ia27d80bfb57b9a09a631580e37d1f1277e99d365
Courtney Goeltzenleuchter [Wed, 4 Dec 2019 21:01:39 +0000 (14:01 -0700)]
GLES 3.1 negative framebuffer texture2D test fails
Test is using wrong max size when checking cube map textures.
Affected Test:
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d
Components: OpenGL ES
VK-GL-CTS issue: 2141
Change-Id: I35bcdcfb8181a9eb062da10234f56267c56ac188
(cherry picked from commit
40d1312085353785186aae62ef098ae5c3a2a5c5)
Courtney Goeltzenleuchter [Tue, 17 Dec 2019 14:40:46 +0000 (07:40 -0700)]
OpenGL ES: Use shader storage alignment
Affected Test:
KHR-GLES31.core.shader_storage_buffer_object.advanced-switchBuffers-vs
Components: OpenGL ES
VK-GL-CTS issue: 2151
Change-Id: If427cad30ac36cc96a29f936e2ef7a0c4a301667
(cherry picked from commit
5fd95f6e03e1a0ece7052c6d9931cac825909204)
Courtney Goeltzenleuchter [Wed, 31 Jul 2019 15:59:40 +0000 (09:59 -0600)]
Remove illegal parameter use in fbo.completeness
dEQP.GLES2.functional.fbo.completeness.renderable.texture
was calling glTexImage2D with a internalformat of GL_SRGB8
which is not valid for GLES 2.0 even with GL_EXT_sRGB.
Affects:
dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8
dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8
dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8
Components: AOSP
VK-GL-CTS issue: 1906
Change-Id: I97003eda10600a0a33e7212b6b5de34c5b2c8848
(cherry picked from commit
1de1dae629667dd79c896906540b1360e78d001a)
Courtney Goeltzenleuchter [Wed, 11 Sep 2019 15:01:22 +0000 (09:01 -0600)]
Fix use of invalid HALF_FLOAT enum
GLES 2.0 supports GL_HALF_FLOAT_OES via the OES_texture_half_float
extension. When the enum GL_HALF_FLOAT was added in GLES 3.0,
unfortunately it did not use the same enum value as GL_HALF_FLOAT_OES.
Technically, GL_HALF_FLOAT is not supported on a GLES 2.0 implementation
even with OES_texture_half_float. Fix GLES 2.0 tests to always use
GL_HALF_FLOAT_OES to avoid the issue.
Affects:
KHR-GLES2.core.internalformat.texture2d.*_half_float_*
KHR-GLES3*.core.internalformat.texture2d.*_half_float_*
Components: OpenGL
VK-GL-CTS issue: 1923
Change-Id: I9b43091382341798a0d62b9a4ec09153e915dc5c
(cherry picked from commit
f7ede20a9805615a3c371b786fa7407708cf612c)
Jim Hauxwell [Tue, 28 Aug 2018 16:33:48 +0000 (17:33 +0100)]
Fix invalid combinations for texture/copy on ES2 driver
OES_packed_depth_stencil describes the valid combinations available.
Texturing is only valid from it when OES_depth_texture is also present.
ES3 added depth texturing, but used different tokens than the initial
extension.
Affects:
KHR-GLES2.core.internalformat.texture2d.
depth_stencil_unsigned_int_24_8_depth24_stencil8
KHR-GLES*.core.internalformat.texture2d.
depth_stencil_unsigned_int_24_8_depth_stencil
Components: OpenGL
VK-GL-CTS issue: 1261
Change-Id: I91262c2c7eb71c9d3ff1eb59931227132b1828f9
(cherry picked from commit
33af336e530859e099df76b4c7d4acc5add3c2f7)
Tim Van Patten [Wed, 28 Aug 2019 18:15:23 +0000 (12:15 -0600)]
Use unsized internal format in KHR-GLES2.texture_3d.[copy_sub_image|framebuffer_texture].rgba8
These tests are using GL_RGBA8 as an internal format for TexImage2D.
Sized internal formats are not allowed for GLES 2.0.
Affects:
KHR-GLES2.texture_3d.copy_sub_image.rgba
KHR-GLES2.texture_3d.framebuffer_texture.rgba8
VK-GL-CTS issue: 1960
Change-Id: I8272e4ca0e2a9eda1161a5135e11f67b4ea5af6d
(cherry picked from commit
eec82ceff77877bdad7fc94f8ae793db09ffff46)
Courtney Goeltzenleuchter [Tue, 30 Jul 2019 16:20:29 +0000 (10:20 -0600)]
Fix invalid parameter for GLES 2.0
Test was creating a texture with format of GL_DEPTH_STENCIL and
internalformat of GL_DEPTH24_STENCIL8_OES. In ES 2.0 the format and
internalformat must match.
Added an extra case when running 3.0 or better that does allow different
values for format and internalformat.
Affects:
KHR-GLES2.core.internalformat.texture2d.depth_stencil_unsigned_int_24_8_depth24_stencil
Components: OpenGL
VK-GL-CTS issue: 1903
Change-Id: I710975a0ea7c1d551f412590f887d9412be6f897
(cherry picked from commit
0c9f0c072d530bf378bc50265284fbc95c450e69)
James Hauxwell [Fri, 13 Jul 2018 13:52:40 +0000 (14:52 +0100)]
Fix invalid combinations for texture/copy on ES2 driver
The OES_rgb8_rgba8 extension specification only specifies
RenderbufferStorageOES for additional GL_RGB8/GL_RGBA8 tokens. ES3 spec
made these mandatory formats for texturing/copying.
Affects:
KHR-GLES2.core.internalformat.texture2d.rgb_unsigned_byte_rgb8
KHR-GLES2.core.internalformat.texture2d.rgba_unsigned_byte_rgb8
KHR-GLES2.core.internalformat.copy_tex_image.rgba8
KHR-GLES2.core.internalformat.copy_tex_image.rgb8
Components: OpenGL
VK-GL-CTS issue: 1260
Change-Id: Icbbd8882c5e623f5ac4725eebf977f535cfbfa31
(cherry picked from commit
5f7e621d6065f843651f7ca8f98989d05ca0bd65)
Alexander Galazin [Wed, 13 May 2020 16:11:23 +0000 (18:11 +0200)]
Merge vk-gl-cts/opengl-es-cts-3.2.5 into vk-gl-cts/opengl-es-cts-3.2.6
Change-Id: Ic55e8e0a9f73adb4d1c3c9a9bbd4f15932511027
Courtney Goeltzenleuchter [Fri, 20 Dec 2019 20:29:38 +0000 (13:29 -0700)]
Migrate deRoundUp32 to deInt32.h
deRoundUp32 is used in a number of places, promote to utility function.
back ported https://gerrit.khronos.org/#/c/5197 work at 3.2.5.1 tag.
Components: OpenGL ES
VK-GL-CTS issue: 2151
Change-Id: I3aaec51e0eec0e8e31e2082443d0d332bb8c3a56
Alexander Galazin [Wed, 13 May 2020 07:40:05 +0000 (09:40 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: Ib55bcc487e332625eccada5ce31be1b56c73395e
Alexander Galazin [Wed, 13 May 2020 06:33:12 +0000 (08:33 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I14bd589f1bd3adfabed0c7247fbef7deebe74c96
Alex Walters [Wed, 22 Apr 2020 17:03:12 +0000 (18:03 +0100)]
Non-strict line interpolation and rasterization
Firstly non-strict line rasterization (parallelogram decomposed to
triangles) is changed to use the TriangleInterpolator do determine
interpolated colours. Line endpoint attributes are duplicated to the
end vertices of parallelogram lines, which means that interpolation is
not along the normal of the line, but would be parallel to the major
axis.
For the interpolation to be calculated correctly by the
TriangleInterpolator, the triangle geometry needed to be produced with
the correct w values from the line endpoints, previously the triangle
was generated pre-projected with 1.0 for the W-coordinates. The
perspective interpolation previously was calculated separately using
the original line parameters passed to MultisampleLineInterpolator.
The second part of the change is to allow for a non-strict line 'GLES'
centric relaxation - GLES specified 1px non-antialiased lines would use
the 'diamond-exit' rule to produce bresenham lines. Vulkan only
specified parallelograms, but not all GLES implementations are able
to disable the 1px bresenham behaviour.
All changes are in verifyMultisameplLineGroupInterpolation and
verifyMultisameplLineGroupInterpolationInternal. Strict lines are not
affected.
This fixes Imaginations 1.2.2.x failures in:
dEQP-VK.rasterization.flatshading*line*
dEQP-VK.rasterization.interpolation*line*
Affects:
dEQP-VK.rasterization*line*
dEQP-GLES2.functional.rasterization*line*
dEQP-GLES3.functional.rasterization*line*
Components: Framework
VK-GL-CTS Issue: 2274
Change-Id: I0cfd496969512bdbf9d0156ea8f43e737c44512f
Yiwei Zhang [Sat, 2 May 2020 05:06:40 +0000 (22:06 -0700)]
Suppress -Werror=array-bounds for latest GCC
VK-GL-CTS Issue: 2345
Change-Id: Id2a04a13dd3a13cc159919778315218e2f136fca
Rosen Zhelev [Fri, 13 Mar 2020 16:23:13 +0000 (16:23 +0000)]
Extend Android Hardware Buffer external memory format tests
Add testing of depth and stencil Android Hardware Buffer formats.
These are added in Android API version 28 and present in the Format
Equivalence Table for VK_ANDROID_external_memory_android_hardware_buffer
Added tests:
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d16_unorm
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.x8_d24_unorm_pack32
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d24_unorm_s8_uint
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat_s8_uint
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.s8_uint
Components: Vulkan
VK-GL-CTS issue: 2280
Change-Id: Ia90efc34f600eea6a1510276f3edab668c253459
Alexander Galazin [Thu, 7 May 2020 14:16:08 +0000 (16:16 +0200)]
Ensure alphabetical order of xml attributes
Python 3.8 removed artificial alphabetical ordering
of attributes in ElementTree. The recommended solution
to avoid changes in generated xml is to add attributes
in the alphabetical order directly in the source code.
See https://github.com/python/cpython/commit/
63673916464bace8e2147357395fdf3497967ecb
Components: Framework
VK-GL-CTS issue: 2358
Change-Id: Ife4b93a01d76f1f99fcdf2c1d13291ae5c706d85
(cherry picked from commit
b2d84418efc74c558be55c2934e14c2a93edefed)
Alexander Galazin [Thu, 7 May 2020 14:16:08 +0000 (16:16 +0200)]
Ensure alphabetical order of xml attributes
Python 3.8 removed artificial alphabetical ordering
of attributes in ElementTree. The recommended solution
to avoid changes in generated xml is to add attributes
in the alphabetical order directly in the source code.
See https://github.com/python/cpython/commit/
63673916464bace8e2147357395fdf3497967ecb
Components: Framework
VK-GL-CTS issue: 2358
Change-Id: Ife4b93a01d76f1f99fcdf2c1d13291ae5c706d85
Alexander Galazin [Fri, 8 May 2020 17:53:59 +0000 (19:53 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: I4769eb2ad81f29030c947fb1507fd8d3b64d385b
Alexander Galazin [Fri, 8 May 2020 16:32:19 +0000 (18:32 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I6f501d0a79d072f3c3178ceda69dff5dfa9f98a0
Alexander Galazin [Fri, 8 May 2020 15:25:26 +0000 (17:25 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.0 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: Ibebde574b312ceb0f9077bcbe13ef5594387b2eb
Connor Abbott [Mon, 4 May 2020 16:43:11 +0000 (18:43 +0200)]
fix input dependency for renderpass depth/stencil format tests
This appears to be a copy/paste mistake. The exact stage/access bits was
taken from other dependencies with an input attachment which is a
depth/stencil attachment.
Affected tests:
dEQP-VK.renderpass.*.formats.d16_unorm.input.*
dEQP-VK.renderpass.*.formats.x8_d24_unorm_pack32.input.*
dEQP-VK.renderpass.*.formats.d32_sfloat.input.*
dEQP-VK.renderpass.*.formats.d24_unorm_s8_uint.input.*
dEQP-VK.renderpass.*.formats.d32_sfloat_s8_uint.input.*
Change-Id: Ib1cde2371781cc8337905af04e0b7732b74333af
Components: Vulkan
VK-GL-CTS issue: 2351
Slawomir Cygan [Mon, 27 Apr 2020 13:14:42 +0000 (15:14 +0200)]
Avoid exceeding maxPerStageResources in descriptor_indexing tests
The 'calculateInLoop; (*_in_loop) variant of the test is using additional
uniform texel buffer descriptor binding in pipeline layout.
This binding was counted only against maxPerStageDescriptorSampledImages and
maxDescriptorSetSampledImages limits, but not maxPerStageResources.
The fix is to count it against all three limits - but do this only when needed (in
*_in_loop) tests.
Component: Vulkan
VK-GL-CTS Issue: 2333
Affects: dEQP-VK.descriptor_indexing.*
Change-Id: I1c3476cb8c50c3ed61e73ecd4c106e6e9b613022
Ari Suonpaa [Mon, 27 Apr 2020 07:06:18 +0000 (10:06 +0300)]
Split subgroupBroadcast tests
Subgroup broadcast tests with required subgroup size were
iterating the range of supported sizes in a single test.
These are now split into own test cases to prevent long
execution times of these tests and to allow the test
group to run faster when running tests in parallel.
Affects:
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast*
Components: Vulkan
VK-GL-CTS issue: 2327
Change-Id: I5af34cebee0fd58e5e065dbdef882badcf04a90b
Ricardo Garcia [Fri, 3 Apr 2020 16:41:13 +0000 (18:41 +0200)]
Test variableMultisampleRate with non-empty framebuffer
This commits adds new test variants to the existing variable rate
multisample tests to check a non-empty framebuffer does not affect the
results, both when the subpass is still completely empty and when the
subpass contains an VK_ATTACHMENT_UNUSED attachment reference.
New tests:
dEQP-VK.pipeline.multisample.variable_rate.*_fb_*
Components: Vulkan
VK-GL-CTS issue: 2152
Change-Id: Ic8aabad6a00ca29c4eb624222548c6c607f6dec6
Ari Suonpaa [Wed, 29 Apr 2020 09:21:54 +0000 (12:21 +0300)]
Added a fourth batch of coverage tests found by GraphicsFuzz
New tests:
dEQP-VK.graphicsfuzz.cov-const-folding-ceil-vec4
dEQP-VK.graphicsfuzz.cov-const-folding-det-identity
dEQP-VK.graphicsfuzz.cov-const-folding-same-condition
dEQP-VK.graphicsfuzz.cov-const-folding-sinh-inf
dEQP-VK.graphicsfuzz.cov-dag-combiner-neg-div-pow2
dEQP-VK.graphicsfuzz.cov-dag-combiner-same-cond-nested
dEQP-VK.graphicsfuzz.cov-increment-inside-clamp
dEQP-VK.graphicsfuzz.cov-loop-findmsb-findlsb
dEQP-VK.graphicsfuzz.cov-max-clamp-same-minval
dEQP-VK.graphicsfuzz.cov-selection-dag-same-cond-twice
dEQP-VK.graphicsfuzz.cov-simplify-clamp-max-itself
dEQP-VK.graphicsfuzz.cov-simplify-component-uniform-idx
dEQP-VK.graphicsfuzz.cov-simplify-div-by-uint-one
dEQP-VK.graphicsfuzz.cov-simplify-ldexp-exponent-zero
dEQP-VK.graphicsfuzz.cov-simplify-mul-identity
dEQP-VK.graphicsfuzz.cov-simplify-not-less-than-neg
dEQP-VK.graphicsfuzz.cov-simplify-select-fragcoord
dEQP-VK.graphicsfuzz.cov-simplify-sign-cosh
dEQP-VK.graphicsfuzz.cov-simplify-smoothstep-undef
dEQP-VK.graphicsfuzz.cov-value-tracking-const-dfdy
dEQP-VK.graphicsfuzz.cov-value-tracking-inclusive-or
dEQP-VK.graphicsfuzz.cov-value-tracking-uniform-incident
Components: Vulkan
Change-Id: If6d0803f73424c2e1fcc922e738803fac8b7cf60
Alexander Galazin [Thu, 7 May 2020 18:13:23 +0000 (20:13 +0200)]
Merge vk-gl-cts/opengl-cts-4.6.0 into vk-gl-cts/master
Change-Id: I98e6a4466dad826eb55fb9cf99d81d217f610123
Alexander Galazin [Thu, 7 May 2020 14:21:38 +0000 (16:21 +0200)]
Merge vk-gl-cts/opengl-es-cts-3.2.6 into vk-gl-cts/master
Change-Id: I209deda6936efa25b41d98bbefcca889fa9f1906
Joshua Ashton [Fri, 17 Apr 2020 03:17:07 +0000 (04:17 +0100)]
Make ImageSamplingInstance loop over pNexts
We need this to potentially support multiple pNexts.
Affected tests:
dEQP-VK.pipeline.sampler.*
Components: Vulkan
VK-GL-CTS issue: 2331
Change-Id: Ia38f9a6f2a2ffafe1d71c8169bb8f20f8cde1da5
Alexander Galazin [Thu, 7 May 2020 07:09:13 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: I0e426c55c733847803339048389c18163350ef4f
Alexander Galazin [Thu, 7 May 2020 07:09:12 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I37ceae996c069a640b7c9c67177bc6b0fe6ee5ee
Alexander Galazin [Thu, 7 May 2020 07:09:10 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.0 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I2a9e7765fb9f8fd160fe57074aaba10f661a6761
Alexander Galazin [Thu, 7 May 2020 07:09:09 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.6 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I1facde6f3a64f114648ab39432dd4a811e9cfb13
Alexander Galazin [Thu, 7 May 2020 07:09:07 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.5 into vk-gl-cts/vulkan-cts-1.1.6
Change-Id: Icb8ab043f942c02aa8571ffdd8f92ebd1ff606e1
Alexander Galazin [Thu, 7 May 2020 07:09:05 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.5 into vk-gl-cts/vulkan-cts-1.2.0
Change-Id: I8b23066dbc167b851f506efcfdfe4fcf87d7e00b
Alexander Galazin [Thu, 7 May 2020 07:09:03 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.4 into vk-gl-cts/vulkan-cts-1.1.5
Change-Id: Ieb2b1e6bc78c052aab00f2e519afc897b12809f8
Alexander Galazin [Thu, 7 May 2020 07:09:00 +0000 (09:09 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.3 into vk-gl-cts/vulkan-cts-1.1.4
Change-Id: I738103ad40372749d96b5357726361812828d3ef
Yevhenii Kolesnikov [Wed, 26 Feb 2020 15:28:21 +0000 (17:28 +0200)]
Add tests for usage of pixel storage modes
Pixel storage modes allow to select a subregion of data when
specifying a texture image.
For example, when specifying a 2D texture image, by setting both
GL_UNPACK_SKIP_PIXELS and GL_UNPACK_SKIP_ROWS, a subrectangle can be
selected.
This set of tests contains subcases for:
- glTexImage2D
- glTexImage3D
- glCompressedTexImage2D
- glCompressedTexImage3D
Source data is filled with black colour with a white (or different
shades of grey for each layer in case of 3D textures) subregion
somewhere within it. This subregion is then selected by setting pixel
storage modes and used as a source when specifying a texture. The
correct colour is checked in a shader.
Compressed cases use two compression formats:
- GL_COMPRESSED_RGB_S3TC_DXT1_EXT
- GL_COMPRESSED_RGBA_ASTC_8x5_KHR
Adds a new subgroup of tests to two groups:
- KHR-GL33.pixelstoragemodes.*
- KHR-GLES31.core.pixelstoragemodes.*
Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Lujin Wang [Wed, 29 Apr 2020 23:58:07 +0000 (16:58 -0700)]
Fix of a build failure on QNX
Hit a build failure on QNX for vktPipelineTimestampTests.cpp.
error: 'CLOCK_MONOTONIC_RAW' was not declared in this scope
Do not use CLOCK_MONOTONIC_RAW on QNX.
Affects:
OpenGLES CTS 3.2.6.1 build on QNX
Components: Vulkan
VK-GL-CTS issue: 2340
Change-Id: I44c131610860fda7f2fba7e8e32dcfc401fcf800
Alexander Galazin [Tue, 5 May 2020 19:00:58 +0000 (21:00 +0200)]
Update SPIR-V Tools
Components: Framework
Change-Id: If475ce30568c3c50ab4eaaa874bb8fbe7454d6d5
Matthew Netsch [Wed, 28 Aug 2019 16:31:19 +0000 (12:31 -0400)]
Adds geometry shader check for test
Components: Vulkan
VK-GL-CTS Issue: 1900
Affects:
dEQP-VK.query_pool.statistics_query.input_assembly*.primary.*adjacency
Change-Id: I6aeb72143231d59711cb1d6ea98bc2cc0264bc84
(cherry picked from commit
c4416209513122ba8f21ca1d9c016a07d65bb7ba)
James Glanville [Fri, 17 Apr 2020 10:54:40 +0000 (11:54 +0100)]
Stop 10bit formats requiring GL_SRGB encoding
The EGL_KHR_gl_colorspace spec does not require formats that
are not SRGB8 to respect the given EGL_GL_COLORSPACE_KHR.
Components: EGL
VK-GL-CTS issue: 2288
Affects:
dEQP-EGL.functional.wide_color.window_1010102_colorspace_srgb
dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_srgb
Change-Id: I41ab6c6a0467a29cf7e5e764bf2b2cfb78c51db3
(cherry picked from commit
c90d90d4b1b006d0b39c04e7517b7252564bf2e0)
Piotr Byszewski [Mon, 4 May 2020 11:40:32 +0000 (13:40 +0200)]
Adjust framework to removal of non-API enums
BEGIN_RANGE, END_RANGE and RANGE_SIZE enums were
removed from the Vulkan headers and XML. This change
simplifies gen_framework script.
Components: Vulkan, Framework
VK-GL-CTS issue: 2250
Affects:
dEQP-VK.*
Change-Id: Id8847e78afbbb4cd5ad1a3b5bacda408a8693188
Alexander Galazin [Mon, 4 May 2020 10:53:37 +0000 (12:53 +0200)]
Update Vulkan headers
Components: Vulkan
Change-Id: I421c4d4f3d785bbb9af2170a92f463cfc4511a34
Alexander Galazin [Mon, 4 May 2020 10:37:50 +0000 (12:37 +0200)]
Update glslang
Components: Framework, Vulkan, OpenGL
Change-Id: Iae3ab66b64114a79b0ef28b4c4efa610dcdd1ff7
Alexander Galazin [Mon, 4 May 2020 08:24:17 +0000 (10:24 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: I91b40f209e7574f9779151ce3637d1431bfc6f5b
Alexander Galazin [Mon, 4 May 2020 07:15:29 +0000 (09:15 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I613d3f387390bcbd261f305cd0b03a1b041c4e76
Chris Forbes [Fri, 1 May 2020 18:50:43 +0000 (11:50 -0700)]
Roll glslang forward to
02c70ad10e1f9dc88ae4ee509f26fe5f9fb31843
This includes fixes for newer compilers, including the official toolchain for the upcoming Android release.
For example, modern clang currently complains:
In file included from
external/deqp-deps/glslang/OGLCompilersDLL/InitializeDll.cpp:42:
external/deqp-deps/glslang/OGLCompilersDLL/../glslang/Include/PoolAlloc.h:307:54:
error: 'operator=' is a private member of 'glslang::TPoolAllocator'
void setAllocator(TPoolAllocator* a) { allocator = *a; }
~~~~~~~~~ ^
Affects: dEQP-VK.*
Components: Vulkan
VK-GL-CTS Issue: 2344
Change-Id: I85e94fea0621c3b72e6f30e7e68377c41449be99
James Glanville [Fri, 17 Apr 2020 10:54:40 +0000 (11:54 +0100)]
Stop 10bit formats requiring GL_SRGB encoding
The EGL_KHR_gl_colorspace spec does not require formats that
are not SRGB8 to respect the given EGL_GL_COLORSPACE_KHR.
Components: EGL
VK-GL-CTS issue: 2288
Affects:
dEQP-EGL.functional.wide_color.window_1010102_colorspace_srgb
dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_srgb
Change-Id: I41ab6c6a0467a29cf7e5e764bf2b2cfb78c51db3
Joshua Ashton [Fri, 17 Apr 2020 02:53:47 +0000 (03:53 +0100)]
Replace LAST with MAX_ENUM in mapBorderColor
Fixes compilation errors with the newer headers.
Affected tests:
dEQP-VK.pipeline.sampler.*border*
Components: Vulkan
VK-GL-CTS issue: 2332
Change-Id: I757017612045666de53b8a09691eed27587503df
Joshua Ashton [Fri, 17 Apr 2020 02:51:34 +0000 (03:51 +0100)]
Make checkSupportImageSamplingInstance loop through pNexts
We need this to support multiple potential pNexts in the future.
Affected tests:
dEQP-VK.pipeline.sampler.*
Components: Vulkan
VK-GL-CTS issue: 2331
Change-Id: I076e864d4b842d3993fdfa9bbd5925765870f6f7
Vihanakangas [Tue, 14 Apr 2020 08:13:31 +0000 (11:13 +0300)]
dEQP-VK.graphicsfuzz.one-sized-array
Components: Vulkan
New Tests:
dEQP-VK.graphicsfuzz.one-sized-array
Change-Id: I845305554a5c43c9f7bc6d7c964e6011f7560b96
Ricardo Garcia [Thu, 26 Mar 2020 18:15:14 +0000 (19:15 +0100)]
Test mixed sample count in empty subpass and framebuffer
This commit adds a new set of tests that check the sample count of a
subpass with no attachments or an unused attachment is not affected by
the presence of a framebuffer using a different sample rate.
Due to some code refactoring, the variable rate tests are marked as
affected.
Affected tests:
dEQP-VK.pipeline.multisample.variable_rate.*
New tests:
dEQP-VK.pipeline.multisample.mixed_count.*
Components: Vulkan
VK-GL-CTS issue: 2284
Change-Id: I37c0b434c82ad79d7d74a51aee360784dfeee8ca
Alexander Galazin [Thu, 30 Apr 2020 06:59:55 +0000 (08:59 +0200)]
Update glslang
Components: Framework
Change-Id: Id19b7361f49ce46a47d87e0bc1f52b8eaaca047e
Daniele Castagna [Wed, 1 Apr 2020 00:19:06 +0000 (20:19 -0400)]
Add vk platform to nullws
This CL adds supprt for Vulkan to nullws platform.
In this way deqp-vk can be run on platforms without WSI.
Change-Id: I13d7bc307deeeda3a228b9fa930f7c20950d8ff0
Graeme Leese [Wed, 22 Apr 2020 13:40:26 +0000 (14:40 +0100)]
Fix verification in multisample image store tests
The results were being verified for each sample but they were all being
stored to the same pixel in the (single-sample) result image, meaning
that only the last sample was actually checked.
Have the shader calculate the correct result for the whole pixel before
writing it out.
Component: Vulkan
VK-GL-CTS issue: 2310
Affects:
dEQP-VK.pipeline.multisample_shader_builtin.image_write_sample.*
Change-Id: Ibe1383d7922073af0661f818ebf8bfe9ab20b9fe
Kyle Griffiths [Fri, 17 Apr 2020 11:26:54 +0000 (12:26 +0100)]
Allow RTZ rounding in spv_assembly*writes_two_buffers* tests
Because the tests perform an add operation, mismatch of the CPU and GPU
rounding modes can cause the tests to incorrectly fail.
This change modifies the verification to allow up to 1 ULP difference
between the output and the expected result, which covers the maximum
difference between RNE and RTZ rounding modes.
Components: Vulkan
Affects: dEQP-VK.spirv_assembly.instruction.graphics*
VK-GL-CTS issue: 2320
Change-Id: Ic76942add1382c23885118f806ac593cc730eb73
Ricardo Garcia [Mon, 6 Apr 2020 12:32:37 +0000 (14:32 +0200)]
Use mandatory formats in stencil export tests
Stencil export tests were using VK_FORMAT_S8_UINT, which is not a
mandatory format. This commit adds more test variants using mandatory
stencil image formats for 2D images, guaranteeing these tests can run on
more implementations.
Existing tests have been renamed and other variants have been added.
Affected and new tests:
dEQP-VK.pipeline.shader_stencil_export.*
Components: Vulkan
VK-GL-CTS issue: 2292
Change-Id: Ied82c9958d3126fcb1b72716b3c4fdc109fe2e87
Matthew Netsch [Thu, 21 Dec 2017 15:47:02 +0000 (07:47 -0800)]
Fixes pixelformat utils for RGB10_A2
Some asserts were firing and the math
wasn't adding up for RGB10_A2 configs.
Components: OpenGL ES
VK-GL-CTS issue: 920
Affects:
KHR-GLES31.core.blend_equation_advanced.*
Others
Change-Id: Idf3709f71bf7de915a4390c3e8efcda902f2143f
(cherry picked from commit
bd631f4725dece3390890c9099f6ecab1ae88560)
Yabin Zheng [Fri, 31 Aug 2018 07:35:16 +0000 (15:35 +0800)]
Add specific RGB10A2 data for BlendHSLHue and BlendHSLSaturation
Some original input test data will cause divide by 0 issue. This issue
is not handled by spec, but the test should assure the valid data.
Affects: KHR-GLES31.core.blend_equation_advanced.*
VK-GL-CTS issue: 919
Components: OpenGL
Change-Id: I6278ed77de0a38aede7d840bac7b7ec57e869110
(cherry picked from commit
436e28f9d9d6e5c58ffba4bc72122650ce0ee903)
Alexander Galazin [Tue, 28 Apr 2020 07:00:56 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.2 into vk-gl-cts/master
Change-Id: I0d3faba4abc2cd2d52ecf26f1cad4e3e17584cab
Alexander Galazin [Tue, 28 Apr 2020 07:00:53 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I06c7c486ac9b4a2193c4ba3ac1e26b53e70e0bd8
Alexander Galazin [Tue, 28 Apr 2020 07:00:50 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.2.0 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I7003461a2e0d865d5fcd837b5a5db8d12cfcba07
Alexander Galazin [Tue, 28 Apr 2020 07:00:44 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.6 into vk-gl-cts/vulkan-cts-1.2.1
Change-Id: I24b7b71b378f93a21ee8d5074517cdf88950cb26
Alexander Galazin [Tue, 28 Apr 2020 07:00:40 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.5 into vk-gl-cts/vulkan-cts-1.1.6
Change-Id: Ibf71699514dcc482235457301c8cb591e5ef4ac2
Alexander Galazin [Tue, 28 Apr 2020 07:00:35 +0000 (09:00 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.5 into vk-gl-cts/vulkan-cts-1.2.0
Change-Id: Ia8887f2f979ea8f5cdf2013c2016b78a150d9d53
Alexander Galazin [Mon, 27 Apr 2020 18:21:35 +0000 (20:21 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.4 into vk-gl-cts/vulkan-cts-1.1.5
Change-Id: I147ae97908fe69487a55770d3c3e7dd9b29f6356
Peter Quayle [Thu, 5 Dec 2019 11:34:25 +0000 (11:34 +0000)]
Remove event tests which use illegal behaviour
Two event tests were relying on being able to wait on the device for
an event to be set on the host. This behaviour is not allowed.
Affects:
dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.event.host_set_device_wait
Components: Vulkan
VK-GL-CTS issue: 2108
Change-Id: Idbb8b4e2468d617b3e47d5055622789a2dd3eb00
(cherry picked from commit
b45f4268074897cb4ee7da4b81a17b310301d77b)
(cherry picked from commit
8be9e27df3c1e1d9f50e549d7293bc202072d80d)
Alexander Galazin [Mon, 27 Apr 2020 13:20:19 +0000 (15:20 +0200)]
Merge vk-gl-cts/vulkan-cts-1.1.3 into vk-gl-cts/vulkan-cts-1.1.4
Change-Id: I88785d64ee5ce89b2ddcc47e317c39a09cf36c8b