platform/upstream/VK-GL-CTS.git
7 years agoMerge vk-gl-cts/vulkan-cts-1.0.2 into vk-gl-cts/vulkan-cts-1.0.2-confidential
Alexander Galazin [Thu, 22 Jun 2017 02:28:13 +0000 (04:28 +0200)]
Merge vk-gl-cts/vulkan-cts-1.0.2 into vk-gl-cts/vulkan-cts-1.0.2-confidential

Change-Id: I842fde2a18d086da72b78b0b3bded26fd2b2de4b

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Alexander Galazin [Thu, 22 Jun 2017 02:28:12 +0000 (04:28 +0200)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I6400944995d9bcb06801ab0f3ada643ed9d914ed

7 years agoCheck for shaderFloat64 before creating shaders
Alex Walters [Tue, 20 Jun 2017 11:27:11 +0000 (12:27 +0100)]
Check for shaderFloat64 before creating shaders

Shader is using double types for F64 vertex attribute cases without
checking that the shader feature is supported.

The test was eventually making this check, but not until setting up
the vertex attributes themselves. This change also avoid creating some
other resources before determining that the test is unsupported.

Affects:

dEQP-VK.pipeline.vertex_input.single_attribute*64*

Components: Vulkan

VK-GL-CTS issue: 459

Change-Id: I6142af4e1a64aac233d6890285f81db327589800

7 years agoFix regressions from 38cdcf98c372cb8af8
Iago Toral Quiroga [Mon, 19 Jun 2017 09:50:54 +0000 (11:50 +0200)]
Fix regressions from 38cdcf98c372cb8af8

That commit merged together a number of changes
and it seems that it messed up the spir-v for the
opconstantnull and opundef tests.

Components: Vulkan
Vk-GL-CTS issue: 511

Affects:
dEQP-VK.spirv_assembly.instruction.compute.opconstantnull.*
dEQP-VK.spirv_assembly.instruction.compute.opundef.*

Change-Id: I0810dd9d75aeebb993f2f595e20c90fde10cf899

7 years agoAdd test for VK_KHR_get_memory_requirements2
Boris Zanin [Sun, 7 May 2017 12:21:28 +0000 (14:21 +0200)]
Add test for VK_KHR_get_memory_requirements2

Update tests:
 * dEQP-VK.memory.requirements.buffer.*
 * dEQP-VK.memory.requirements.image.*

Rename tests (add .core subgroup):
 * dEQP-VK.memory.requirements.core.buffer.*
 * dEQP-VK.memory.requirements.core.image.*

Add tests:
 * dEQP-VK.memory.requirements.extended.buffer.*
 * dEQP-VK.memory.requirements.extended.image.*

Components: Vulkan

VK-GL-CTS issue: 391

Change-Id: I307bbf361d36d5f277ff70ce3204d67f8eb59871
(cherry picked from commit 140028f310bf6116a2c9063a5565fae6bf5152bb)

7 years agoAdd tests for the VK_KHR_16bit_storage extension
Lei Zhang [Wed, 1 Mar 2017 17:30:20 +0000 (12:30 -0500)]
Add tests for the VK_KHR_16bit_storage extension

* Four capabilities
  * StorageUniform16
  * StorageUniformBufferBlock16
  * StorageInputOutput16
  * StoragePushConstant16
* 16bit -> 32bit and 32bit -> 16bit
* integers and floats
* vectors and matrices of integers and floats

Component: Vulkan

(cherry picked from commit e62c7b595cbf79617555faf46eb9085bb7d11cb1)

Contains following two follow-up patches:
 * d41f0578749db200124a933a0bc6ace35881d02d (check against linea/optimalTilingFeatures)
 * a24bed1ac5b06e6ef87da3b6f9bc103f5cdf463f (allow flusing denormals)
 * ff75accb8c0634ddfa920462d864a58f12a76198 (add missing extensions)

Change-Id: I51f59d9a7d984f5190c8d60752454b963a039c2e

7 years agoAdd tests for VK_KHR_storage_buffer_storage_class
Pyry Haulos [Wed, 3 May 2017 22:08:12 +0000 (15:08 -0700)]
Add tests for VK_KHR_storage_buffer_storage_class

This change extends following groups to cover the new StorageBuffer
decoration:

 * dEQP-VK.glsl.opaque_type_indexing
 * dEQP-VK.spirv_assembly.compute.opatomic

VK-GL-CTS issue: 357
Components: Vulkan

Change-Id: I283a39f4e92f1be6597d843c67debc3ae28c9f22
(cherry picked from commit 9e31538412fb6ce1773e8cfda5b7e5f7fd081e87)

7 years agoImprove GLSL source program support
Pyry Haulos [Thu, 4 May 2017 22:29:08 +0000 (15:29 -0700)]
Improve GLSL source program support

Old GLSL source program support in Vulkan framework was built on top
of glu::ProgramSources. This had two problems:

1) There was no obvious way to extend/annotate sources with SPIR-V
-specific information such as target SPIR-V version.

2) Most of glu::ProgramSources, such as attribute bindings or TF
configuration, was completely ignored.

This change introduces new vk::GlslSource type that replaces
glu::ProgramSources in vk::SourceCollections. vk::GlslSource contains
shader source strings as well as build options (vk::GlslBuildOptions).

vk::GlslBuildOptions doesn't currently contain anything useful but can
be later extended to support selecting target SPIR-V version for
example.

The change is mostly transparent to existing code, except:

 * vkSpirvProgram.hpp was somewhat unnecessarily including
tcuTestLog.hpp and changing that to a forward declaration required
fixing includes in several test code files.

  * vktShaderExecutor.cpp has been extended to allow specifying build
options.

Components: Vulkan

Change-Id: I69a6cd55ea91215585515b9d41860d818cbc97ae
(cherry picked from commit fa7a45c9bcb909be38ffd55549beb6db5115a65b)

7 years agoCherry-pick SPIR-V assembly test improvements
Pyry Haulos [Wed, 14 Jun 2017 18:54:31 +0000 (11:54 -0700)]
Cherry-pick SPIR-V assembly test improvements

These SPIR-V assembly test framework improvements are needed by new SPIR-V
tests.

Contains following commits, sans new tests:

e47e81cda3ab7215d6089f4f5f631fa4f4385e10
ca8cfd0d24bc210c1cfeb3ded0c2c0d2492aa66b
56bd1576eb438e10e8ccb22e17b08354fbf3bac7
56f121e90ff24a88b375db1a74c296d17dd97a74
05e91483c6f2f48b408ed1a638cbb32468ed8dfa
fc1e2f0942477676e92f7fe632ef441a90f570f8
318e6d042b1aaa15327342b39967f0ae97d23347
c35c2901d9d604631326eec11b80b3e6b7b7d55f
0d10dbfa6e176e18f69edcace62f921bb5225168
251a30e3cf94411b7453dd4e05cf24e1d45f579e
4fe79607bfac070a32d9554e3705379073e3672b
8977777244ce058cb79e1cf3b43e528322e8308c
6a51980397447d1f726e71d9126e47f84dc80a6f

Change-Id: Ibedf226d3160365651155327dac50e8e9987a6d4

7 years agoAdd 32 to 16 bit float conversion w.r.t rounding mode
Lei Zhang [Mon, 20 Mar 2017 19:40:54 +0000 (15:40 -0400)]
Add 32 to 16 bit float conversion w.r.t rounding mode

Component: Framework

Change-Id: I9428f0dc725484b8a2f213157100326a69754cd8
(cherry picked from commit 7c0f5bea1da74f70e549e9a735c9d702c9396084)

7 years agoAdd create functions for common Vulkan types.
Mika Isojärvi [Wed, 8 Feb 2017 00:37:51 +0000 (16:37 -0800)]
Add create functions for common Vulkan types.

These functions simplify creating the Vulkan objects by taking the
arguments directly instead of passing through struct. Multiple test
cases already reimplement these functions.

VK-GL-CTS issue: 465
Components: Vulkan

Change-Id: I09f6b0163b5aa2198617230767cd072185afe45c
(cherry picked from commit da03200a87f51bed33b3c3030ecbb6df06ff4f60)

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Alexander Galazin [Sun, 18 Jun 2017 13:43:55 +0000 (15:43 +0200)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: Ibc2a0e06a379886958c3c45f8153b2271251dc1f

7 years agoTouch watchdog before freeing objs in max_concurrent
Pyry Haulos [Wed, 7 Jun 2017 22:58:05 +0000 (15:58 -0700)]
Touch watchdog before freeing objs in max_concurrent

Affects:
dEQP-VK.api.object_management.max_concurrent.*

Components: Vulkan
Google bug: 37515046
VK-GL-CTS issue: 507

Change-Id: I57eb68764a55b5dceeb3e2676b8b1b298c0ff67e
(cherry picked from commit 252fb76fec02af6e2281da3bc9eea4e0d7972f12)
(cherry picked from commit 815781b7774af1aad0e9e2e60cd59ae575a81cf4)

7 years agoAdd missing flush for opaque_type_indexing tests
Gary Sweet [Fri, 9 Jun 2017 07:43:45 +0000 (08:43 +0100)]
Add missing flush for opaque_type_indexing tests

Buffers were being mapped and written, but not flushed
before use.

Affects:

dEQP-VK.glsl.opaque_type_indexing.sampler.*

Components: Vulkan

VK-GL-CTS issue: 487

Change-Id: I9d6b694cebdff1785cbff303f4873628ca902d51

7 years agoReturn back transient attachments tests
Boris Zanin [Tue, 6 Jun 2017 06:42:14 +0000 (08:42 +0200)]
Return back transient attachments tests

Update tests:
 * dEQP-VK.renderpass.attachment.*
 * dEQP-VK.renderpass.attachment_allocation.*

Components: Vulkan

VK-GL-CTS issue 464

Change-Id: I11006ef75ee7fbeb6674d1876a535101edb2a667

7 years agoSlightly increase threshold in dEQP-VK.draw.basic_draw.draw_indirect
Slawomir Cygan [Wed, 7 Jun 2017 17:55:09 +0000 (19:55 +0200)]
Slightly increase threshold in dEQP-VK.draw.basic_draw.draw_indirect

The test draws a lot of intersecting lines and compare them to reference
renderer output.

Unfortunately, the test does not account for strictLines capability (hence
ignores that they are two line rasterization algorithms in Vulkan). On the
other hand it usess fuzzy compare, which somehow obfuscates that fact.

However, there is an issue where many (around 8) lines intersect in area covered
by one fuzzy 'kernel' invocation, where small difference results in false negative
comparison.

This change slightly increases the threshold.

Affects:  dEQP-VK.draw

Components: Vulkan

VK-GL-CTS issue: 495

Change-Id: I2dab225516b8a3dea937efe6c4fb042bc267481b

7 years agoSampling precision issues - mustpass removal
Marcin Kańtoch [Thu, 8 Jun 2017 16:28:20 +0000 (18:28 +0200)]
Sampling precision issues - mustpass removal

Affects:

dEQP-VK.glsl.texture_functions.textureoffset.isampler2darray_vertex
dEQP-VK.glsl.texture_functions.textureoffset.usampler2darray_vertex
dEQP-VK.glsl.texture_functions.textureoffset.usampler3d_vertex
dEQP-VK.glsl.texture_functions.texturegradoffset.usampler2darray_vertex

Components: Vulkan

VK-GL-CTS issue: 448

Change-Id: Id895783e75a5b779ead5d396d2953a5c07f20f52

7 years agoAdd missing flushes for buffer view access tests
Gary Sweet [Wed, 7 Jun 2017 09:31:14 +0000 (10:31 +0100)]
Add missing flushes for buffer view access tests

Buffers were being mapped and written, but not flushed
before use.

Affects:

dEQP-VK.api.buffer_view.access.buffer_view_memory_test_*

Components: Vulkan

VK-GL-CTS issue: 474

Change-Id: I5874f56da87d3857b0c2c840805f932f56e8ff49

7 years agoAtomic counter tests rely on stores to SSBOs
Alexander Galazin [Thu, 1 Jun 2017 06:59:16 +0000 (08:59 +0200)]
Atomic counter tests rely on stores to SSBOs

Stores to SSBOs are supported if
vertexPipelineStoresAndAtomics/fragmentStoresAndAtomics
are advertised.

VK-GL-CTS issue: 458

Components: Vulkan

Affects:
dEQP-VK.glsl.opaque_type_indexing.atomic_counter.*

Change-Id: I8bd3617522221e646526112978b8d13069f88ec3

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Tue, 30 May 2017 01:56:32 +0000 (18:56 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: Ib63e665cb64989f8c5f0c53c9d229e5f17172d62

7 years agoAllow pop-free clipping for lines
Boris Zanin [Tue, 16 May 2017 12:32:06 +0000 (14:32 +0200)]
Allow pop-free clipping for lines

Following test checks has been relaxed:
 * dEQP-VK.rasterization.primitives.lines_wide
 * dEQP-VK.rasterization.primitives.line_strip_wide
 * dEQP-VK.rasterization.primitives_multisample_2_bit.lines_wide
 * dEQP-VK.rasterization.primitives_multisample_4_bit.lines_wide
 * dEQP-VK.rasterization.primitives_multisample_8_bit.lines_wide

Components: Vulkan

VK-GL-CTS issue: 421

Change-Id: I21c04015d36ae55c20ef1c1dda8e2d1fee471221

7 years agoCheck 'drawIndirectFirstInstance' feature to run indirect draw tests
Yanjun Zhang [Thu, 11 May 2017 22:51:37 +0000 (15:51 -0700)]
Check 'drawIndirectFirstInstance' feature to run indirect draw tests

Component: Vulkan
VK-GL-CTS issue: 413

Change-Id: I13a86721ec76ac50af55e0730fd50e3d7ce159d8

7 years agodEQP-VK: Fix an incorrect layout transition
Jason Ekstrand [Fri, 19 May 2017 04:36:15 +0000 (21:36 -0700)]
dEQP-VK: Fix an incorrect layout transition

The tests upload data to the resolve destination using CopyImageToBuffer
prior to doing a resolve to a chunk out of the middle of the image. This
lets the test validate the resolve to a subarea works correctly.
However, they were also transitioning the destination from UNDEFINED to
TRANSFER_DST_OPTIMAL between uploading the data and doing the resolve.
This transition destroys the contents of the image making verifying that
contents incorrect.  The correct transition is from TRANSFER_DST_OPTIMAL
to TRANSFER_DST_OPTIMAL.

This affects the following tests:

 - dEQP-VK.api.copy_and_blit.resolve_image.partial*
 - dEQP-VK.api.copy_and_blit.resolve_image.with_regions*

Change-Id: I9336195d7977d7dd2ffb057525134846b10e8010

7 years agoFixed invalid usage of VkBufferImageCopy struct
Oivind Boge [Tue, 16 May 2017 14:04:01 +0000 (16:04 +0200)]
Fixed invalid usage of VkBufferImageCopy struct

The offset member of VkBufferImageCopy was violating the
valid usage. The offset is now calculated using lowest
common denominator between the pixelSize and 4.

Affects:

dEQP-VK.api.image_clearing.*

Components: Vulkan

VK-GL-CTS issue: 422

Change-Id: I1ef07e06f790a9ed403941b1d94c7840485cec3e

7 years agoRefactor X11 and wayland platforms to run alongside each other
Slawomir Cygan [Wed, 11 Jan 2017 16:17:11 +0000 (17:17 +0100)]
Refactor X11 and wayland platforms to run alongside each other

This adds a capability for running Vulkan WSI ane EGL tests on both
X11 and wayland compositors from one binary built in 'default' target.

The change replaces X11 & wayland tcu::Platform-s with one common
'linux' platform, that is parametrized by DEQP_SUPPORT_
(X11|GLX|XCB|WAYLAND) at compile time.

This new platform supports creating WSI displays and EGL contexts
for each of compositors enabled at build-time. To choose EGL compositor
use --deqp-egl-display-type=x11 or Wayland.

No functional change is made to 'wayland' target: it is still possible
to build Wayland-only binary using that target.

VK-GL-CTS issue: 83
Components: Framework
Affects: dEQP-VK.wsi.* and all tests using EGL.

Change-Id: I1d8725d1329e1071ac545f765c374d2d7d5a29df

7 years agoFix Vulkan null driver
Pyry Haulos [Thu, 18 May 2017 22:42:53 +0000 (15:42 -0700)]
Fix Vulkan null driver

Vulkan platform was changed to use vkGetInstanceProcAddr(NULL, pName)
for loading all platform-level functions, except vkGetInstanceProcAddr
itself, in commit bbd3dce44fafaa4b1952b63564022f19b3a65ca3. Null
driver was not adjusted for that change and that resulted calling into
null function pointer early in the initialization code.

Additionally, null driver now advertises HOST_COHERENT memory.

Change-Id: I65c8b37722950de08e337d7df95aa46a0e826c7b

7 years agoUpdate vulkan.h.in to 1.0.49 and strip unused exts
Pyry Haulos [Wed, 10 May 2017 16:54:23 +0000 (09:54 -0700)]
Update vulkan.h.in to 1.0.49 and strip unused exts

This change updates vulkan.h.in to match header version 49.
Vendor-specific extensions and KHX extensions that are not covered by CTS
are removed.

gen_framework.py now auto-detects function class from its first argument,
except for vkGet*ProcAddr, which require special handling.

Components: Vulkan

Change-Id: If6e1d959091a9064585bf29ef9983d03649ce513

7 years agoImport fixes from Android Vulkan CTS 1.0.2 branch
Pyry Haulos [Fri, 12 May 2017 20:26:36 +0000 (13:26 -0700)]
Import fixes from Android Vulkan CTS 1.0.2 branch

 * Android copy of mustpass is updated to exclude waived tests.

 * Add missing file to Android.mk

 * Add -fwrapv and -Wno-delete-non-virtual-dtor to Android.mk

Change-Id: I9cdb0b0490dbad4134ad085216c3969cda40747a

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Fri, 12 May 2017 17:31:29 +0000 (10:31 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I11828b81ea4c9e67dc879dd98a9cbf91341de2c9

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1
Pyry Haulos [Fri, 12 May 2017 17:31:26 +0000 (10:31 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1

Change-Id: I6245604cf5ce44a2c4d9c064efb65b058d8f24eb

7 years agoAdd more alternatives to reflect() precision tests
Iago Toral Quiroga [Fri, 5 May 2017 06:30:15 +0000 (08:30 +0200)]
Add more alternatives to reflect() precision tests

Intel/Mesa started to generate these in some scenarios recently.

Components: Vulkan
Vk-GL-CTS Issue: 392

Affects:
dEQP-VK.glsl.builtin.precision.reflect.*

Change-Id: Ic943cf14d531e392c03adf18605e6330267be4a1

7 years agoCheck sampler_mirror_clamp_to_edge extension in tex filter tests
Yanjun Zhang [Mon, 24 Apr 2017 08:59:26 +0000 (01:59 -0700)]
Check sampler_mirror_clamp_to_edge extension in tex filter tests

Components: Vulkan
VK-GL-CTS issue: 384

Affects:
dEQP-VK.texture.filtering.*.combinations.*_mirror_clamp_to_edge_*

Change-Id: Ie829b9247cd374e6c34ac70885e9e4421d284d1e

7 years agoDo not report warning if OOM testing is incomplete
Pyry Haulos [Mon, 8 May 2017 16:15:25 +0000 (09:15 -0700)]
Do not report warning if OOM testing is incomplete

object_management.alloc_callback_fail tests are trying to exhaustively
test all OOM paths in vkCreate* functions. However, to keep test run-
time reasonable, they have a fixed maximum allocation count and if
that is exceeded report a warning since OOM testing was not
exhaustive.

Since an implementation that requires more allocations than the limit
is valid, this commit changes the tests to report clean Pass instead
of CompatibilityWarning. Note about incomplete OOM testing is included
in the test log contents instead.

Affects:

dEQP-VK.api.object_management.alloc_callback_fail.*

VK-GL-CTS issue: 399
Components: Vulkan

Change-Id: I6890321546ae42f2646b8653007172d4b8affb8a

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1
Pyry Haulos [Fri, 12 May 2017 17:15:26 +0000 (10:15 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1

7 years agodEQP-VK: Fix and inline the Image::getPixelOffset helper
Jason Ekstrand [Thu, 27 Apr 2017 15:02:22 +0000 (08:02 -0700)]
dEQP-VK: Fix and inline the Image::getPixelOffset helper

The helper was wrong in a number of ways.  First, it tries to calculate
an offset to the particular mip level and array layer requested even
though the driver already provides that as part of the offset returned
by getImageSubresourceLayout.  If someone tried to use this with a
non-zero mip level or array layer they would get the wrong offset
because it would be added in twice.  Second, the calculation depended on
an array called mipLevelRectSizes array which was used but never
initialized.  This commit gets rid of the helper and just does the right
calculation inside MemoryOp::readLinear and MemoryOp::uploadLinear.

This affects the following groups of tests:

 - dEQP-VK.draw.*
 - dEQP-VK.dynamic_state.*
 - dEQP-VK.query_pool.*

Change-Id: If0da72023cbc437d2a13d60f83e1230f0f90ba39

7 years agoAdd tests for VK_KHR_shared_presentable_image
Chris Forbes [Thu, 2 Feb 2017 20:42:12 +0000 (09:42 +1300)]
Add tests for VK_KHR_shared_presentable_image

Initial smoke test for shared image present modes. For each of the new
present modes, exercises a shared image swapchain through a number of
frames, monitoring the status via vkGetSwapchainStatusKHR.

This is not particularly rigorous, but tests if the extension works at
all.

New tests:

dEQP-VK.wsi.*.shared_presentable_image.*

Components: Vulkan

Change-Id: I0e143a2c556ea38a78c32fca4f3bd2b81d16f7dc
(cherry picked from commit 8fd97e075d00a848c5b880f9f4c67711d9cd60d6)

7 years agoAdd tests for VK_KHR_get_surface_capabilities2
Pyry Haulos [Tue, 7 Feb 2017 22:24:46 +0000 (14:24 -0800)]
Add tests for VK_KHR_get_surface_capabilities2

Surface query tests are extended with two new test cases that verify that
new extended queries return values identical to the non-extended queries.

dEQP-VK.wsi.*.surface.query_formats is changed to check for duplicate
formats in order to make validation between non-extended and extended
formats lists more robust.

New tests:
 * dEQP-VK.wsi.*.surface.query_capabilities2
 * dEQP-VK.wsi.*.surface.query_formats2

Changed tests:
 * dEQP-VK.api.info.instance.extensions
 * dEQP-VK.wsi.*.surface.query_formats

VK-GL-CTS issue: 129

Change-Id: I9a43e3d68843eccc64be837dda2142e456675c63
(cherry picked from commit 86f207a29668bd4e1e46f7c7d89e84d65e1bc64b)

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Fri, 28 Apr 2017 08:14:23 +0000 (10:14 +0200)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

7 years agodEQP-VK: Fix and inline the Image::getPixelOffset helper
Jason Ekstrand [Thu, 27 Apr 2017 15:02:22 +0000 (08:02 -0700)]
dEQP-VK: Fix and inline the Image::getPixelOffset helper

The helper was wrong in a number of ways.  First, it tries to calculate
an offset to the particular mip level and array layer requested even
though the driver already provides that as part of the offset returned
by getImageSubresourceLayout.  If someone tried to use this with a
non-zero mip level or array layer they would get the wrong offset
because it would be added in twice.  Second, the calculation depended on
an array called mipLevelRectSizes array which was used but never
initialized.  This commit gets rid of the helper and just does the right
calculation inside MemoryOp::readLinear and MemoryOp::uploadLinear.

This affects the following groups of tests:

 - dEQP-VK.draw.*
 - dEQP-VK.dynamic_state.*
 - dEQP-VK.query_pool.*

Change-Id: If0da72023cbc437d2a13d60f83e1230f0f90ba39

7 years agomakeFramebufferWithoutAttachments creates invalid framebuffer
Alex Walters [Thu, 27 Apr 2017 09:24:08 +0000 (10:24 +0100)]
makeFramebufferWithoutAttachments creates invalid framebuffer

Current behaviour of setting width, height, and layers to zero is
invalid. The validity language specifies that width, height, and
layers must be > 0.

The same function exists in the utils files for sparse_resources
and synchronization tests, I've removed the unused copies.

Affects:

dEQP-VK.tessellation*

Components: Vulkan

VK-GL-CTS issue: 265

(cherry picked from commit bce45b549d21f068a75d005fe55bd87460b5df29)

Change-Id: I7e6196944b1197ca3ce2d16ff17623e6e9bcfae7

7 years agomakeFramebufferWithoutAttachments creates invalid framebuffer
Alex Walters [Thu, 27 Apr 2017 09:12:28 +0000 (10:12 +0100)]
makeFramebufferWithoutAttachments creates invalid framebuffer

Current behaviour of setting width, height, and layers to zero is
invalid. The validity language specifies that width, height, and
layers must be > 0.

The same function exists in the utils files for sparse_resources
and synchronization tests, I've removed the unused copies.

Affects:

dEQP-VK.tessellation*

Components: Vulkan

VK-GL-CTS issue: 265

Change-Id: I201377ec5064d84eb3beb959ac5acf72e687c0b2

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Wed, 12 Apr 2017 03:44:44 +0000 (20:44 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1
Pyry Haulos [Wed, 12 Apr 2017 03:43:22 +0000 (11:43 +0800)]
Merge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1

Change-Id: Iff109ea0dba048599d3deb4d8f42a7cac8b62283

7 years agoFix typo in dE-IT.build_info.de_endianness_consistent name
Pyry Haulos [Wed, 12 Apr 2017 03:08:15 +0000 (11:08 +0800)]
Fix typo in dE-IT.build_info.de_endianness_consistent name

Components: AOSP

Change-Id: Ie2cb1335834c010251021bac6b3882a37ede3f75

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 6 Apr 2017 18:04:35 +0000 (11:04 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: Iaedfbb3579c55d33ebfc415197a67b8145725f4f

7 years agoFix - uniform buffer incorrectly dereferenced
Marcin Kańtoch [Tue, 4 Apr 2017 12:31:34 +0000 (14:31 +0200)]
Fix - uniform buffer incorrectly dereferenced

Uniform buffer is incorrectly dereferenced in
ssbo layout tests.

Affected tests: dEQP-VK.ssbo.layout.*

Change-Id: I5831ad75f558f8992bed6bdc48b1833d2ee13d26

7 years agoUse vkGetInstanceProcAddr(NULL) to load platform funcs
Pyry Haulos [Wed, 5 Apr 2017 18:05:03 +0000 (11:05 -0700)]
Use vkGetInstanceProcAddr(NULL) to load platform funcs

Vulkan specification says that only vkGetInstanceProcAddr() has to be
loaded using platform-specific means. Other 'platform'-class functions,
listed below, can be loaded using vkGetInstanceProcAddr(NULL, pName).

Following functions are loaded with vkGetInstanceProcAddr():
 * vkEnumerateInstanceExtensionProperties
 * vkEnumerateInstanceLayerProperties
 * vkCreateInstance

Change-Id: Iab0657bf93d3a36e4f4dda4a1f1550024db0890e

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Wed, 5 Apr 2017 18:34:23 +0000 (11:34 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I2614d3a7ce451d47418e7c850a7c2c372f2189a9

7 years agoImgtec Waiver for texture_gather*cube*depth32f*
Alex Walters [Mon, 3 Apr 2017 10:46:36 +0000 (11:46 +0100)]
Imgtec Waiver for texture_gather*cube*depth32f*

Some versions of Imagination Technologies G6200, G6230, G6400, and
G6430 Rogue Series 6 GPU's are unable to correctly filter CEM corners
with F32 textures, this includes the ability to gather texels for texel
gather instructions.

This CL excludes the affected tests from mustpass.

Affects:

All dEQP-VK.glsl.texture_gather.basic.cube.depth32f* tests except:

dEQP-VK.glsl.texture_gather.basic.cube.depth32f.no_corners*

Components: Vulkan

VK-GL-CTS issue: 336

Change-Id: I4e20d887ad2901f78a7af326035d7a2a9ae5e76a

7 years agoAdd VK_KHR_incremental_present to the list of allowed device extensions
Iago Toral Quiroga [Tue, 4 Apr 2017 09:50:37 +0000 (11:50 +0200)]
Add VK_KHR_incremental_present to the list of allowed device extensions

Otherwise dEQP-VK.api.info.device.extensions will fail
for drivers that expose the extension.

Components: Vulkan
VK-GL-CTS issue: 346

Affects:
dEQP-VK.api.info.device.extensions

Change-Id: If1a5d971226adca2bfd1586cb1f568e2ca244b6d

7 years agoUse -std=c++03 with GCC and clang
Pyry Haulos [Thu, 30 Mar 2017 23:59:27 +0000 (16:59 -0700)]
Use -std=c++03 with GCC and clang

dEQP currently maintains minimum requirement of c++03 support from
toolchains. Use of c++11 or newer is not allowed

GCC 6.1 enables c++14 mode by default and developers might accidentally
use features from it unless we specify c++03 version.

Change-Id: If9ed0f009310b63b29b6a8a355969030b45139ba
Components: Framework

7 years agoFix GCC 6.3 warnings in vulkan-cts-1.0.2
Pyry Haulos [Thu, 30 Mar 2017 23:42:23 +0000 (16:42 -0700)]
Fix GCC 6.3 warnings in vulkan-cts-1.0.2

Change-Id: Iede7ed79a031ab38c0665d1a115e34d034d2b662

7 years agoImprove check_build_sanity.py
Pyry Haulos [Fri, 27 Jan 2017 00:36:18 +0000 (16:36 -0800)]
Improve check_build_sanity.py

 * All steps now respect --tmp-dir argument. This required adding
--build-dir and other args to mustpass scripts.

 * --recipe command line argument allows running only a specific build
check recipe.

 * --dump-recipes option allows printing out all recipes that are
supported in the current environment.

Components: Vulkan, Framework, AOSP

Change-Id: I6ba4f1369def14dc4ea6b398f367366549eecdc5
(cherry picked from commit 8849259035284f5506802f54f09f99f2b146e0b0)

7 years agoRelax image verification in anisotropic filtering tests
Alexander Galazin [Wed, 29 Mar 2017 07:14:36 +0000 (09:14 +0200)]
Relax image verification in anisotropic filtering tests

Combining nearest texel selection with anisotropic filtering
is implementation dependent and may not be supported.
Do not expect differences between the rendered and the reference images
for such combination of parameters.

Affects:
dEQP-VK.texture.filtering_anisotropy.basic.anisotropy_2.mag_nearest_min_nearest
dEQP-VK.texture.filtering_anisotropy.basic.anisotropy_4.mag_nearest_min_nearest
dEQP-VK.texture.filtering_anisotropy.basic.anisotropy_8.mag_nearest_min_nearest
dEQP-VK.texture.filtering_anisotropy.basic.anisotropy_max.mag_nearest_min_nearest
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_2.mag_nearest_min_nearest_mipmap_nearest
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_2.mag_nearest_min_nearest_mipmap_linear
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_4.mag_nearest_min_nearest_mipmap_nearest
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_4.mag_nearest_min_nearest_mipmap_linear
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_8.mag_nearest_min_nearest_mipmap_nearest
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_8.mag_nearest_min_nearest_mipmap_linear
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_max.mag_nearest_min_nearest_mipmap_nearest
dEQP-VK.texture.filtering_anisotropy.mipmap.anisotropy_max.mag_nearest_min_nearest_mipmap_linear

Components: Vulkan

VL-GL-CTS issue: 267

Change-Id: I064c507aea0b8d72205f4399fcf4a91684536667

7 years agoRespect maxColorAttachments in image tests
Steve Hill [Tue, 28 Mar 2017 12:40:59 +0000 (13:40 +0100)]
Respect maxColorAttachments in image tests

Tests in the image section were using up to 8 framebuffer
attachments.  The minumum required number is 4.

Affects:

dEQP-VK.pipeline.image.sampling_type.*.count_8.*

Components: Vulkan

VK-GL-CTS issue: 192

Change-Id: I21d957f17ec5ef7f9efc8d49f91c7a6d521da053

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Fri, 31 Mar 2017 16:38:21 +0000 (09:38 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

7 years agoFix SPIR-V generation in dEQP-VK.spirv_assembly
Andrey Tuganov [Fri, 3 Mar 2017 21:52:58 +0000 (16:52 -0500)]
Fix SPIR-V generation in dEQP-VK.spirv_assembly

SPIR-V code generated in vktSpvAsmInstructionTests.cpp violates
non-aggregate type declaration uniqueness rule of SPIR-V
specification.

Fixed some of the tests which don't require exstensive changes.

Affects: dEQP-VK.spirv_assembly.instruction.*
Components: Vulkan

VK-GL-CTS issue: 195

Change-Id: Ib352323b08e10f83a0f5371dbf2bbb8b6d1182dd

7 years agoFix - depth/stencil images mandatory only for VK_IMAGE_TYPE_2D
Marcin Kańtoch [Tue, 28 Mar 2017 13:06:59 +0000 (15:06 +0200)]
Fix - depth/stencil images mandatory only for VK_IMAGE_TYPE_2D

Vulkan spec change https://gitlab.khronos.org/vulkan/vulkan/issues/719
made it mandatory to support depth/stencil formats only for
image type VK_IMAGE_TYPE_2D. For VK_IMAGE_TYPE_1D and VK_IMAGE_TYPE_3D
this support is optional.

Made changes to isRequiredImageParameterCombination()

Tests affected: dEQP-VK.api.info.image_format_properties.*

Change-Id: I9df990ced2e0a735078897324211c6b2a3923f2e

7 years agoAdd missing barrier in ssbo layout tests
Iago Toral Quiroga [Fri, 24 Mar 2017 11:51:08 +0000 (12:51 +0100)]
Add missing barrier in ssbo layout tests

The tests map storage buffers written by compute shaders
to verify results. Add a barrier before host access to
these buffers.

Components: Vulkan
VK-GL-CTS issue: 326

Affected tests:
dEQP-VK.ssbo.layout.*

Change-Id: I760969e6a572c0f79a6ff2b41721445016a8bba4

7 years agoAdd tests for VK_KHR_incremental_present
Mika Isojärvi [Mon, 14 Nov 2016 20:47:29 +0000 (12:47 -0800)]
Add tests for VK_KHR_incremental_present

VK-GL-CTS issue: 228

Change-Id: Ib295de6e449fce56b1f94f2e80a9de52faa56a11
(cherry picked from commit 5319ab26dd8586121adfcc98bcd9f907a5a21aac)

7 years agoHandle VK_EXT_swapchain_colorspace in swapchain tests
Pyry Haulos [Wed, 15 Mar 2017 17:24:15 +0000 (10:24 -0700)]
Handle VK_EXT_swapchain_colorspace in swapchain tests

VK_EXT_swapchain_colorspace adds new surface formats. Driver can enumerate
the formats regardless of whether VK_EXT_swapchain_colorspace was enabled,
but using them without enabling the extension is not allowed. Thus we have
two options:

1) Filter out non-core formats to stay within valid usage.

2) Enable VK_EXT_swapchain colorspace if advertised by the driver.

We opt for (2) as it provides basic coverage for the extension as a bonus.

Affects: dEQP-VK.wsi.*.swapchain.*
Components: Vulkan
VK-GL-CTS issue: 237

Change-Id: I5f905e5fb7ceaf83dacca57ef60d65487ff96d5d
(cherry picked from commit 703e4baead3c08331ee7604539d7a68a8b960c84)

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 23 Mar 2017 16:47:05 +0000 (09:47 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I73deeb16880948addabb1d8755ee00084aa346cf

7 years agoImgtec Waiver for SNORM linear filtering
Pyry Haulos [Thu, 16 Mar 2017 21:50:40 +0000 (14:50 -0700)]
Imgtec Waiver for SNORM linear filtering

Due to an error in bit replication of the fixed point SNORM values,
linear filtered negative SNORM values will differ slightly from ideal
precision in the last bit, moving the values towards 0.

This occurs on all members of the PowerVR Rogue family of GPUs

Affected tests are changed to allow for larger error and issue
QualityWarning when inaccurate results are found.

Affects:

dEQP-VK.pipeline.sampler.view_type*format*_snorm*_filter.linear

Components: Vulkan

VK-GL-CTS issue: 229

Change-Id: I59fa0f7acdcaa49fc84f17b22be1cc805da593a2

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 23 Mar 2017 16:28:51 +0000 (09:28 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I3c3914cc9fe22c4815b3261c9b0fbcf1e184316b

7 years agoCheck DynamicIndexing in pipeline.image count tests
Alex Walters [Thu, 23 Mar 2017 11:42:50 +0000 (11:42 +0000)]
Check DynamicIndexing in pipeline.image count tests

The pipeline.image.sampling_type*count_* tests where the count of images
is greater than 1 use an array of images/samplers which requires the use
of shaderSampledImageArrayDynamicIndexing, which the test does not
currently check for.

Adds a check and throws NotSupportedError if the feature is not present.

Affects:

dEQP-VK.pipeline.image.sampling_type*count_*

Components: Vulkan

VK-GL-CTS issue: 296

Change-Id: I7b4244bcf4371e41c2121812362db166dc1d4c16

7 years agoAdd missing barrier in synchronization tests
Iago Toral Quiroga [Tue, 21 Mar 2017 11:34:07 +0000 (12:34 +0100)]
Add missing barrier in synchronization tests

The *read_vertex_input* tests write to a storage
buffer in the vertex stage, which will later
be mapped by the host to read and verify the
results. Add a barrier before attemptig to read
the data from the host.

Components: Vulkan
Vk-GL-CTS issue: 266

Affected tests:
dEQP-VK.synchronization.op.single_queue.semaphore.*read_vertex_input*

Change-Id: Ibda3c54aaa0ba82bdb29422aadcf5df90101411d

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Mon, 20 Mar 2017 16:35:30 +0000 (09:35 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I9f1ac0266e8b5f869e70ef3d8eaec9a7481fdef9

7 years agoFix invalid SPIR-V in dEQP-VK.sparse_resources
Andrey Tuganov [Thu, 2 Mar 2017 20:23:02 +0000 (15:23 -0500)]
Fix invalid SPIR-V in dEQP-VK.sparse_resources

Fixed issue:
SPIR-V code generated in
 - vktSparseResourcesShaderIntrinsicsStorage.cpp
 - vktSparseResourcesShaderIntrinsicsSampled.cpp
violates non-aggregate type declaration uniqueness rule of SPIR-V
specification.

Affects: dEQP-VK.sparse_resources.shader_intrinsics.*
Components: Vulkan

VK-GL-CTS issue: 230

Change-Id: Id39663a17684923f37924559917af524cf68f6c0

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 16 Mar 2017 20:26:40 +0000 (13:26 -0700)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

7 years agoAdd missing flushes for basic draws
Gary Sweet [Thu, 16 Mar 2017 13:17:39 +0000 (13:17 +0000)]
Add missing flushes for basic draws

Buffers were being mapped and written, but not flushed
before use. This affected the basic draw tests when running
with a non-coherent heap.

Affects:

dEQP-VK.draw.basic_draw.*

Components: Vulkan

VK-GL-CTS issue: 210

Change-Id: Ib0f9b77a3b0cd4488b9dc4cee6ebd6de4840262c

7 years agoAdd missing flushes for indirect draws
Gary Sweet [Thu, 16 Mar 2017 13:26:53 +0000 (13:26 +0000)]
Add missing flushes for indirect draws

Buffers were being mapped and written, but not flushed
before use. This affected the indirect draw tests when running
with a non-coherent heap.

Affects:

dEQP-VK.draw.indirect_draw.*

Components: Vulkan

VK-GL-CTS issue: 210

Change-Id: Ie8920bea727419a1da22b8e2d9babcca2c6593fe

7 years agoAdd tests for VK_GOOGLE_display_timing
Ian Elliott [Sun, 15 Jan 2017 22:28:01 +0000 (14:28 -0800)]
Add tests for VK_GOOGLE_display_timing

New tests:

dEQP-VK.wsi.*.display_timing.*

Changed tests:

dEQP-VK.api.info.android.no_unknown_extensions

VK-GL-CTS issue: 227

Change-Id: I50ae75ee0301668e4ad255625f7098387365def8
(cherry picked from commit 4ca1b5ba618a69f9ab748417c9ac5247d182dff4)

7 years agoFix precision mismatch issues in dEQP-VK.glsl
Pyry Haulos [Thu, 9 Mar 2017 18:55:20 +0000 (10:55 -0800)]
Fix precision mismatch issues in dEQP-VK.glsl

Changed tests:

dEQP-VK.glsl.functions.*
dEQP-VK.glsl.linkage.*
dEQP-VK.glsl.scoping.*
dEQP-VK.glsl.swizzles.*

Removed tests:

dEQP-VK.glsl.linkage.varying.rules.differing_precision_1
dEQP-VK.glsl.linkage.varying.rules.differing_precision_2
dEQP-VK.glsl.linkage.varying.rules.differing_precision_3

VK-GL-CTS issue: 214
Components: Vulkan

Change-Id: I48c7a5573b485340daa5be9db6aab1fbc70a6fc5

7 years agoFix validation errors in dEQP-VK.tessellation
Pyry Haulos [Thu, 9 Mar 2017 21:39:17 +0000 (13:39 -0800)]
Fix validation errors in dEQP-VK.tessellation

This fixes several invalid VkExtent3D::depth values for 2D image
operations as well as couple of interface mismatches.

Changed tests: dEQP-VK.tessellation.*

VK-GL-CTS issue: 222
Components: Vulkan

Change-Id: I3da2de6fdf5df7cb89717e35bade73b43e9d3a7d

7 years agoFix precision mismatch in dEQP-VK.binding_model
Pyry Haulos [Thu, 9 Mar 2017 20:44:57 +0000 (12:44 -0800)]
Fix precision mismatch in dEQP-VK.binding_model

Changed tests:

dEQP-VK.binding_model.shader_access.*vertex*

VK-GL-CTS issue: 212
Components: Vulkan

Change-Id: I34b565329c6261f7a12d19f67451c13537dfd914

7 years agoFix depth stencil aspect flag in render pass input tests
Mika Isojärvi [Thu, 9 Mar 2017 20:33:48 +0000 (12:33 -0800)]
Fix depth stencil aspect flag in render pass input tests

Affected tests:
dEQP-VK.renderpass.* -groups depth and stencil tests

VK-GL-CTS issue: 216
Components: Vulkan

Change-Id: Ib84e42d09e5fea9fbe2f1270c5369b14eb9d688b

7 years agoFix image layout in dEQP-VK.image
Pyry Haulos [Thu, 9 Mar 2017 20:51:24 +0000 (12:51 -0800)]
Fix image layout in dEQP-VK.image

Image load and store ops are only supported in VK_IMAGE_LAYOUT_GENERAL.

Changed tests:

dEQP-VK.image.load_store.*
dEQP-VK.image.format_reinterpret.*
dEQP-VK.image.qualifiers.restrict.*

VK-GL-CTS issue: 217
Components: Vulkan

Change-Id: I2b9048176ce0e79b3d1db8cb36d384c1b4c4c9d4

7 years agoFix validation errors in dEQP-VK.geometry
Pyry Haulos [Thu, 9 Mar 2017 21:45:30 +0000 (13:45 -0800)]
Fix validation errors in dEQP-VK.geometry

Fixes VkExtent3D::depth value as well as interface precision mismatch
issues.

VK-GL-CTS issue: 224
Components: Vulkan

Change-Id: Ida6f3ae2ba73cab3de22090a32a49e54b7af339c

7 years agoFix issues in pipeline.timestamp.transfer_tests
Pyry Haulos [Thu, 9 Mar 2017 17:46:29 +0000 (09:46 -0800)]
Fix issues in pipeline.timestamp.transfer_tests

This change fixes two issues:

 * Buffer overrun in vkCmdCopyBufferToImage and vkCmdCopyImageToBuffer
tests.

 * Validation error (srcStageMask must not be 0).

VK-GL-CTS issue: 185
Components: Vulkan

Change-Id: I9679566f08c4a914eb6066bab248abd6d51e0f7e

7 years agoRefactor vktShaderExecutor
Pyry Haulos [Wed, 8 Mar 2017 21:05:00 +0000 (13:05 -0800)]
Refactor vktShaderExecutor

ShaderExecutor Vulkan port had several issues:

 * Lifetime of ShaderExecutor was designed to extend from TestCase to
TestInstance. This was done in order to allow generating shader sources at
TestCase and later reuse same object to do actual execution when Vulkan
device was available. Result was total lifetime mess and leak of Vulkan
objects beyond TestInstance lifetime.

 * Whole UniformSetup system was badly designed mess that provided
functionality for just a few tests.

Following cleanups and fixes have been made:

 * ShaderExecutor objects are now expected to be live only when Vulkan
device is available, i.e. only within vkt::TestInstance. Shader source
generation part has been moved into a separate utility.

 * UniformSetup mess is removed and replaced with much leaner and
extensible way to supply additional resources. Descriptor set 1 is
reserved for test case specific resources and those can be provided by
supplying custom descriptor layout and descriptor set. Tests using old
UniformSetup system have been adjusted accordingly.

There is still room for additional improvements, such as moving much of
pipeline construction from ShaderExecutor::execute() into constructors,
but these can be done in follow-up CLs.

Affects following test groups:

dEQP-VK.glsl.builtin.*
dEQP-VK.glsl.opaque_type_indexing.
dEQP-VK.texture.explicit_lod.*

VK-GL-CTS issue: 182
Components: Vulkan

Change-Id: Icfc45a36cb4651f39f12608842ef347a55353d84

7 years agoImprove precision handling in texture.explicit_lod
Pyry Haulos [Mon, 13 Feb 2017 21:11:53 +0000 (13:11 -0800)]
Improve precision handling in texture.explicit_lod

This change improves precision requirement handling in
dEQP-VK.texture.explicit_lod test group by adding separate controls for
format conversion and filtering math.

Changed tests:
dEQP-VK.texture.explicit_lod.*

Components: Vulkan

Change-Id: Id64da1d63d87d02c73c757a3f2d5d50f2fbc19c0
(cherry picked from commit 4269dc0c1e513c550d3d45c16f2760450dfcef5c)

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 9 Mar 2017 23:01:33 +0000 (15:01 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I14e2b7bbfe3940ace0e6ae9b661f2a56a49edf98

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1
Pyry Haulos [Thu, 9 Mar 2017 23:01:31 +0000 (15:01 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1

Change-Id: Ica55df93dd12ea2c6460ec7c6fbb1383e6d38f4d

7 years agoFix a compilation error on GCC 5.4
Maciej Jesionowski [Wed, 8 Mar 2017 13:15:55 +0000 (14:15 +0100)]
Fix a compilation error on GCC 5.4

Components: Vulkan
Change-Id: I6c6681d16613f18b2a3192368927f6d176f63a64

7 years agoFix a compilation error on MSVC12
Maciej Jesionowski [Thu, 2 Mar 2017 11:51:39 +0000 (12:51 +0100)]
Fix a compilation error on MSVC12

There's a problem with uint32_t, so better just use delib defines.

Components: Vulkan

Change-Id: I589ac7f220a7e651ed31910d16c643866314f681

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Wed, 1 Mar 2017 15:53:46 +0000 (07:53 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I1a17ff8600abeab32614212bdab2e4646e50bc25

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1
Pyry Haulos [Wed, 1 Mar 2017 15:53:44 +0000 (07:53 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.0 into vk-gl-cts/vulkan-cts-1.0.1

Change-Id: I9eec4dd1fa88a85374eba8d0851b00a28c50b4ac

7 years agoFix bug in reallocation callback validation
Pyry Haulos [Thu, 23 Feb 2017 22:11:27 +0000 (14:11 -0800)]
Fix bug in reallocation callback validation

vk::validateAllocationCallbacks() didn't correctly handle a case where
reallocate(NULL, size) returned previously seen pointer value.

VK-GL-CTS issue: 176
Components: Vulkan

Change-Id: I0822f8e4176d20d7bf296cd85f5c5223e189d250

7 years agoFix input attachment layout in renderpass tests
Igor Ostrowski [Mon, 27 Feb 2017 12:47:12 +0000 (13:47 +0100)]
Fix input attachment layout in renderpass tests

Input attachment layout was hardcoded for descriptor set update.
Added input attachment layout getter.

Affects:

dEQP-VK.renderpass.*

Components: Vulkan

VK-GL-CTS issue: 189

Change-Id: I2083c7b0cf4c68072f98d369f6c3089c6eb2b184

7 years agoTest descriptor_update_template, push_descriptor
Petros Bantolas [Fri, 4 Nov 2016 15:12:52 +0000 (15:12 +0000)]
Test descriptor_update_template, push_descriptor

Extended the existing binding_model tests with 3 new variants,
'with_template', 'with_push_template' and 'with_push'.

The least invasive method to support push descriptor updates without
template was to persist the DescriptorSetUpdateBuilder object in the
test instance classes, so that it can be referenced when building the
command buffer.

Change-Id: I731fa41c5ff99ab1d390d77d7aabb4424e091e35
(cherry picked from commit 7f5ba3914c1d9033dd4f896ef6fcaa22f5c5e038)

7 years agoUpdate Android CTS Vulkan mustpass
Pyry Haulos [Mon, 13 Feb 2017 18:42:12 +0000 (10:42 -0800)]
Update Android CTS Vulkan mustpass

Following commits modify Vulkan CTS 1.0.2 mustpass:

 * fbaba83dbee101b3096ce33f21ae398efee3fa67
 * c09596ed4b8d17f057f77a42475d59c1ac126797

This change simply updates Android version of mustpass to match Khronos
Vulkan CTS 1.0.2 mustpass.

Change-Id: I79e2696ec4c457d11b59e03cf2a73977ab98d8d5
Components: AOSP

7 years agoUpdate Android CTS Vulkan mustpass to match 1.0.2
Pyry Haulos [Tue, 31 Jan 2017 00:02:32 +0000 (16:02 -0800)]
Update Android CTS Vulkan mustpass to match 1.0.2

This CL updates Android CTS mustpass for Vulkan to match Khronos Vulkan
CTS 1.0.2.0.

Change-Id: Ia2f82b5f6675c67940679eb98f59510f264d62bf
(cherry picked from commit 15f342274521c1be1032e993dbfd4a46b878f337)

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Mon, 13 Feb 2017 18:34:37 +0000 (10:34 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: Ida077bae420c265f4a92d78d68b0f1c9b8d1c85c

7 years agoWrite gl_PointSize value when it is undefined
Iago Toral Quiroga [Fri, 10 Feb 2017 10:35:52 +0000 (11:35 +0100)]
Write gl_PointSize value when it is undefined

gl_PointSize is undefined unless expicitly written to. The only
exception to this rule is the case when
shaderTessellationAndGeometryPointSize is disabled, in which case it
defaults to 1.0 for these stages.

Since we don't have access to the physical device features at shader
compile time, implement two variants of the tessellation evaluation
shader when point mode is enabled, one that writes gl_PointSize and
one that doesn't and decide the one we need at run time based on
whether the feature is enabled or not.

Components: Vulkan
Fixes VK-GL-CTS issue: 159

Affects:
dEQP-VK.tessellation.primitive_discard.*point_mode

Change-Id: Idadbc70a704f00ed601ff65afeb2a3edfbeb3f19

7 years agodEQP-VK.info.*image_format_properties2* VkImageUsageFlags fix
Marcin Kańtoch [Mon, 6 Feb 2017 09:25:56 +0000 (10:25 +0100)]
dEQP-VK.info.*image_format_properties2* VkImageUsageFlags fix

The usage flags loop iterator starts currently with 0, which is not
a valid image usage value. It is reported as an error by Validation
Layers.

The patch contains also a simple fix for iterating over valid sample
count flag bits.

Modified tests:
dEQP-VK.info.image_format_properties2*
dEQP-VK.info.sparse_image_format_properties2*

Components: Vulkan
VK-GL-CTS issue: 133

Change-Id: I0edbdbc389fa3bd9a71ca4d3b7777ede38a7b353

7 years agoAndroid: Test that mandatory extensions are supported
Pyry Haulos [Fri, 3 Feb 2017 21:25:48 +0000 (13:25 -0800)]
Android: Test that mandatory extensions are supported

Change-Id: Id0e44299f1d8441bf1e7ecc91d82d3b06400e7e6

7 years agoAndroid: Test that no Vulkan layers are enumerated
Pyry Haulos [Tue, 17 Jan 2017 23:49:02 +0000 (15:49 -0800)]
Android: Test that no Vulkan layers are enumerated

Change-Id: I43dacf306b468485fc160f175160555b9cf1c86d

7 years agoAndroid: Check KHX, GOOGLE, and ANDROID extensions
Pyry Haulos [Wed, 11 Jan 2017 23:02:19 +0000 (15:02 -0800)]
Android: Check KHX, GOOGLE, and ANDROID extensions

Change-Id: I6ee24e584666e1f2542adf35943a2973c9392ad9

7 years agoMerge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
Pyry Haulos [Thu, 9 Feb 2017 17:54:38 +0000 (09:54 -0800)]
Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2

Change-Id: I32aa09e131335c13262518708fd5970191aad77b

7 years agoFix memory management, image layout issues in uploadImageSparse()
Dominik Witczak [Thu, 17 Nov 2016 12:10:19 +0000 (13:10 +0100)]
Fix memory management, image layout issues in uploadImageSparse()

Fixes an issue where ShaderRenderCaseInstance::uploadSparseImage()
would first configure sparse image bindings and then deallocate
the memory objects, prior to actually sampling the image.

Fixes an issue where the sparse image, after having been filled with
contents, would first be transitioned to SHADER_READ_ONLY_OPTIMAL
layout, and then used in a DS which was expecting it to be in
GENERLA layout.

Finally, the patch addresses a problem, where the function would not
correctly recognize the VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
as reported by the running driver.

The change affects dEQP-VK.glsl.*sparse* tests

VK-GL-CTS issue: 156

Change-Id: Ie5717841fe0ef9c0672b5075380ff96bba9855b9
(cherry picked from commit 70fc0800efe725f4f91f4d03b09aa0e567dbb09c)