From: Pyry Haulos Date: Fri, 15 Jan 2016 16:52:48 +0000 (-0500) Subject: Merge branch 'jekstrand_renderpass_transfer_bit_fix' into 'master' X-Git-Tag: upstream/0.1.0~812^2~158 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2c91b95b43aaccb02ace9c3bd885abb449ff3220;hp=6a01315706319730673c873e86902be9a9f5731f;p=platform%2Fupstream%2FVK-GL-CTS.git Merge branch 'jekstrand_renderpass_transfer_bit_fix' into 'master' dEQP-VK.renderpass: Set IMAGE_USAGE_TRANSFER_SRC_BIT when needed Later on in the test, if "lazy" is not set, we try and download the image. See merge request !266 --- diff --git a/Android.mk b/Android.mk index 586308c..0183bb0 100644 --- a/Android.mk +++ b/Android.mk @@ -734,13 +734,15 @@ LOCAL_SHARED_LIBRARIES := \ liblog \ libm \ libc \ - libpng \ libz \ libdl +LOCAL_STATIC_LIBRARIES := \ + libpng_ndk \ + LOCAL_CFLAGS += \ $(deqp_compile_flags) \ - -Wno-date-time + -Wno-error=date-time LOCAL_SDK_VERSION := 9 LOCAL_CPPFLAGS += -Wno-non-virtual-dtor diff --git a/execserver/xsPosixTestProcess.cpp b/execserver/xsPosixTestProcess.cpp index 5c9dcb6..9f4d21d 100644 --- a/execserver/xsPosixTestProcess.cpp +++ b/execserver/xsPosixTestProcess.cpp @@ -200,7 +200,7 @@ void PosixTestProcess::start (const char* name, const char* params, const char* } // Construct command line. - string cmdLine = de::FilePath(name).isAbsolutePath() ? name : de::FilePath::join(workingDir, name).normalize().getPath(); + string cmdLine = de::FilePath(name).isAbsolutePath() ? name : de::FilePath::join(workingDir, name).getPath(); cmdLine += string(" --deqp-log-filename=") + logFilePath.getBaseName(); if (hasCaseList) diff --git a/external/fetch_sources.py b/external/fetch_sources.py index 1c7fa19..642cd31 100644 --- a/external/fetch_sources.py +++ b/external/fetch_sources.py @@ -134,11 +134,10 @@ class SourcePackage (Source): self.postExtract(dstPath) class GitRepo (Source): - def __init__(self, url, revision, baseDir, extractDir = "src", postCheckout = None): + def __init__(self, url, revision, baseDir, extractDir = "src"): Source.__init__(self, baseDir, extractDir) - self.url = url - self.revision = revision - self.postCheckout = postCheckout + self.url = url + self.revision = revision def update (self): fullDstPath = os.path.join(EXTERNAL_DIR, self.baseDir, self.extractDir) @@ -150,9 +149,6 @@ class GitRepo (Source): try: execute(["git", "fetch", self.url, "+refs/heads/*:refs/remotes/origin/*"]) execute(["git", "checkout", self.revision]) - - if self.postCheckout: - self.postCheckout(fullDstPath) finally: popWorkingDir() @@ -160,12 +156,6 @@ def postExtractLibpng (path): shutil.copy(os.path.join(path, "scripts", "pnglibconf.h.prebuilt"), os.path.join(path, "pnglibconf.h")) -def postCheckoutGlslang (path): - srcPath = os.path.join(path, "SPIRV", "SpvBuilder.cpp"); - origSrc = readFile(srcPath) - patched = origSrc.replace("exit(1)", "throw std::runtime_error(fun)") - writeFile(srcPath, patched) - PACKAGES = [ SourcePackage( "http://zlib.net/zlib-1.2.8.tar.gz", @@ -184,9 +174,8 @@ PACKAGES = [ "spirv-tools"), GitRepo( "git@gitlab.khronos.org:GLSL/glslang.git", - "41daec718f4868d956ca7d339a15aebe65879442", - "glslang", - postCheckout = postCheckoutGlslang), + "cafd6cc2f1b9987a0948c1653363f2e76a5fa6b1", + "glslang"), ] def parseArgs (): diff --git a/external/vulkancts/build_mustpass.py b/external/vulkancts/build_mustpass.py new file mode 100644 index 0000000..c669904 --- /dev/null +++ b/external/vulkancts/build_mustpass.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- + +#------------------------------------------------------------------------- +# Vulkan CTS +# ---------- +# +# Copyright (c) 2016 Google Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and/or associated documentation files (the +# "Materials"), to deal in the Materials without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Materials, and to +# permit persons to whom the Materials are furnished to do so, subject to +# the following conditions: +# +# The above copyright notice(s) and this permission notice shall be +# included in all copies or substantial portions of the Materials. +# +# The Materials are Confidential Information as defined by the +# Khronos Membership Agreement until designated non-confidential by +# Khronos, at which point this condition clause shall be removed. +# +# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +# +#------------------------------------------------------------------------- + +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "scripts")) + +from build.common import DEQP_DIR +from build.config import ANY_GENERATOR +from build_caselists import Module, getModuleByName, getBuildConfig, DEFAULT_BUILD_DIR, DEFAULT_TARGET +from mustpass import Project, Package, Mustpass, Configuration, include, exclude, genMustpassLists + +COPYRIGHT_DECLARATION = """ + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and/or associated documentation files (the + "Materials"), to deal in the Materials without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Materials, and to + permit persons to whom the Materials are furnished to do so, subject to + the following conditions: + + The above copyright notice(s) and this permission notice shall be + included in all copies or substantial portions of the Materials. + + The Materials are Confidential Information as defined by the + Khronos Membership Agreement until designated non-confidential by + Khronos, at which point this condition clause shall be removed. + + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + """ + +MUSTPASS_PATH = os.path.join(DEQP_DIR, "external", "vulkancts", "mustpass") +PROJECT = Project(path = MUSTPASS_PATH, copyright = COPYRIGHT_DECLARATION) +VULKAN_MODULE = getModuleByName("dEQP-VK") +BUILD_CONFIG = getBuildConfig(DEFAULT_BUILD_DIR, DEFAULT_TARGET, "Debug") + +# 1.0.0 + +VULKAN_1_0_0_PKG = Package(module = VULKAN_MODULE, configurations = [ + # Master + Configuration(name = "default", + filters = [include("master.txt"), + exclude("test-issues.txt"), + exclude("excluded-tests.txt")]), + ]) + +MUSTPASS_LISTS = [ + Mustpass(project = PROJECT, version = "1.0.0", packages = [VULKAN_1_0_0_PKG]) + ] + +if __name__ == "__main__": + genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, BUILD_CONFIG) diff --git a/external/vulkancts/data/vulkan/glsl/es310/linkage.test b/external/vulkancts/data/vulkan/glsl/es310/linkage.test index d0cec0f..21c62b0 100644 --- a/external/vulkancts/data/vulkan/glsl/es310/linkage.test +++ b/external/vulkancts/data/vulkan/glsl/es310/linkage.test @@ -20,7 +20,7 @@ group varying "Varying linkage" fragment "" #version 310 es precision mediump float; - in mediump float var; + layout(location = 0) in mediump float var; ${FRAGMENT_DECLARATIONS} void main() { @@ -37,7 +37,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { ${VERTEX_OUTPUT} @@ -60,7 +60,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { ${VERTEX_OUTPUT} @@ -68,7 +68,7 @@ group varying "Varying linkage" "" fragment "" #version 310 es - in mediump float var; + layout(location = 0) in mediump float var; ${FRAGMENT_DECLARATIONS} void main() { @@ -85,7 +85,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { ${VERTEX_OUTPUT} @@ -93,7 +93,7 @@ group varying "Varying linkage" "" fragment "" #version 310 es - in mediump float var; + layout(location = 0) in mediump float var; ${FRAGMENT_DECLARATIONS} void main() { @@ -113,7 +113,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { if (u_false) @@ -139,7 +139,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { if (u_false) @@ -149,7 +149,7 @@ group varying "Varying linkage" "" fragment "" #version 310 es - in mediump float var; + layout(location = 0) in mediump float var; ${FRAGMENT_DECLARATIONS} void main() { @@ -166,7 +166,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { if (u_false) @@ -177,7 +177,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - in mediump float var; + layout(location = 0) in mediump float var; void main() { if (u_false) @@ -201,7 +201,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out highp float var; + layout(location = 0) out highp float var; void main() { var = in0; @@ -212,7 +212,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mediump float var; + layout(location = 0) in mediump float var; void main() { out0 = var; @@ -234,7 +234,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out highp vec2 var; + layout(location = 0) out highp vec2 var; void main() { var = vec2(in0, 2.0*in0); @@ -245,7 +245,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in lowp vec2 var; + layout(location = 0) in lowp vec2 var; void main() { out0 = var.y - var.x; @@ -267,7 +267,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out lowp vec4 var; + layout(location = 0) out lowp vec4 var; void main() { var = vec4(in0, 2.0*in0, -in0, -in0); @@ -278,7 +278,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mediump vec4 var; + layout(location = 0) in mediump vec4 var; void main() { out0 = var.x + var.y + var.z + var.w; @@ -300,7 +300,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - smooth out mediump float var; + layout(location = 0) smooth out mediump float var; void main() { var = in0; @@ -311,7 +311,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - centroid in mediump float var; + layout(location = 0) centroid in mediump float var; void main() { out0 = var; @@ -334,7 +334,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump float var; + layout(location = 0) out mediump float var; void main() { var = in0; @@ -345,7 +345,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in float var; + layout(location = 0) in float var; void main() { out0 = var; @@ -365,7 +365,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump vec2 var; + layout(location = 0) out mediump vec2 var; void main() { var = in0; @@ -376,7 +376,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in vec2 var; + layout(location = 0) in vec2 var; void main() { out0 = var; @@ -396,7 +396,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump vec3 var; + layout(location = 0) out mediump vec3 var; void main() { var = in0; @@ -407,7 +407,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in vec3 var; + layout(location = 0) in vec3 var; void main() { out0 = var; @@ -427,7 +427,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump vec4 var; + layout(location = 0) out mediump vec4 var; void main() { var = in0; @@ -438,7 +438,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in vec4 var; + layout(location = 0) in vec4 var; void main() { out0 = var; @@ -458,7 +458,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat2 var; + layout(location = 0) out mediump mat2 var; void main() { var = in0; @@ -469,7 +469,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat2 var; + layout(location = 0) in mat2 var; void main() { out0 = var; @@ -489,7 +489,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat2x3 var; + layout(location = 0) out mediump mat2x3 var; void main() { var = in0; @@ -500,7 +500,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat2x3 var; + layout(location = 0) in mat2x3 var; void main() { out0 = var; @@ -520,7 +520,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat2x4 var; + layout(location = 0) out mediump mat2x4 var; void main() { var = in0; @@ -531,7 +531,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat2x4 var; + layout(location = 0) in mat2x4 var; void main() { out0 = var; @@ -551,7 +551,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat3x2 var; + layout(location = 0) out mediump mat3x2 var; void main() { var = in0; @@ -562,7 +562,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat3x2 var; + layout(location = 0) in mat3x2 var; void main() { out0 = var; @@ -582,7 +582,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat3 var; + layout(location = 0) out mediump mat3 var; void main() { var = in0; @@ -593,7 +593,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat3 var; + layout(location = 0) in mat3 var; void main() { out0 = var; @@ -613,7 +613,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat3x4 var; + layout(location = 0) out mediump mat3x4 var; void main() { var = in0; @@ -624,7 +624,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat3x4 var; + layout(location = 0) in mat3x4 var; void main() { out0 = var; @@ -644,7 +644,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat4x2 var; + layout(location = 0) out mediump mat4x2 var; void main() { var = in0; @@ -655,7 +655,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat4x2 var; + layout(location = 0) in mat4x2 var; void main() { out0 = var; @@ -675,7 +675,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat4x3 var; + layout(location = 0) out mediump mat4x3 var; void main() { var = in0; @@ -686,7 +686,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat4x3 var; + layout(location = 0) in mat4x3 var; void main() { out0 = var; @@ -706,7 +706,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - out mediump mat4 var; + layout(location = 0) out mediump mat4 var; void main() { var = in0; @@ -717,7 +717,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in mat4 var; + layout(location = 0) in mat4 var; void main() { out0 = var; @@ -737,7 +737,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump int var; + layout(location = 0) flat out mediump int var; void main() { ${VERTEX_SETUP} @@ -748,7 +748,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in int var; + layout(location = 0) flat in int var; void main() { out0 = var; @@ -768,7 +768,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump ivec2 var; + layout(location = 0) flat out mediump ivec2 var; void main() { ${VERTEX_SETUP} @@ -779,7 +779,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in ivec2 var; + layout(location = 0) flat in ivec2 var; void main() { out0 = var; @@ -799,7 +799,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump ivec3 var; + layout(location = 0) flat out mediump ivec3 var; void main() { ${VERTEX_SETUP} @@ -810,7 +810,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in ivec3 var; + layout(location = 0) flat in ivec3 var; void main() { out0 = var; @@ -830,7 +830,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump ivec4 var; + layout(location = 0) flat out mediump ivec4 var; void main() { ${VERTEX_SETUP} @@ -841,7 +841,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in ivec4 var; + layout(location = 0) flat in ivec4 var; void main() { out0 = var; @@ -861,7 +861,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump uint var; + layout(location = 0) flat out mediump uint var; void main() { ${VERTEX_SETUP} @@ -872,7 +872,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in uint var; + layout(location = 0) flat in uint var; void main() { out0 = var; @@ -892,7 +892,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump uvec2 var; + layout(location = 0) flat out mediump uvec2 var; void main() { ${VERTEX_SETUP} @@ -903,7 +903,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in uvec2 var; + layout(location = 0) flat in uvec2 var; void main() { out0 = var; @@ -923,7 +923,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump uvec3 var; + layout(location = 0) flat out mediump uvec3 var; void main() { ${VERTEX_SETUP} @@ -934,7 +934,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in uvec3 var; + layout(location = 0) flat in uvec3 var; void main() { out0 = var; @@ -954,7 +954,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump uvec4 var; + layout(location = 0) flat out mediump uvec4 var; void main() { ${VERTEX_SETUP} @@ -965,7 +965,7 @@ group varying "Varying linkage" fragment "" #version 310 es ${FRAGMENT_DECLARATIONS} - flat in uvec4 var; + layout(location = 0) flat in uvec4 var; void main() { out0 = var; @@ -988,7 +988,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump float a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1000,7 +1000,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump float a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1021,7 +1021,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump vec2 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1033,7 +1033,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump vec2 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1054,7 +1054,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump vec3 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1066,7 +1066,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump vec3 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1087,7 +1087,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump vec4 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1099,7 +1099,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump vec4 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1120,7 +1120,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat2 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1132,7 +1132,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat2 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1153,7 +1153,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat2x3 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1165,7 +1165,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat2x3 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1186,7 +1186,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat2x4 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1198,7 +1198,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat2x4 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1219,7 +1219,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat3x2 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1231,7 +1231,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat3x2 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1252,7 +1252,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat3 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1264,7 +1264,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat3 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1285,7 +1285,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat3x4 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1297,7 +1297,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat3x4 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1318,7 +1318,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat4x2 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1330,7 +1330,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat4x2 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1351,7 +1351,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat4x3 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1363,7 +1363,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat4x3 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1384,7 +1384,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump mat4 a; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1396,7 +1396,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump mat4 a; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1417,7 +1417,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump int a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1429,7 +1429,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump int a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1450,7 +1450,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump ivec2 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1462,7 +1462,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump ivec2 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1483,7 +1483,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump ivec3 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1495,7 +1495,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump ivec3 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1516,7 +1516,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump ivec4 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1528,7 +1528,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump ivec4 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1549,7 +1549,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump uint a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1561,7 +1561,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump uint a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1582,7 +1582,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump uvec2 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1594,7 +1594,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump uvec2 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1615,7 +1615,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump uvec3 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1627,7 +1627,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump uvec3 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1648,7 +1648,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump uvec4 a; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1660,7 +1660,7 @@ group varying "Varying linkage" #version 310 es ${FRAGMENT_DECLARATIONS} struct S { mediump uvec4 a; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1683,7 +1683,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump float a; highp vec3 b; }; - out S var; + layout(location = 0) out S var; void main() { var.a = in0; @@ -1696,7 +1696,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump float a; highp vec3 b; }; - in S var; + layout(location = 0) in S var; void main() { out0 = var.a; @@ -1722,7 +1722,7 @@ group varying "Varying linkage" #version 310 es ${VERTEX_DECLARATIONS} struct S { mediump float a; highp uvec2 b; highp vec3 c; }; - flat out S var; + layout(location = 0) flat out S var; void main() { ${VERTEX_SETUP} @@ -1737,7 +1737,7 @@ group varying "Varying linkage" precision mediump float; ${FRAGMENT_DECLARATIONS} struct S { mediump float a; highp uvec2 b; highp vec3 c; }; - flat in S var; + layout(location = 0) flat in S var; void main() { out0 = var.a; @@ -1761,7 +1761,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - smooth out mediump vec4 var; + layout(location = 0) smooth out mediump vec4 var; void main() { var = in0; @@ -1772,7 +1772,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - smooth in vec4 var; + layout(location = 0) smooth in vec4 var; void main() { out0 = var; @@ -1792,7 +1792,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - centroid out mediump vec4 var; + layout(location = 0) centroid out mediump vec4 var; void main() { var = in0; @@ -1803,7 +1803,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - centroid in vec4 var; + layout(location = 0) centroid in vec4 var; void main() { out0 = var; @@ -1823,7 +1823,7 @@ group varying "Varying linkage" vertex "" #version 310 es ${VERTEX_DECLARATIONS} - flat out mediump vec4 var; + layout(location = 0) flat out mediump vec4 var; void main() { var = in0; @@ -1834,7 +1834,7 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - flat in vec4 var; + layout(location = 0) flat in vec4 var; void main() { out0 = var; @@ -1857,8 +1857,8 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${VERTEX_DECLARATIONS} - out float var1; - out float var2; + layout(location = 0) out float var1; + layout(location = 1) out float var2; void main() { @@ -1871,8 +1871,8 @@ group varying "Varying linkage" #version 310 es precision mediump float; ${FRAGMENT_DECLARATIONS} - in float var1; - in float var2; + layout(location = 0) in float var1; + layout(location = 1) in float var2; void main() { diff --git a/external/vulkancts/framework/vulkan/vkAllocationCallbackUtil.cpp b/external/vulkancts/framework/vulkan/vkAllocationCallbackUtil.cpp index ec748af..59e965b 100644 --- a/external/vulkancts/framework/vulkan/vkAllocationCallbackUtil.cpp +++ b/external/vulkancts/framework/vulkan/vkAllocationCallbackUtil.cpp @@ -500,7 +500,7 @@ void validateAllocationCallbacks (const AllocationCallbackRecorder& recorder, Al size_t* const totalAllocSizePtr = &results->internalAllocationTotal[record.data.internalAllocation.type][record.data.internalAllocation.scope]; const size_t size = record.data.internalAllocation.size; - if (record.type == AllocationCallbackRecord::TYPE_FREE) + if (record.type == AllocationCallbackRecord::TYPE_INTERNAL_FREE) { if (*totalAllocSizePtr < size) { diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl index 9dcefe1..dd8ecf6 100644 --- a/external/vulkancts/framework/vulkan/vkBasicTypes.inl +++ b/external/vulkancts/framework/vulkan/vkBasicTypes.inl @@ -1,14 +1,14 @@ /* WARNING: This is auto-generated file. Do not modify, since changes will * be lost! Modify the generating script instead. */ -enum { VK_API_VERSION = VK_MAKE_VERSION(0, 210, 1) }; -enum { VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 }; -enum { VK_MAX_EXTENSION_NAME_SIZE = 256 }; -enum { VK_UUID_SIZE = 16 }; -enum { VK_MAX_MEMORY_TYPES = 32 }; -enum { VK_MAX_MEMORY_HEAPS = 16 }; -enum { VK_MAX_DESCRIPTION_SIZE = 256 }; -enum { VK_ATTACHMENT_UNUSED = (~0U) }; +enum { VK_API_VERSION = VK_MAKE_VERSION(1, 0, 0) }; +enum { VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 }; +enum { VK_MAX_EXTENSION_NAME_SIZE = 256 }; +enum { VK_UUID_SIZE = 16 }; +enum { VK_MAX_MEMORY_TYPES = 32 }; +enum { VK_MAX_MEMORY_HEAPS = 16 }; +enum { VK_MAX_DESCRIPTION_SIZE = 256 }; +enum { VK_ATTACHMENT_UNUSED = (~0U) }; VK_DEFINE_HANDLE (VkInstance, HANDLE_TYPE_INSTANCE); VK_DEFINE_HANDLE (VkPhysicalDevice, HANDLE_TYPE_PHYSICAL_DEVICE); @@ -40,6 +40,11 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE (VkSwapchainKHR, HANDLE_TYPE_SWAPCHAIN_KHR); VK_DEFINE_NON_DISPATCHABLE_HANDLE (VkDisplayKHR, HANDLE_TYPE_DISPLAY_KHR); VK_DEFINE_NON_DISPATCHABLE_HANDLE (VkDisplayModeKHR, HANDLE_TYPE_DISPLAY_MODE_KHR); +enum VkPipelineCacheHeaderVersion +{ + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, +}; + enum VkResult { VK_SUCCESS = 0, @@ -64,6 +69,7 @@ enum VkResult VK_ERROR_OUT_OF_DATE_KHR = -1000001004, VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000008000, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, }; enum VkStructureType @@ -109,18 +115,26 @@ enum VkStructureType VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 46, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000, + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000, + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000, }; enum VkSystemAllocationScope @@ -570,9 +584,8 @@ enum VkFilter enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_BASE = 0, - VK_SAMPLER_MIPMAP_MODE_NEAREST = 1, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 2, + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, VK_SAMPLER_MIPMAP_MODE_LAST }; @@ -760,6 +773,28 @@ enum VkMemoryHeapFlagBits }; typedef deUint32 VkMemoryHeapFlags; +enum VkPipelineStageFlagBits +{ + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, + VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, + VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, +}; +typedef deUint32 VkPipelineStageFlags; + enum VkImageAspectFlagBits { VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, @@ -807,7 +842,6 @@ typedef deUint32 VkQueryPipelineStatisticFlags; enum VkQueryResultFlagBits { - VK_QUERY_RESULT_DEFAULT = 0, VK_QUERY_RESULT_64_BIT = 0x00000001, VK_QUERY_RESULT_WAIT_BIT = 0x00000002, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, @@ -888,27 +922,6 @@ enum VkAttachmentDescriptionFlagBits }; typedef deUint32 VkAttachmentDescriptionFlags; -enum VkPipelineStageFlagBits -{ - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, - VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, - VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, - VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, - VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, - VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, - VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, - VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, - VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, - VK_PIPELINE_STAGE_HOST_BIT = 0x00002000, - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00004000, - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00008000, -}; -typedef deUint32 VkPipelineStageFlags; - enum VkAccessFlagBits { VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, @@ -972,7 +985,6 @@ typedef deUint32 VkCommandBufferResetFlags; enum VkStencilFaceFlagBits { - VK_STENCIL_FACE_NONE = 0, VK_STENCIL_FACE_FRONT_BIT = 0x00000001, VK_STENCIL_FACE_BACK_BIT = 0x00000002, VK_STENCIL_FRONT_AND_BACK = 0x3, @@ -981,7 +993,7 @@ typedef deUint32 VkStencilFaceFlags; enum VkSurfaceTransformFlagBitsKHR { - VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001, + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, @@ -1039,7 +1051,7 @@ typedef deUint32 VkPipelineVertexInputStateCreateFlags; typedef deUint32 VkPipelineInputAssemblyStateCreateFlags; -typedef deUint32 VkPipelineTesselationStateCreateFlags; +typedef deUint32 VkPipelineTessellationStateCreateFlags; typedef deUint32 VkPipelineViewportStateCreateFlags; @@ -1073,3 +1085,15 @@ typedef deUint32 VkDisplayModeCreateFlagsKHR; typedef deUint32 VkDisplaySurfaceCreateFlagsKHR; +typedef deUint32 VkXlibSurfaceCreateFlagsKHR; + +typedef deUint32 VkXcbSurfaceCreateFlagsKHR; + +typedef deUint32 VkWaylandSurfaceCreateFlagsKHR; + +typedef deUint32 VkMirSurfaceCreateFlagsKHR; + +typedef deUint32 VkAndroidSurfaceCreateFlagsKHR; + +typedef deUint32 VkWin32SurfaceCreateFlagsKHR; + diff --git a/external/vulkancts/framework/vulkan/vkBuilderUtil.cpp b/external/vulkancts/framework/vulkan/vkBuilderUtil.cpp index 3b2d327..44dde43 100644 --- a/external/vulkancts/framework/vulkan/vkBuilderUtil.cpp +++ b/external/vulkancts/framework/vulkan/vkBuilderUtil.cpp @@ -50,13 +50,28 @@ DescriptorSetLayoutBuilder& DescriptorSetLayoutBuilder::addBinding (VkDescriptor VkShaderStageFlags stageFlags, const VkSampler* pImmutableSamplers) { + if (pImmutableSamplers) + { + const ImmutableSamplerInfo immutableSamplerInfo = + { + (deUint32)m_bindings.size(), + (deUint32)m_immutableSamplers.size() + }; + + m_immutableSamplerInfos.push_back(immutableSamplerInfo); + + for (size_t descriptorNdx = 0; descriptorNdx < descriptorCount; descriptorNdx++) + m_immutableSamplers.push_back(pImmutableSamplers[descriptorNdx]); + } + + // pImmutableSamplers will be updated at build time const VkDescriptorSetLayoutBinding binding = { (deUint32)m_bindings.size(), // binding descriptorType, // descriptorType descriptorCount, // descriptorCount stageFlags, // stageFlags - pImmutableSamplers, // pImmutableSamplers + DE_NULL, // pImmutableSamplers }; m_bindings.push_back(binding); return *this; @@ -64,14 +79,23 @@ DescriptorSetLayoutBuilder& DescriptorSetLayoutBuilder::addBinding (VkDescriptor Move DescriptorSetLayoutBuilder::build (const DeviceInterface& vk, VkDevice device) const { - const VkDescriptorSetLayoutBinding* const bindingPtr = (m_bindings.empty()) ? (DE_NULL) : (&m_bindings[0]); + // Create new layout bindings with pImmutableSamplers updated + std::vector bindings = m_bindings; + + for (size_t samplerInfoNdx = 0; samplerInfoNdx < m_immutableSamplerInfos.size(); samplerInfoNdx++) + { + const ImmutableSamplerInfo& samplerInfo = m_immutableSamplerInfos[samplerInfoNdx]; + + bindings[samplerInfo.bindingIndex].pImmutableSamplers = &m_immutableSamplers[samplerInfo.samplerBaseIndex]; + } + const VkDescriptorSetLayoutCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, DE_NULL, - (VkDescriptorSetLayoutCreateFlags)0, // flags - (deUint32)m_bindings.size(), // bindingCount - bindingPtr, // pBinding + (VkDescriptorSetLayoutCreateFlags)0, // flags + (deUint32)bindings.size(), // bindingCount + (bindings.empty()) ? (DE_NULL) : (bindings.data()), // pBinding }; return createDescriptorSetLayout(vk, device, &createInfo); @@ -147,6 +171,7 @@ DescriptorSetUpdateBuilder& DescriptorSetUpdateBuilder::write (VkDescriptorSet const VkDescriptorBufferInfo* pBufferInfo, const VkBufferView* pTexelBufferView) { + // pImageInfo, pBufferInfo and pTexelBufferView will be updated when calling update() const VkWriteDescriptorSet writeParams = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, @@ -156,11 +181,27 @@ DescriptorSetUpdateBuilder& DescriptorSetUpdateBuilder::write (VkDescriptorSet destArrayElement, //!< destArrayElement count, //!< count descriptorType, //!< descriptorType - pImageInfo, - pBufferInfo, - pTexelBufferView + DE_NULL, + DE_NULL, + DE_NULL }; + m_writes.push_back(writeParams); + + // Store a copy of pImageInfo, pBufferInfo and pTexelBufferView + WriteDescriptorInfo writeInfo; + + if (pImageInfo) + writeInfo.imageInfos.insert(writeInfo.imageInfos.end(), pImageInfo, pImageInfo + count); + + if (pBufferInfo) + writeInfo.bufferInfos.insert(writeInfo.bufferInfos.end(), pBufferInfo, pBufferInfo + count); + + if (pTexelBufferView) + writeInfo.texelBufferViews.insert(writeInfo.texelBufferViews.end(), pTexelBufferView, pTexelBufferView + count); + + m_writeDescriptorInfos.push_back(writeInfo); + return *this; } @@ -190,10 +231,27 @@ DescriptorSetUpdateBuilder& DescriptorSetUpdateBuilder::copy (VkDescriptorSet sr void DescriptorSetUpdateBuilder::update (const DeviceInterface& vk, VkDevice device) const { - const VkWriteDescriptorSet* const writePtr = (m_writes.empty()) ? (DE_NULL) : (&m_writes[0]); + // Update VkWriteDescriptorSet structures with stored info + std::vector writes = m_writes; + + for (size_t writeNdx = 0; writeNdx < m_writes.size(); writeNdx++) + { + const WriteDescriptorInfo& writeInfo = m_writeDescriptorInfos[writeNdx]; + + if (!writeInfo.imageInfos.empty()) + writes[writeNdx].pImageInfo = &writeInfo.imageInfos[0]; + + if (!writeInfo.bufferInfos.empty()) + writes[writeNdx].pBufferInfo = &writeInfo.bufferInfos[0]; + + if (!writeInfo.texelBufferViews.empty()) + writes[writeNdx].pTexelBufferView = &writeInfo.texelBufferViews[0]; + } + + const VkWriteDescriptorSet* const writePtr = (m_writes.empty()) ? (DE_NULL) : (&writes[0]); const VkCopyDescriptorSet* const copyPtr = (m_copies.empty()) ? (DE_NULL) : (&m_copies[0]); - vk.updateDescriptorSets(device, (deUint32)m_writes.size(), writePtr, (deUint32)m_copies.size(), copyPtr); + vk.updateDescriptorSets(device, (deUint32)writes.size(), writePtr, (deUint32)m_copies.size(), copyPtr); } } // vk diff --git a/external/vulkancts/framework/vulkan/vkBuilderUtil.hpp b/external/vulkancts/framework/vulkan/vkBuilderUtil.hpp index 45ef2b3..1a30b3a 100644 --- a/external/vulkancts/framework/vulkan/vkBuilderUtil.hpp +++ b/external/vulkancts/framework/vulkan/vkBuilderUtil.hpp @@ -88,6 +88,15 @@ private: DescriptorSetLayoutBuilder& operator= (const DescriptorSetLayoutBuilder&); // delete std::vector m_bindings; + + struct ImmutableSamplerInfo + { + deUint32 bindingIndex; + deUint32 samplerBaseIndex; + }; + + std::vector m_immutableSamplerInfos; + std::vector m_immutableSamplers; }; class DescriptorPoolBuilder @@ -229,9 +238,14 @@ private: DescriptorSetUpdateBuilder (const DescriptorSetUpdateBuilder&); // delete DescriptorSetUpdateBuilder& operator= (const DescriptorSetUpdateBuilder&); // delete - std::vector m_imageInfos; - std::vector m_bufferInfos; - std::vector m_texelBufferViews; + struct WriteDescriptorInfo + { + std::vector imageInfos; + std::vector bufferInfos; + std::vector texelBufferViews; + }; + + std::vector m_writeDescriptorInfos; std::vector m_writes; std::vector m_copies; diff --git a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl index ef499fe..3bcc88b 100644 --- a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl @@ -34,7 +34,7 @@ virtual VkResult setEvent (VkDevice device, VkEvent event) const; virtual VkResult resetEvent (VkDevice device, VkEvent event) const; virtual VkResult createQueryPool (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const; virtual void destroyQueryPool (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const; -virtual VkResult getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const; +virtual VkResult getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const; virtual VkResult createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const; virtual void destroyBuffer (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const; virtual VkResult createBufferView (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const; @@ -79,8 +79,8 @@ virtual VkResult beginCommandBuffer (VkCommandBuffer commandBuffer, const virtual VkResult endCommandBuffer (VkCommandBuffer commandBuffer) const; virtual VkResult resetCommandBuffer (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const; virtual void cmdBindPipeline (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const; -virtual void cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const; -virtual void cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const; +virtual void cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const; +virtual void cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const; virtual void cmdSetLineWidth (VkCommandBuffer commandBuffer, float lineWidth) const; virtual void cmdSetDepthBias (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const; virtual void cmdSetBlendConstants (VkCommandBuffer commandBuffer, const float blendConstants[4]) const; @@ -90,7 +90,7 @@ virtual void cmdSetStencilWriteMask (VkCommandBuffer commandBuffer, VkSte virtual void cmdSetStencilReference (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const; virtual void cmdBindDescriptorSets (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const; virtual void cmdBindIndexBuffer (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const; -virtual void cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const; +virtual void cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const; virtual void cmdDraw (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const; virtual void cmdDrawIndexed (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const; virtual void cmdDrawIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const; @@ -110,15 +110,15 @@ virtual void cmdClearAttachments (VkCommandBuffer commandBuffer, deUint3 virtual void cmdResolveImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const; virtual void cmdSetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const; virtual void cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const; -virtual void cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const; -virtual void cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const; -virtual void cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry, VkQueryControlFlags flags) const; -virtual void cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry) const; -virtual void cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const; -virtual void cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 entry) const; -virtual void cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const; +virtual void cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const; +virtual void cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const; +virtual void cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const; +virtual void cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const; +virtual void cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const; +virtual void cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const; +virtual void cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const; virtual void cmdPushConstants (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const; virtual void cmdBeginRenderPass (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const; virtual void cmdNextSubpass (VkCommandBuffer commandBuffer, VkSubpassContents contents) const; virtual void cmdEndRenderPass (VkCommandBuffer commandBuffer) const; -virtual void cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBuffersCount, const VkCommandBuffer* pCommandBuffers) const; +virtual void cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const; diff --git a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl index 4577d04..ff65bf2 100644 --- a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl @@ -167,9 +167,9 @@ void DeviceDriver::destroyQueryPool (VkDevice device, VkQueryPool queryPool, con m_vk.destroyQueryPool(device, queryPool, pAllocator); } -VkResult DeviceDriver::getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const +VkResult DeviceDriver::getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const { - return m_vk.getQueryPoolResults(device, queryPool, startQuery, queryCount, dataSize, pData, stride, flags); + return m_vk.getQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags); } VkResult DeviceDriver::createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const @@ -392,14 +392,14 @@ void DeviceDriver::cmdBindPipeline (VkCommandBuffer commandBuffer, VkPipelineBin m_vk.cmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline); } -void DeviceDriver::cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const +void DeviceDriver::cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const { - m_vk.cmdSetViewport(commandBuffer, viewportCount, pViewports); + m_vk.cmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports); } -void DeviceDriver::cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const +void DeviceDriver::cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const { - m_vk.cmdSetScissor(commandBuffer, scissorCount, pScissors); + m_vk.cmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors); } void DeviceDriver::cmdSetLineWidth (VkCommandBuffer commandBuffer, float lineWidth) const @@ -447,9 +447,9 @@ void DeviceDriver::cmdBindIndexBuffer (VkCommandBuffer commandBuffer, VkBuffer b m_vk.cmdBindIndexBuffer(commandBuffer, buffer, offset, indexType); } -void DeviceDriver::cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const +void DeviceDriver::cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const { - m_vk.cmdBindVertexBuffers(commandBuffer, startBinding, bindingCount, pBuffers, pOffsets); + m_vk.cmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets); } void DeviceDriver::cmdDraw (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const @@ -547,39 +547,39 @@ void DeviceDriver::cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent event, m_vk.cmdResetEvent(commandBuffer, event, stageMask); } -void DeviceDriver::cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const +void DeviceDriver::cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const { - m_vk.cmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers); + m_vk.cmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } -void DeviceDriver::cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const +void DeviceDriver::cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const { - m_vk.cmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers); + m_vk.cmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } -void DeviceDriver::cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry, VkQueryControlFlags flags) const +void DeviceDriver::cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const { - m_vk.cmdBeginQuery(commandBuffer, queryPool, entry, flags); + m_vk.cmdBeginQuery(commandBuffer, queryPool, query, flags); } -void DeviceDriver::cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry) const +void DeviceDriver::cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const { - m_vk.cmdEndQuery(commandBuffer, queryPool, entry); + m_vk.cmdEndQuery(commandBuffer, queryPool, query); } -void DeviceDriver::cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const +void DeviceDriver::cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const { - m_vk.cmdResetQueryPool(commandBuffer, queryPool, startQuery, queryCount); + m_vk.cmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount); } -void DeviceDriver::cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 entry) const +void DeviceDriver::cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const { - m_vk.cmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, entry); + m_vk.cmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query); } -void DeviceDriver::cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const +void DeviceDriver::cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const { - m_vk.cmdCopyQueryPoolResults(commandBuffer, queryPool, startQuery, queryCount, dstBuffer, dstOffset, stride, flags); + m_vk.cmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags); } void DeviceDriver::cmdPushConstants (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const @@ -602,7 +602,7 @@ void DeviceDriver::cmdEndRenderPass (VkCommandBuffer commandBuffer) const m_vk.cmdEndRenderPass(commandBuffer); } -void DeviceDriver::cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBuffersCount, const VkCommandBuffer* pCommandBuffers) const +void DeviceDriver::cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const { - m_vk.cmdExecuteCommands(commandBuffer, commandBuffersCount, pCommandBuffers); + m_vk.cmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers); } diff --git a/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl b/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl index ea6e7d4..8630c6d 100644 --- a/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl +++ b/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl @@ -50,7 +50,7 @@ typedef VKAPI_ATTR VkResult (VKAPI_CALL* SetEventFunc) (VkDevice dev typedef VKAPI_ATTR VkResult (VKAPI_CALL* ResetEventFunc) (VkDevice device, VkEvent event); typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateQueryPoolFunc) (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool); typedef VKAPI_ATTR void (VKAPI_CALL* DestroyQueryPoolFunc) (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator); -typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetQueryPoolResultsFunc) (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags); +typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetQueryPoolResultsFunc) (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags); typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateBufferFunc) (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer); typedef VKAPI_ATTR void (VKAPI_CALL* DestroyBufferFunc) (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator); typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateBufferViewFunc) (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView); @@ -95,8 +95,8 @@ typedef VKAPI_ATTR VkResult (VKAPI_CALL* BeginCommandBufferFunc) (VkCom typedef VKAPI_ATTR VkResult (VKAPI_CALL* EndCommandBufferFunc) (VkCommandBuffer commandBuffer); typedef VKAPI_ATTR VkResult (VKAPI_CALL* ResetCommandBufferFunc) (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindPipelineFunc) (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetViewportFunc) (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetScissorFunc) (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetViewportFunc) (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetScissorFunc) (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors); typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetLineWidthFunc) (VkCommandBuffer commandBuffer, float lineWidth); typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetDepthBiasFunc) (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetBlendConstantsFunc) (VkCommandBuffer commandBuffer, const float blendConstants[4]); @@ -106,7 +106,7 @@ typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetStencilWriteMaskFunc) (VkCom typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetStencilReferenceFunc) (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference); typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindDescriptorSetsFunc) (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets); typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindIndexBufferFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindVertexBuffersFunc) (VkCommandBuffer commandBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindVertexBuffersFunc) (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawFunc) (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance); typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndexedFunc) (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance); typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride); @@ -126,15 +126,15 @@ typedef VKAPI_ATTR void (VKAPI_CALL* CmdClearAttachmentsFunc) (VkComma typedef VKAPI_ATTR void (VKAPI_CALL* CmdResolveImageFunc) (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions); typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetEventFunc) (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); typedef VKAPI_ATTR void (VKAPI_CALL* CmdResetEventFunc) (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdWaitEventsFunc) (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdPipelineBarrierFunc) (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginQueryFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry, VkQueryControlFlags flags); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndQueryFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdResetQueryPoolFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdWriteTimestampFunc) (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 entry); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdCopyQueryPoolResultsFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdWaitEventsFunc) (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdPipelineBarrierFunc) (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginQueryFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndQueryFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdResetQueryPoolFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdWriteTimestampFunc) (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdCopyQueryPoolResultsFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); typedef VKAPI_ATTR void (VKAPI_CALL* CmdPushConstantsFunc) (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues); typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginRenderPassFunc) (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents); typedef VKAPI_ATTR void (VKAPI_CALL* CmdNextSubpassFunc) (VkCommandBuffer commandBuffer, VkSubpassContents contents); typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndRenderPassFunc) (VkCommandBuffer commandBuffer); -typedef VKAPI_ATTR void (VKAPI_CALL* CmdExecuteCommandsFunc) (VkCommandBuffer commandBuffer, deUint32 commandBuffersCount, const VkCommandBuffer* pCommandBuffers); +typedef VKAPI_ATTR void (VKAPI_CALL* CmdExecuteCommandsFunc) (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers); diff --git a/external/vulkancts/framework/vulkan/vkImageUtil.cpp b/external/vulkancts/framework/vulkan/vkImageUtil.cpp index 5dc290a..3f42d06 100644 --- a/external/vulkancts/framework/vulkan/vkImageUtil.cpp +++ b/external/vulkancts/framework/vulkan/vkImageUtil.cpp @@ -466,7 +466,7 @@ tcu::CompressedTexFormat mapVkCompressedFormat (VkFormat format) case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_RGBA; case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_SRGB8_ALPHA8; case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_RGBA; - case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_SRGB8_ALPHA8; + case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_SRGB8_ALPHA8; case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_RGBA; case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_SRGB8_ALPHA8; case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_RGBA; @@ -474,7 +474,7 @@ tcu::CompressedTexFormat mapVkCompressedFormat (VkFormat format) case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_RGBA; case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_SRGB8_ALPHA8; case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_RGBA; - case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_SRGB8_ALPHA8; + case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_SRGB8_ALPHA8; case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_RGBA; case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_SRGB8_ALPHA8; case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_RGBA; @@ -662,7 +662,7 @@ VkFilter mapFilterMode (tcu::Sampler::FilterMode filterMode) { DE_STATIC_ASSERT(tcu::Sampler::FILTERMODE_LAST == 6); - switch(filterMode) + switch (filterMode) { case tcu::Sampler::NEAREST: return VK_FILTER_NEAREST; case tcu::Sampler::LINEAR: return VK_FILTER_LINEAR; @@ -681,10 +681,14 @@ VkSamplerMipmapMode mapMipmapMode (tcu::Sampler::FilterMode filterMode) { DE_STATIC_ASSERT(tcu::Sampler::FILTERMODE_LAST == 6); - switch(filterMode) + // \note VkSamplerCreateInfo doesn't have a flag for disabling mipmapping. Instead + // minLod = 0 and maxLod = 0.25 should be used to match OpenGL NEAREST and LINEAR + // filtering mode behavior. + + switch (filterMode) { - case tcu::Sampler::NEAREST: return VK_SAMPLER_MIPMAP_MODE_BASE; - case tcu::Sampler::LINEAR: return VK_SAMPLER_MIPMAP_MODE_BASE; + case tcu::Sampler::NEAREST: return VK_SAMPLER_MIPMAP_MODE_NEAREST; + case tcu::Sampler::LINEAR: return VK_SAMPLER_MIPMAP_MODE_NEAREST; case tcu::Sampler::NEAREST_MIPMAP_NEAREST: return VK_SAMPLER_MIPMAP_MODE_NEAREST; case tcu::Sampler::NEAREST_MIPMAP_LINEAR: return VK_SAMPLER_MIPMAP_MODE_LINEAR; case tcu::Sampler::LINEAR_MIPMAP_NEAREST: return VK_SAMPLER_MIPMAP_MODE_NEAREST; @@ -697,7 +701,7 @@ VkSamplerMipmapMode mapMipmapMode (tcu::Sampler::FilterMode filterMode) VkSamplerAddressMode mapWrapMode (tcu::Sampler::WrapMode wrapMode) { - switch(wrapMode) + switch (wrapMode) { case tcu::Sampler::CLAMP_TO_EDGE: return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; case tcu::Sampler::CLAMP_TO_BORDER: return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; @@ -712,7 +716,7 @@ VkSamplerAddressMode mapWrapMode (tcu::Sampler::WrapMode wrapMode) vk::VkCompareOp mapCompareMode (tcu::Sampler::CompareMode mode) { - switch(mode) + switch (mode) { case tcu::Sampler::COMPAREMODE_NONE: return vk::VK_COMPARE_OP_NEVER; case tcu::Sampler::COMPAREMODE_LESS: return vk::VK_COMPARE_OP_LESS; @@ -729,8 +733,74 @@ vk::VkCompareOp mapCompareMode (tcu::Sampler::CompareMode mode) } } +static VkBorderColor mapBorderColor (tcu::TextureChannelClass channelClass, const rr::GenericVec4& color) +{ + if (channelClass == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER) + { + const tcu::UVec4 uColor = color.get(); + + if (uColor == tcu::UVec4(0, 0, 0, 0)) return VK_BORDER_COLOR_INT_TRANSPARENT_BLACK; + else if (uColor == tcu::UVec4(0, 0, 0, 1)) return VK_BORDER_COLOR_INT_OPAQUE_BLACK; + else if (uColor == tcu::UVec4(1, 1, 1, 1)) return VK_BORDER_COLOR_INT_OPAQUE_WHITE; + } + else if (channelClass == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER) + { + const tcu::IVec4 sColor = color.get(); + + if (sColor == tcu::IVec4(0, 0, 0, 0)) return VK_BORDER_COLOR_INT_TRANSPARENT_BLACK; + else if (sColor == tcu::IVec4(0, 0, 0, 1)) return VK_BORDER_COLOR_INT_OPAQUE_BLACK; + else if (sColor == tcu::IVec4(1, 1, 1, 1)) return VK_BORDER_COLOR_INT_OPAQUE_WHITE; + } + else + { + const tcu::Vec4 fColor = color.get(); + + if (fColor == tcu::Vec4(0.0f, 0.0f, 0.0f, 0.0f)) return VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; + else if (fColor == tcu::Vec4(0.0f, 0.0f, 0.0f, 1.0f)) return VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; + else if (fColor == tcu::Vec4(1.0f, 1.0f, 1.0f, 1.0f)) return VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; + } + + DE_FATAL("Unsupported border color"); + return VK_BORDER_COLOR_LAST; +} + +VkSamplerCreateInfo mapSampler (const tcu::Sampler& sampler, const tcu::TextureFormat& format) +{ + const bool compareEnabled = (sampler.compare != tcu::Sampler::COMPAREMODE_NONE); + const VkCompareOp compareOp = (compareEnabled) ? (mapCompareMode(sampler.compare)) : (VK_COMPARE_OP_ALWAYS); + const VkBorderColor borderColor = mapBorderColor(getTextureChannelClass(format.type), sampler.borderColor); + const bool isMipmapEnabled = (sampler.minFilter != tcu::Sampler::NEAREST && sampler.minFilter != tcu::Sampler::LINEAR); + + const VkSamplerCreateInfo createInfo = + { + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, + DE_NULL, + (VkSamplerCreateFlags)0, + mapFilterMode(sampler.magFilter), // magFilter + mapFilterMode(sampler.minFilter), // minFilter + mapMipmapMode(sampler.minFilter), // mipMode + mapWrapMode(sampler.wrapS), // addressU + mapWrapMode(sampler.wrapT), // addressV + mapWrapMode(sampler.wrapR), // addressW + 0.0f, // mipLodBias + VK_FALSE, // anisotropyEnable + 1.0f, // maxAnisotropy + (VkBool32)(compareEnabled ? VK_TRUE : VK_FALSE), // compareEnable + compareOp, // compareOp + 0.0f, // minLod + (isMipmapEnabled ? 1000.0f : 0.25f), // maxLod + borderColor, // borderColor + (VkBool32)(sampler.normalizedCoords ? VK_FALSE : VK_TRUE), // unnormalizedCoords + }; + + return createInfo; +} + tcu::Sampler mapVkSampler (const VkSamplerCreateInfo& samplerCreateInfo) { + // \note minLod & maxLod are not supported by tcu::Sampler. LOD must be clamped + // before passing it to tcu::Texture*::sample*() + tcu::Sampler sampler(mapVkSamplerAddressMode(samplerCreateInfo.addressModeU), mapVkSamplerAddressMode(samplerCreateInfo.addressModeV), mapVkSamplerAddressMode(samplerCreateInfo.addressModeW), @@ -744,30 +814,33 @@ tcu::Sampler mapVkSampler (const VkSamplerCreateInfo& samplerCreateInfo) tcu::Vec4(0.0f, 0.0f, 0.0f, 0.0f), true); + if (samplerCreateInfo.anisotropyEnable) + TCU_THROW(InternalError, "Anisotropic filtering is not supported by tcu::Sampler"); + switch (samplerCreateInfo.borderColor) { - case VK_BORDER_COLOR_INT_OPAQUE_BLACK: - sampler.borderColor = tcu::UVec4(0,0,0,1); - break; - case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: - sampler.borderColor = tcu::Vec4(0.0f, 0.0f, 0.0f, 1.0f); - break; - case VK_BORDER_COLOR_INT_OPAQUE_WHITE: - sampler.borderColor = tcu::UVec4(1, 1, 1, 1); - break; - case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: - sampler.borderColor = tcu::Vec4(1.0f, 1.0f, 1.0f, 1.0f); - break; - case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: - sampler.borderColor = tcu::UVec4(0,0,0,0); - break; - case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: - sampler.borderColor = tcu::Vec4(0.0f, 0.0f, 0.0f, 0.0f); - break; - - default: - DE_ASSERT(false); - break; + case VK_BORDER_COLOR_INT_OPAQUE_BLACK: + sampler.borderColor = tcu::UVec4(0,0,0,1); + break; + case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: + sampler.borderColor = tcu::Vec4(0.0f, 0.0f, 0.0f, 1.0f); + break; + case VK_BORDER_COLOR_INT_OPAQUE_WHITE: + sampler.borderColor = tcu::UVec4(1, 1, 1, 1); + break; + case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: + sampler.borderColor = tcu::Vec4(1.0f, 1.0f, 1.0f, 1.0f); + break; + case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: + sampler.borderColor = tcu::UVec4(0,0,0,0); + break; + case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: + sampler.borderColor = tcu::Vec4(0.0f, 0.0f, 0.0f, 0.0f); + break; + + default: + DE_ASSERT(false); + break; } return sampler; @@ -817,7 +890,6 @@ tcu::Sampler::FilterMode mapVkMinTexFilter (VkFilter filter, VkSamplerMipmapMode case VK_FILTER_LINEAR: switch (mipMode) { - case VK_SAMPLER_MIPMAP_MODE_BASE: return tcu::Sampler::LINEAR; case VK_SAMPLER_MIPMAP_MODE_LINEAR: return tcu::Sampler::LINEAR_MIPMAP_LINEAR; case VK_SAMPLER_MIPMAP_MODE_NEAREST: return tcu::Sampler::LINEAR_MIPMAP_NEAREST; default: @@ -828,7 +900,6 @@ tcu::Sampler::FilterMode mapVkMinTexFilter (VkFilter filter, VkSamplerMipmapMode case VK_FILTER_NEAREST: switch (mipMode) { - case VK_SAMPLER_MIPMAP_MODE_BASE: return tcu::Sampler::NEAREST; case VK_SAMPLER_MIPMAP_MODE_LINEAR: return tcu::Sampler::NEAREST_MIPMAP_LINEAR; case VK_SAMPLER_MIPMAP_MODE_NEAREST: return tcu::Sampler::NEAREST_MIPMAP_NEAREST; default: diff --git a/external/vulkancts/framework/vulkan/vkImageUtil.hpp b/external/vulkancts/framework/vulkan/vkImageUtil.hpp index c130b57..6ab0b53 100644 --- a/external/vulkancts/framework/vulkan/vkImageUtil.hpp +++ b/external/vulkancts/framework/vulkan/vkImageUtil.hpp @@ -70,6 +70,7 @@ VkSamplerMipmapMode mapMipmapMode (tcu::Sampler::FilterMode filterMode); VkSamplerAddressMode mapWrapMode (tcu::Sampler::WrapMode wrapMode); VkCompareOp mapCompareMode (tcu::Sampler::CompareMode mode); VkFormat mapTextureFormat (const tcu::TextureFormat& format); +VkSamplerCreateInfo mapSampler (const tcu::Sampler& sampler, const tcu::TextureFormat& format); void imageUtilSelfTest (void); diff --git a/external/vulkancts/framework/vulkan/vkNullDriver.cpp b/external/vulkancts/framework/vulkan/vkNullDriver.cpp index b685974..cf0fbcd 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriver.cpp +++ b/external/vulkancts/framework/vulkan/vkNullDriver.cpp @@ -547,7 +547,7 @@ VKAPI_ATTR VkResult VKAPI_CALL allocateDescriptorSets (VkDevice, const VkDescrip { DescriptorPool* const poolImpl = reinterpret_cast((deUintptr)pAllocateInfo->descriptorPool.getInternal()); - for (deUint32 ndx = 0; ndx < pAllocateInfo->setLayoutCount; ++ndx) + for (deUint32 ndx = 0; ndx < pAllocateInfo->descriptorSetCount; ++ndx) { try { @@ -593,7 +593,7 @@ VKAPI_ATTR VkResult VKAPI_CALL allocateCommandBuffers (VkDevice device, const Vk { if (pAllocateInfo && pCommandBuffers) { - for (deUint32 ndx = 0; ndx < pAllocateInfo->bufferCount; ++ndx) + for (deUint32 ndx = 0; ndx < pAllocateInfo->commandBufferCount; ++ndx) { pCommandBuffers[ndx] = reinterpret_cast(new CommandBuffer(device, pAllocateInfo->commandPool, pAllocateInfo->level)); } diff --git a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl index 176b8a2..722feea 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl @@ -446,11 +446,11 @@ VKAPI_ATTR VkResult VKAPI_CALL resetEvent (VkDevice device, VkEvent event) return VK_SUCCESS; } -VKAPI_ATTR VkResult VKAPI_CALL getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) +VKAPI_ATTR VkResult VKAPI_CALL getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) { DE_UNREF(device); DE_UNREF(queryPool); - DE_UNREF(startQuery); + DE_UNREF(firstQuery); DE_UNREF(queryCount); DE_UNREF(dataSize); DE_UNREF(pData); @@ -536,16 +536,18 @@ VKAPI_ATTR void VKAPI_CALL cmdBindPipeline (VkCommandBuffer commandBuffer, VkPip DE_UNREF(pipeline); } -VKAPI_ATTR void VKAPI_CALL cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) +VKAPI_ATTR void VKAPI_CALL cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) { DE_UNREF(commandBuffer); + DE_UNREF(firstViewport); DE_UNREF(viewportCount); DE_UNREF(pViewports); } -VKAPI_ATTR void VKAPI_CALL cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) +VKAPI_ATTR void VKAPI_CALL cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) { DE_UNREF(commandBuffer); + DE_UNREF(firstScissor); DE_UNREF(scissorCount); DE_UNREF(pScissors); } @@ -618,10 +620,10 @@ VKAPI_ATTR void VKAPI_CALL cmdBindIndexBuffer (VkCommandBuffer commandBuffer, Vk DE_UNREF(indexType); } -VKAPI_ATTR void VKAPI_CALL cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) +VKAPI_ATTR void VKAPI_CALL cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { DE_UNREF(commandBuffer); - DE_UNREF(startBinding); + DE_UNREF(firstBinding); DE_UNREF(bindingCount); DE_UNREF(pBuffers); DE_UNREF(pOffsets); @@ -803,7 +805,7 @@ VKAPI_ATTR void VKAPI_CALL cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent DE_UNREF(stageMask); } -VKAPI_ATTR void VKAPI_CALL cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) +VKAPI_ATTR void VKAPI_CALL cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { DE_UNREF(commandBuffer); DE_UNREF(eventCount); @@ -811,55 +813,63 @@ VKAPI_ATTR void VKAPI_CALL cmdWaitEvents (VkCommandBuffer commandBuffer, deUint3 DE_UNREF(srcStageMask); DE_UNREF(dstStageMask); DE_UNREF(memoryBarrierCount); - DE_UNREF(ppMemoryBarriers); + DE_UNREF(pMemoryBarriers); + DE_UNREF(bufferMemoryBarrierCount); + DE_UNREF(pBufferMemoryBarriers); + DE_UNREF(imageMemoryBarrierCount); + DE_UNREF(pImageMemoryBarriers); } -VKAPI_ATTR void VKAPI_CALL cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) +VKAPI_ATTR void VKAPI_CALL cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { DE_UNREF(commandBuffer); DE_UNREF(srcStageMask); DE_UNREF(dstStageMask); DE_UNREF(dependencyFlags); DE_UNREF(memoryBarrierCount); - DE_UNREF(ppMemoryBarriers); + DE_UNREF(pMemoryBarriers); + DE_UNREF(bufferMemoryBarrierCount); + DE_UNREF(pBufferMemoryBarriers); + DE_UNREF(imageMemoryBarrierCount); + DE_UNREF(pImageMemoryBarriers); } -VKAPI_ATTR void VKAPI_CALL cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry, VkQueryControlFlags flags) +VKAPI_ATTR void VKAPI_CALL cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) { DE_UNREF(commandBuffer); DE_UNREF(queryPool); - DE_UNREF(entry); + DE_UNREF(query); DE_UNREF(flags); } -VKAPI_ATTR void VKAPI_CALL cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry) +VKAPI_ATTR void VKAPI_CALL cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) { DE_UNREF(commandBuffer); DE_UNREF(queryPool); - DE_UNREF(entry); + DE_UNREF(query); } -VKAPI_ATTR void VKAPI_CALL cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) +VKAPI_ATTR void VKAPI_CALL cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) { DE_UNREF(commandBuffer); DE_UNREF(queryPool); - DE_UNREF(startQuery); + DE_UNREF(firstQuery); DE_UNREF(queryCount); } -VKAPI_ATTR void VKAPI_CALL cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 entry) +VKAPI_ATTR void VKAPI_CALL cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) { DE_UNREF(commandBuffer); DE_UNREF(pipelineStage); DE_UNREF(queryPool); - DE_UNREF(entry); + DE_UNREF(query); } -VKAPI_ATTR void VKAPI_CALL cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) +VKAPI_ATTR void VKAPI_CALL cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) { DE_UNREF(commandBuffer); DE_UNREF(queryPool); - DE_UNREF(startQuery); + DE_UNREF(firstQuery); DE_UNREF(queryCount); DE_UNREF(dstBuffer); DE_UNREF(dstOffset); @@ -895,10 +905,10 @@ VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass (VkCommandBuffer commandBuffer) DE_UNREF(commandBuffer); } -VKAPI_ATTR void VKAPI_CALL cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBuffersCount, const VkCommandBuffer* pCommandBuffers) +VKAPI_ATTR void VKAPI_CALL cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) { DE_UNREF(commandBuffer); - DE_UNREF(commandBuffersCount); + DE_UNREF(commandBufferCount); DE_UNREF(pCommandBuffers); } diff --git a/external/vulkancts/framework/vulkan/vkRefUtil.cpp b/external/vulkancts/framework/vulkan/vkRefUtil.cpp index 1ef4f96..d6b6abf 100644 --- a/external/vulkancts/framework/vulkan/vkRefUtil.cpp +++ b/external/vulkancts/framework/vulkan/vkRefUtil.cpp @@ -64,7 +64,7 @@ Move createComputePipeline (const DeviceInterface& vk, Move allocateCommandBuffer (const DeviceInterface& vk, VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo) { VkCommandBuffer object = 0; - DE_ASSERT(pAllocateInfo->bufferCount == 1u); + DE_ASSERT(pAllocateInfo->commandBufferCount == 1u); VK_CHECK(vk.allocateCommandBuffers(device, pAllocateInfo, &object)); return Move(check(object), Deleter(vk, device, pAllocateInfo->commandPool)); } @@ -72,7 +72,7 @@ Move allocateCommandBuffer (const DeviceInterface& vk, VkDevice Move allocateDescriptorSet (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo) { VkDescriptorSet object = 0; - DE_ASSERT(pAllocateInfo->setLayoutCount == 1u); + DE_ASSERT(pAllocateInfo->descriptorSetCount == 1u); VK_CHECK(vk.allocateDescriptorSets(device, pAllocateInfo, &object)); return Move(check(object), Deleter(vk, device, pAllocateInfo->descriptorPool)); } diff --git a/external/vulkancts/framework/vulkan/vkStrUtil.inl b/external/vulkancts/framework/vulkan/vkStrUtil.inl index 4bd1508..92bf240 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtil.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtil.inl @@ -1,116 +1,119 @@ /* WARNING: This is auto-generated file. Do not modify, since changes will * be lost! Modify the generating script instead. */ -const char* getResultName (VkResult value); -const char* getStructureTypeName (VkStructureType value); -const char* getSystemAllocationScopeName (VkSystemAllocationScope value); -const char* getInternalAllocationTypeName (VkInternalAllocationType value); -const char* getFormatName (VkFormat value); -const char* getImageTypeName (VkImageType value); -const char* getImageTilingName (VkImageTiling value); -const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value); -const char* getQueryTypeName (VkQueryType value); -const char* getSharingModeName (VkSharingMode value); -const char* getImageLayoutName (VkImageLayout value); -const char* getImageViewTypeName (VkImageViewType value); -const char* getComponentSwizzleName (VkComponentSwizzle value); -const char* getVertexInputRateName (VkVertexInputRate value); -const char* getPrimitiveTopologyName (VkPrimitiveTopology value); -const char* getPolygonModeName (VkPolygonMode value); -const char* getFrontFaceName (VkFrontFace value); -const char* getCompareOpName (VkCompareOp value); -const char* getStencilOpName (VkStencilOp value); -const char* getLogicOpName (VkLogicOp value); -const char* getBlendFactorName (VkBlendFactor value); -const char* getBlendOpName (VkBlendOp value); -const char* getDynamicStateName (VkDynamicState value); -const char* getFilterName (VkFilter value); -const char* getSamplerMipmapModeName (VkSamplerMipmapMode value); -const char* getSamplerAddressModeName (VkSamplerAddressMode value); -const char* getBorderColorName (VkBorderColor value); -const char* getDescriptorTypeName (VkDescriptorType value); -const char* getAttachmentLoadOpName (VkAttachmentLoadOp value); -const char* getAttachmentStoreOpName (VkAttachmentStoreOp value); -const char* getPipelineBindPointName (VkPipelineBindPoint value); -const char* getCommandBufferLevelName (VkCommandBufferLevel value); -const char* getIndexTypeName (VkIndexType value); -const char* getSubpassContentsName (VkSubpassContents value); -const char* getColorSpaceKHRName (VkColorSpaceKHR value); -const char* getPresentModeKHRName (VkPresentModeKHR value); +const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value); +const char* getResultName (VkResult value); +const char* getStructureTypeName (VkStructureType value); +const char* getSystemAllocationScopeName (VkSystemAllocationScope value); +const char* getInternalAllocationTypeName (VkInternalAllocationType value); +const char* getFormatName (VkFormat value); +const char* getImageTypeName (VkImageType value); +const char* getImageTilingName (VkImageTiling value); +const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value); +const char* getQueryTypeName (VkQueryType value); +const char* getSharingModeName (VkSharingMode value); +const char* getImageLayoutName (VkImageLayout value); +const char* getImageViewTypeName (VkImageViewType value); +const char* getComponentSwizzleName (VkComponentSwizzle value); +const char* getVertexInputRateName (VkVertexInputRate value); +const char* getPrimitiveTopologyName (VkPrimitiveTopology value); +const char* getPolygonModeName (VkPolygonMode value); +const char* getFrontFaceName (VkFrontFace value); +const char* getCompareOpName (VkCompareOp value); +const char* getStencilOpName (VkStencilOp value); +const char* getLogicOpName (VkLogicOp value); +const char* getBlendFactorName (VkBlendFactor value); +const char* getBlendOpName (VkBlendOp value); +const char* getDynamicStateName (VkDynamicState value); +const char* getFilterName (VkFilter value); +const char* getSamplerMipmapModeName (VkSamplerMipmapMode value); +const char* getSamplerAddressModeName (VkSamplerAddressMode value); +const char* getBorderColorName (VkBorderColor value); +const char* getDescriptorTypeName (VkDescriptorType value); +const char* getAttachmentLoadOpName (VkAttachmentLoadOp value); +const char* getAttachmentStoreOpName (VkAttachmentStoreOp value); +const char* getPipelineBindPointName (VkPipelineBindPoint value); +const char* getCommandBufferLevelName (VkCommandBufferLevel value); +const char* getIndexTypeName (VkIndexType value); +const char* getSubpassContentsName (VkSubpassContents value); +const char* getColorSpaceKHRName (VkColorSpaceKHR value); +const char* getPresentModeKHRName (VkPresentModeKHR value); -inline tcu::Format::Enum getResultStr (VkResult value) { return tcu::Format::Enum(getResultName, value); } -inline tcu::Format::Enum getStructureTypeStr (VkStructureType value) { return tcu::Format::Enum(getStructureTypeName, value); } -inline tcu::Format::Enum getSystemAllocationScopeStr (VkSystemAllocationScope value) { return tcu::Format::Enum(getSystemAllocationScopeName, value); } -inline tcu::Format::Enum getInternalAllocationTypeStr (VkInternalAllocationType value) { return tcu::Format::Enum(getInternalAllocationTypeName, value); } -inline tcu::Format::Enum getFormatStr (VkFormat value) { return tcu::Format::Enum(getFormatName, value); } -inline tcu::Format::Enum getImageTypeStr (VkImageType value) { return tcu::Format::Enum(getImageTypeName, value); } -inline tcu::Format::Enum getImageTilingStr (VkImageTiling value) { return tcu::Format::Enum(getImageTilingName, value); } -inline tcu::Format::Enum getPhysicalDeviceTypeStr (VkPhysicalDeviceType value) { return tcu::Format::Enum(getPhysicalDeviceTypeName, value); } -inline tcu::Format::Enum getQueryTypeStr (VkQueryType value) { return tcu::Format::Enum(getQueryTypeName, value); } -inline tcu::Format::Enum getSharingModeStr (VkSharingMode value) { return tcu::Format::Enum(getSharingModeName, value); } -inline tcu::Format::Enum getImageLayoutStr (VkImageLayout value) { return tcu::Format::Enum(getImageLayoutName, value); } -inline tcu::Format::Enum getImageViewTypeStr (VkImageViewType value) { return tcu::Format::Enum(getImageViewTypeName, value); } -inline tcu::Format::Enum getComponentSwizzleStr (VkComponentSwizzle value) { return tcu::Format::Enum(getComponentSwizzleName, value); } -inline tcu::Format::Enum getVertexInputRateStr (VkVertexInputRate value) { return tcu::Format::Enum(getVertexInputRateName, value); } -inline tcu::Format::Enum getPrimitiveTopologyStr (VkPrimitiveTopology value) { return tcu::Format::Enum(getPrimitiveTopologyName, value); } -inline tcu::Format::Enum getPolygonModeStr (VkPolygonMode value) { return tcu::Format::Enum(getPolygonModeName, value); } -inline tcu::Format::Enum getFrontFaceStr (VkFrontFace value) { return tcu::Format::Enum(getFrontFaceName, value); } -inline tcu::Format::Enum getCompareOpStr (VkCompareOp value) { return tcu::Format::Enum(getCompareOpName, value); } -inline tcu::Format::Enum getStencilOpStr (VkStencilOp value) { return tcu::Format::Enum(getStencilOpName, value); } -inline tcu::Format::Enum getLogicOpStr (VkLogicOp value) { return tcu::Format::Enum(getLogicOpName, value); } -inline tcu::Format::Enum getBlendFactorStr (VkBlendFactor value) { return tcu::Format::Enum(getBlendFactorName, value); } -inline tcu::Format::Enum getBlendOpStr (VkBlendOp value) { return tcu::Format::Enum(getBlendOpName, value); } -inline tcu::Format::Enum getDynamicStateStr (VkDynamicState value) { return tcu::Format::Enum(getDynamicStateName, value); } -inline tcu::Format::Enum getFilterStr (VkFilter value) { return tcu::Format::Enum(getFilterName, value); } -inline tcu::Format::Enum getSamplerMipmapModeStr (VkSamplerMipmapMode value) { return tcu::Format::Enum(getSamplerMipmapModeName, value); } -inline tcu::Format::Enum getSamplerAddressModeStr (VkSamplerAddressMode value) { return tcu::Format::Enum(getSamplerAddressModeName, value); } -inline tcu::Format::Enum getBorderColorStr (VkBorderColor value) { return tcu::Format::Enum(getBorderColorName, value); } -inline tcu::Format::Enum getDescriptorTypeStr (VkDescriptorType value) { return tcu::Format::Enum(getDescriptorTypeName, value); } -inline tcu::Format::Enum getAttachmentLoadOpStr (VkAttachmentLoadOp value) { return tcu::Format::Enum(getAttachmentLoadOpName, value); } -inline tcu::Format::Enum getAttachmentStoreOpStr (VkAttachmentStoreOp value) { return tcu::Format::Enum(getAttachmentStoreOpName, value); } -inline tcu::Format::Enum getPipelineBindPointStr (VkPipelineBindPoint value) { return tcu::Format::Enum(getPipelineBindPointName, value); } -inline tcu::Format::Enum getCommandBufferLevelStr (VkCommandBufferLevel value) { return tcu::Format::Enum(getCommandBufferLevelName, value); } -inline tcu::Format::Enum getIndexTypeStr (VkIndexType value) { return tcu::Format::Enum(getIndexTypeName, value); } -inline tcu::Format::Enum getSubpassContentsStr (VkSubpassContents value) { return tcu::Format::Enum(getSubpassContentsName, value); } -inline tcu::Format::Enum getColorSpaceKHRStr (VkColorSpaceKHR value) { return tcu::Format::Enum(getColorSpaceKHRName, value); } -inline tcu::Format::Enum getPresentModeKHRStr (VkPresentModeKHR value) { return tcu::Format::Enum(getPresentModeKHRName, value); } +inline tcu::Format::Enum getPipelineCacheHeaderVersionStr (VkPipelineCacheHeaderVersion value) { return tcu::Format::Enum(getPipelineCacheHeaderVersionName, value); } +inline tcu::Format::Enum getResultStr (VkResult value) { return tcu::Format::Enum(getResultName, value); } +inline tcu::Format::Enum getStructureTypeStr (VkStructureType value) { return tcu::Format::Enum(getStructureTypeName, value); } +inline tcu::Format::Enum getSystemAllocationScopeStr (VkSystemAllocationScope value) { return tcu::Format::Enum(getSystemAllocationScopeName, value); } +inline tcu::Format::Enum getInternalAllocationTypeStr (VkInternalAllocationType value) { return tcu::Format::Enum(getInternalAllocationTypeName, value); } +inline tcu::Format::Enum getFormatStr (VkFormat value) { return tcu::Format::Enum(getFormatName, value); } +inline tcu::Format::Enum getImageTypeStr (VkImageType value) { return tcu::Format::Enum(getImageTypeName, value); } +inline tcu::Format::Enum getImageTilingStr (VkImageTiling value) { return tcu::Format::Enum(getImageTilingName, value); } +inline tcu::Format::Enum getPhysicalDeviceTypeStr (VkPhysicalDeviceType value) { return tcu::Format::Enum(getPhysicalDeviceTypeName, value); } +inline tcu::Format::Enum getQueryTypeStr (VkQueryType value) { return tcu::Format::Enum(getQueryTypeName, value); } +inline tcu::Format::Enum getSharingModeStr (VkSharingMode value) { return tcu::Format::Enum(getSharingModeName, value); } +inline tcu::Format::Enum getImageLayoutStr (VkImageLayout value) { return tcu::Format::Enum(getImageLayoutName, value); } +inline tcu::Format::Enum getImageViewTypeStr (VkImageViewType value) { return tcu::Format::Enum(getImageViewTypeName, value); } +inline tcu::Format::Enum getComponentSwizzleStr (VkComponentSwizzle value) { return tcu::Format::Enum(getComponentSwizzleName, value); } +inline tcu::Format::Enum getVertexInputRateStr (VkVertexInputRate value) { return tcu::Format::Enum(getVertexInputRateName, value); } +inline tcu::Format::Enum getPrimitiveTopologyStr (VkPrimitiveTopology value) { return tcu::Format::Enum(getPrimitiveTopologyName, value); } +inline tcu::Format::Enum getPolygonModeStr (VkPolygonMode value) { return tcu::Format::Enum(getPolygonModeName, value); } +inline tcu::Format::Enum getFrontFaceStr (VkFrontFace value) { return tcu::Format::Enum(getFrontFaceName, value); } +inline tcu::Format::Enum getCompareOpStr (VkCompareOp value) { return tcu::Format::Enum(getCompareOpName, value); } +inline tcu::Format::Enum getStencilOpStr (VkStencilOp value) { return tcu::Format::Enum(getStencilOpName, value); } +inline tcu::Format::Enum getLogicOpStr (VkLogicOp value) { return tcu::Format::Enum(getLogicOpName, value); } +inline tcu::Format::Enum getBlendFactorStr (VkBlendFactor value) { return tcu::Format::Enum(getBlendFactorName, value); } +inline tcu::Format::Enum getBlendOpStr (VkBlendOp value) { return tcu::Format::Enum(getBlendOpName, value); } +inline tcu::Format::Enum getDynamicStateStr (VkDynamicState value) { return tcu::Format::Enum(getDynamicStateName, value); } +inline tcu::Format::Enum getFilterStr (VkFilter value) { return tcu::Format::Enum(getFilterName, value); } +inline tcu::Format::Enum getSamplerMipmapModeStr (VkSamplerMipmapMode value) { return tcu::Format::Enum(getSamplerMipmapModeName, value); } +inline tcu::Format::Enum getSamplerAddressModeStr (VkSamplerAddressMode value) { return tcu::Format::Enum(getSamplerAddressModeName, value); } +inline tcu::Format::Enum getBorderColorStr (VkBorderColor value) { return tcu::Format::Enum(getBorderColorName, value); } +inline tcu::Format::Enum getDescriptorTypeStr (VkDescriptorType value) { return tcu::Format::Enum(getDescriptorTypeName, value); } +inline tcu::Format::Enum getAttachmentLoadOpStr (VkAttachmentLoadOp value) { return tcu::Format::Enum(getAttachmentLoadOpName, value); } +inline tcu::Format::Enum getAttachmentStoreOpStr (VkAttachmentStoreOp value) { return tcu::Format::Enum(getAttachmentStoreOpName, value); } +inline tcu::Format::Enum getPipelineBindPointStr (VkPipelineBindPoint value) { return tcu::Format::Enum(getPipelineBindPointName, value); } +inline tcu::Format::Enum getCommandBufferLevelStr (VkCommandBufferLevel value) { return tcu::Format::Enum(getCommandBufferLevelName, value); } +inline tcu::Format::Enum getIndexTypeStr (VkIndexType value) { return tcu::Format::Enum(getIndexTypeName, value); } +inline tcu::Format::Enum getSubpassContentsStr (VkSubpassContents value) { return tcu::Format::Enum(getSubpassContentsName, value); } +inline tcu::Format::Enum getColorSpaceKHRStr (VkColorSpaceKHR value) { return tcu::Format::Enum(getColorSpaceKHRName, value); } +inline tcu::Format::Enum getPresentModeKHRStr (VkPresentModeKHR value) { return tcu::Format::Enum(getPresentModeKHRName, value); } -inline std::ostream& operator<< (std::ostream& s, VkResult value) { return s << getResultStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkStructureType value) { return s << getStructureTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkSystemAllocationScope value) { return s << getSystemAllocationScopeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkInternalAllocationType value) { return s << getInternalAllocationTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkFormat value) { return s << getFormatStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkImageType value) { return s << getImageTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkImageTiling value) { return s << getImageTilingStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkPhysicalDeviceType value) { return s << getPhysicalDeviceTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkQueryType value) { return s << getQueryTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkSharingMode value) { return s << getSharingModeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkImageLayout value) { return s << getImageLayoutStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkImageViewType value) { return s << getImageViewTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkComponentSwizzle value) { return s << getComponentSwizzleStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkVertexInputRate value) { return s << getVertexInputRateStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkPrimitiveTopology value) { return s << getPrimitiveTopologyStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkPolygonMode value) { return s << getPolygonModeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkFrontFace value) { return s << getFrontFaceStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkCompareOp value) { return s << getCompareOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkStencilOp value) { return s << getStencilOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkLogicOp value) { return s << getLogicOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkBlendFactor value) { return s << getBlendFactorStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkBlendOp value) { return s << getBlendOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkDynamicState value) { return s << getDynamicStateStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkFilter value) { return s << getFilterStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkSamplerMipmapMode value) { return s << getSamplerMipmapModeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkSamplerAddressMode value) { return s << getSamplerAddressModeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkBorderColor value) { return s << getBorderColorStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkDescriptorType value) { return s << getDescriptorTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkAttachmentLoadOp value) { return s << getAttachmentLoadOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkAttachmentStoreOp value) { return s << getAttachmentStoreOpStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkPipelineBindPoint value) { return s << getPipelineBindPointStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkCommandBufferLevel value) { return s << getCommandBufferLevelStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkIndexType value) { return s << getIndexTypeStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkSubpassContents value) { return s << getSubpassContentsStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkColorSpaceKHR value) { return s << getColorSpaceKHRStr(value); } -inline std::ostream& operator<< (std::ostream& s, VkPresentModeKHR value) { return s << getPresentModeKHRStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPipelineCacheHeaderVersion value) { return s << getPipelineCacheHeaderVersionStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkResult value) { return s << getResultStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkStructureType value) { return s << getStructureTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkSystemAllocationScope value) { return s << getSystemAllocationScopeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkInternalAllocationType value) { return s << getInternalAllocationTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkFormat value) { return s << getFormatStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkImageType value) { return s << getImageTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkImageTiling value) { return s << getImageTilingStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPhysicalDeviceType value) { return s << getPhysicalDeviceTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkQueryType value) { return s << getQueryTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkSharingMode value) { return s << getSharingModeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkImageLayout value) { return s << getImageLayoutStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkImageViewType value) { return s << getImageViewTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkComponentSwizzle value) { return s << getComponentSwizzleStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkVertexInputRate value) { return s << getVertexInputRateStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPrimitiveTopology value) { return s << getPrimitiveTopologyStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPolygonMode value) { return s << getPolygonModeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkFrontFace value) { return s << getFrontFaceStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkCompareOp value) { return s << getCompareOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkStencilOp value) { return s << getStencilOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkLogicOp value) { return s << getLogicOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkBlendFactor value) { return s << getBlendFactorStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkBlendOp value) { return s << getBlendOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkDynamicState value) { return s << getDynamicStateStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkFilter value) { return s << getFilterStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkSamplerMipmapMode value) { return s << getSamplerMipmapModeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkSamplerAddressMode value) { return s << getSamplerAddressModeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkBorderColor value) { return s << getBorderColorStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkDescriptorType value) { return s << getDescriptorTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkAttachmentLoadOp value) { return s << getAttachmentLoadOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkAttachmentStoreOp value) { return s << getAttachmentStoreOpStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPipelineBindPoint value) { return s << getPipelineBindPointStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkCommandBufferLevel value) { return s << getCommandBufferLevelStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkIndexType value) { return s << getIndexTypeStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkSubpassContents value) { return s << getSubpassContentsStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkColorSpaceKHR value) { return s << getColorSpaceKHRStr(value); } +inline std::ostream& operator<< (std::ostream& s, VkPresentModeKHR value) { return s << getPresentModeKHRStr(value); } tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value); tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value); @@ -119,6 +122,7 @@ tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value) tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value); tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value); tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value); +tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value); tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value); tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value); tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value); @@ -133,7 +137,6 @@ tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value); tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value); tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value); tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value); -tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value); tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value); tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value); tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value); @@ -159,7 +162,7 @@ tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCrea tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value); tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value); tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value); -tcu::Format::Bitfield<32> getPipelineTesselationStateCreateFlagsStr (VkPipelineTesselationStateCreateFlags value); +tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value); tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value); tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value); tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value); @@ -176,6 +179,12 @@ tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescription tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value); tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value); tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value); +tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value); std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value); std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value); @@ -264,6 +273,7 @@ std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value); std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value); std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value); std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value); +std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value); std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value); std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value); std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value); @@ -276,22 +286,10 @@ std::ostream& operator<< (std::ostream& s, const VkClearValue& value); std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value); std::ostream& operator<< (std::ostream& s, const VkClearRect& value); std::ostream& operator<< (std::ostream& s, const VkImageResolve& value); -std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value); +std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value); std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value); +std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value); +std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value); std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value); std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value); std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value); -std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value); -std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value); -std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value); -std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value); -std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value); -std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value); -std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value); diff --git a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl index 021b7ab..c5aa62c 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl @@ -31,6 +31,15 @@ template<> const char* getTypeName (void) { return "VkSwapchai template<> const char* getTypeName (void) { return "VkDisplayKHR"; } template<> const char* getTypeName (void) { return "VkDisplayModeKHR"; } +const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value) +{ + switch (value) + { + case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"; + default: return DE_NULL; + } +} + const char* getResultName (VkResult value) { switch (value) @@ -57,6 +66,7 @@ const char* getResultName (VkResult value) case VK_ERROR_OUT_OF_DATE_KHR: return "VK_ERROR_OUT_OF_DATE_KHR"; case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"; case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"; + case VK_ERROR_VALIDATION_FAILED_EXT: return "VK_ERROR_VALIDATION_FAILED_EXT"; default: return DE_NULL; } } @@ -106,6 +116,7 @@ const char* getStructureTypeName (VkStructureType value) case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"; case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO: return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"; case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO: return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"; + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO: return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"; case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO: return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"; case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO: return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"; case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"; @@ -118,6 +129,13 @@ const char* getStructureTypeName (VkStructureType value) case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"; case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"; case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"; + case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"; + case VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"; default: return DE_NULL; } } @@ -617,7 +635,6 @@ const char* getSamplerMipmapModeName (VkSamplerMipmapMode value) { switch (value) { - case VK_SAMPLER_MIPMAP_MODE_BASE: return "VK_SAMPLER_MIPMAP_MODE_BASE"; case VK_SAMPLER_MIPMAP_MODE_NEAREST: return "VK_SAMPLER_MIPMAP_MODE_NEAREST"; case VK_SAMPLER_MIPMAP_MODE_LINEAR: return "VK_SAMPLER_MIPMAP_MODE_LINEAR"; default: return DE_NULL; @@ -850,6 +867,31 @@ tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value) return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc)); } +tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value) +{ + static const tcu::Format::BitDesc s_desc[] = + { + tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT, "VK_PIPELINE_STAGE_TRANSFER_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT, "VK_PIPELINE_STAGE_HOST_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"), + }; + return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc)); +} + tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value) { static const tcu::Format::BitDesc s_desc[] = @@ -914,7 +956,6 @@ tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value) { static const tcu::Format::BitDesc s_desc[] = { - tcu::Format::BitDesc(VK_QUERY_RESULT_DEFAULT, "VK_QUERY_RESULT_DEFAULT"), tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT, "VK_QUERY_RESULT_64_BIT"), tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT, "VK_QUERY_RESULT_WAIT_BIT"), tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT, "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"), @@ -1020,30 +1061,6 @@ tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescript return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc)); } -tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value) -{ - static const tcu::Format::BitDesc s_desc[] = - { - tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT, "VK_PIPELINE_STAGE_TRANSFER_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT, "VK_PIPELINE_STAGE_HOST_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"), - tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"), - }; - return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc)); -} - tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value) { static const tcu::Format::BitDesc s_desc[] = @@ -1130,7 +1147,6 @@ tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value) { static const tcu::Format::BitDesc s_desc[] = { - tcu::Format::BitDesc(VK_STENCIL_FACE_NONE, "VK_STENCIL_FACE_NONE"), tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT, "VK_STENCIL_FACE_FRONT_BIT"), tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT, "VK_STENCIL_FACE_BACK_BIT"), tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK, "VK_STENCIL_FRONT_AND_BACK"), @@ -1142,7 +1158,7 @@ tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlag { static const tcu::Format::BitDesc s_desc[] = { - tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_NONE_BIT_KHR, "VK_SURFACE_TRANSFORM_NONE_BIT_KHR"), + tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"), tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"), tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"), tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"), @@ -1249,7 +1265,7 @@ tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelin return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); } -tcu::Format::Bitfield<32> getPipelineTesselationStateCreateFlagsStr (VkPipelineTesselationStateCreateFlags value) +tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value) { return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); } @@ -1334,6 +1350,36 @@ tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCr return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); } +tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + +tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + +tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + +tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + +tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + +tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value) { s << "VkApplicationInfo = {\n"; @@ -1355,9 +1401,9 @@ std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value) s << "\tpNext = " << value.pNext << '\n'; s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n'; s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n'; - s << "\tenabledLayerNameCount = " << value.enabledLayerNameCount << '\n'; + s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n'; s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n'; - s << "\tenabledExtensionNameCount = " << value.enabledExtensionNameCount << '\n'; + s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n'; s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n'; s << '}'; return s; @@ -1389,6 +1435,7 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n'; s << "\tlogicOp = " << value.logicOp << '\n'; s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n'; + s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n'; s << "\tdepthClamp = " << value.depthClamp << '\n'; s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n'; s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n'; @@ -1432,6 +1479,7 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n'; s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n'; s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n'; + s << "\tinheritedQueries = " << value.inheritedQueries << '\n'; s << '}'; return s; } @@ -1562,6 +1610,7 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value) s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n'; s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n'; s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n'; + s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n'; s << "\ttimestampPeriod = " << value.timestampPeriod << '\n'; s << "\tmaxClipDistances = " << value.maxClipDistances << '\n'; s << "\tmaxCullDistances = " << value.maxCullDistances << '\n'; @@ -1669,9 +1718,9 @@ std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value) s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n'; s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n'; s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n'; - s << "\tenabledLayerNameCount = " << value.enabledLayerNameCount << '\n'; + s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n'; s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n'; - s << "\tenabledExtensionNameCount = " << value.enabledExtensionNameCount << '\n'; + s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n'; s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n'; s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n'; s << '}'; @@ -1705,6 +1754,7 @@ std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value) s << "\tpNext = " << value.pNext << '\n'; s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n'; s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n'; + s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n'; s << "\tcommandBufferCount = " << value.commandBufferCount << '\n'; s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n'; s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n'; @@ -1760,7 +1810,7 @@ std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements { s << "VkSparseImageMemoryRequirements = {\n"; s << "\tformatProperties = " << value.formatProperties << '\n'; - s << "\timageMipTailStartLod = " << value.imageMipTailStartLod << '\n'; + s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n'; s << "\timageMipTailSize = " << value.imageMipTailSize << '\n'; s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n'; s << "\timageMipTailStride = " << value.imageMipTailStride << '\n'; @@ -1899,7 +1949,7 @@ std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value) s << "\tpNext = " << value.pNext << '\n'; s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n'; s << "\tqueryType = " << value.queryType << '\n'; - s << "\tentryCount = " << value.entryCount << '\n'; + s << "\tqueryCount = " << value.queryCount << '\n'; s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n'; s << '}'; return s; @@ -1962,6 +2012,7 @@ std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value) s << "\toffset = " << value.offset << '\n'; s << "\tsize = " << value.size << '\n'; s << "\trowPitch = " << value.rowPitch << '\n'; + s << "\tarrayPitch = " << value.arrayPitch << '\n'; s << "\tdepthPitch = " << value.depthPitch << '\n'; s << '}'; return s; @@ -2116,7 +2167,7 @@ std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCrea s << "VkPipelineTessellationStateCreateInfo = {\n"; s << "\tsType = " << value.sType << '\n'; s << "\tpNext = " << value.pNext << '\n'; - s << "\tflags = " << getPipelineTesselationStateCreateFlagsStr(value.flags) << '\n'; + s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n'; s << "\tpatchControlPoints = " << value.patchControlPoints << '\n'; s << '}'; return s; @@ -2364,6 +2415,7 @@ std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value) s << "\taddressModeV = " << value.addressModeV << '\n'; s << "\taddressModeW = " << value.addressModeW << '\n'; s << "\tmipLodBias = " << value.mipLodBias << '\n'; + s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n'; s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n'; s << "\tcompareEnable = " << value.compareEnable << '\n'; s << "\tcompareOp = " << value.compareOp << '\n'; @@ -2394,7 +2446,7 @@ std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo s << "\tpNext = " << value.pNext << '\n'; s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n'; s << "\tbindingCount = " << value.bindingCount << '\n'; - s << "\tpBinding = " << value.pBinding << '\n'; + s << "\tpBindings = " << value.pBindings << '\n'; s << '}'; return s; } @@ -2427,7 +2479,7 @@ std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& va s << "\tsType = " << value.sType << '\n'; s << "\tpNext = " << value.pNext << '\n'; s << "\tdescriptorPool = " << value.descriptorPool << '\n'; - s << "\tsetLayoutCount = " << value.setLayoutCount << '\n'; + s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n'; s << "\tpSetLayouts = " << value.pSetLayouts << '\n'; s << '}'; return s; @@ -2592,17 +2644,16 @@ std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& va s << "\tpNext = " << value.pNext << '\n'; s << "\tcommandPool = " << value.commandPool << '\n'; s << "\tlevel = " << value.level << '\n'; - s << "\tbufferCount = " << value.bufferCount << '\n'; + s << "\tcommandBufferCount = " << value.commandBufferCount << '\n'; s << '}'; return s; } -std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value) +std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value) { - s << "VkCommandBufferBeginInfo = {\n"; + s << "VkCommandBufferInheritanceInfo = {\n"; s << "\tsType = " << value.sType << '\n'; s << "\tpNext = " << value.pNext << '\n'; - s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n'; s << "\trenderPass = " << value.renderPass << '\n'; s << "\tsubpass = " << value.subpass << '\n'; s << "\tframebuffer = " << value.framebuffer << '\n'; @@ -2613,6 +2664,17 @@ std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value return s; } +std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value) +{ + s << "VkCommandBufferBeginInfo = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n'; + s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n'; + s << '}'; + return s; +} + std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value) { s << "VkBufferCopy = {\n"; @@ -2650,11 +2712,9 @@ std::ostream& operator<< (std::ostream& s, const VkImageBlit& value) { s << "VkImageBlit = {\n"; s << "\tsrcSubresource = " << value.srcSubresource << '\n'; - s << "\tsrcOffset = " << value.srcOffset << '\n'; - s << "\tsrcExtent = " << value.srcExtent << '\n'; + s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n'; s << "\tdstSubresource = " << value.dstSubresource << '\n'; - s << "\tdstOffset = " << value.dstOffset << '\n'; - s << "\tdstExtent = " << value.dstExtent << '\n'; + s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n'; s << '}'; return s; } @@ -2732,16 +2792,13 @@ std::ostream& operator<< (std::ostream& s, const VkImageResolve& value) return s; } -std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value) +std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value) { - s << "VkRenderPassBeginInfo = {\n"; + s << "VkMemoryBarrier = {\n"; s << "\tsType = " << value.sType << '\n'; s << "\tpNext = " << value.pNext << '\n'; - s << "\trenderPass = " << value.renderPass << '\n'; - s << "\tframebuffer = " << value.framebuffer << '\n'; - s << "\trenderArea = " << value.renderArea << '\n'; - s << "\tclearValueCount = " << value.clearValueCount << '\n'; - s << "\tpClearValues = " << value.pClearValues << '\n'; + s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n'; + s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n'; s << '}'; return s; } @@ -2762,39 +2819,6 @@ std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value) return s; } -std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value) -{ - s << "VkDispatchIndirectCommand = {\n"; - s << "\tx = " << value.x << '\n'; - s << "\ty = " << value.y << '\n'; - s << "\tz = " << value.z << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value) -{ - s << "VkDrawIndexedIndirectCommand = {\n"; - s << "\tindexCount = " << value.indexCount << '\n'; - s << "\tinstanceCount = " << value.instanceCount << '\n'; - s << "\tfirstIndex = " << value.firstIndex << '\n'; - s << "\tvertexOffset = " << value.vertexOffset << '\n'; - s << "\tfirstInstance = " << value.firstInstance << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value) -{ - s << "VkDrawIndirectCommand = {\n"; - s << "\tvertexCount = " << value.vertexCount << '\n'; - s << "\tinstanceCount = " << value.instanceCount << '\n'; - s << "\tfirstVertex = " << value.firstVertex << '\n'; - s << "\tfirstInstance = " << value.firstInstance << '\n'; - s << '}'; - return s; -} - std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value) { s << "VkImageMemoryBarrier = {\n"; @@ -2812,176 +2836,49 @@ std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value) return s; } -std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value) -{ - s << "VkMemoryBarrier = {\n"; - s << "\tsType = " << value.sType << '\n'; - s << "\tpNext = " << value.pNext << '\n'; - s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n'; - s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value) -{ - s << "VkSurfaceCapabilitiesKHR = {\n"; - s << "\tminImageCount = " << value.minImageCount << '\n'; - s << "\tmaxImageCount = " << value.maxImageCount << '\n'; - s << "\tcurrentExtent = " << value.currentExtent << '\n'; - s << "\tminImageExtent = " << value.minImageExtent << '\n'; - s << "\tmaxImageExtent = " << value.maxImageExtent << '\n'; - s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n'; - s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n'; - s << "\tcurrentTransform = " << value.currentTransform << '\n'; - s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n'; - s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value) -{ - s << "VkSurfaceFormatKHR = {\n"; - s << "\tformat = " << value.format << '\n'; - s << "\tcolorSpace = " << value.colorSpace << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value) -{ - s << "VkSwapchainCreateInfoKHR = {\n"; - s << "\tsType = " << value.sType << '\n'; - s << "\tpNext = " << value.pNext << '\n'; - s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n'; - s << "\tsurface = " << value.surface << '\n'; - s << "\tminImageCount = " << value.minImageCount << '\n'; - s << "\timageFormat = " << value.imageFormat << '\n'; - s << "\timageColorSpace = " << value.imageColorSpace << '\n'; - s << "\timageExtent = " << value.imageExtent << '\n'; - s << "\timageArrayLayers = " << value.imageArrayLayers << '\n'; - s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n'; - s << "\timageSharingMode = " << value.imageSharingMode << '\n'; - s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n'; - s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n'; - s << "\tpreTransform = " << value.preTransform << '\n'; - s << "\tcompositeAlpha = " << value.compositeAlpha << '\n'; - s << "\tpresentMode = " << value.presentMode << '\n'; - s << "\tclipped = " << value.clipped << '\n'; - s << "\toldSwapchain = " << value.oldSwapchain << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value) -{ - s << "VkPresentInfoKHR = {\n"; - s << "\tsType = " << value.sType << '\n'; - s << "\tpNext = " << value.pNext << '\n'; - s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n'; - s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n'; - s << "\tswapchainCount = " << value.swapchainCount << '\n'; - s << "\tpSwapchains = " << value.pSwapchains << '\n'; - s << "\tpImageIndices = " << value.pImageIndices << '\n'; - s << "\tpResults = " << value.pResults << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value) -{ - s << "VkDisplayPropertiesKHR = {\n"; - s << "\tdisplay = " << value.display << '\n'; - s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n'; - s << "\tphysicalDimensions = " << value.physicalDimensions << '\n'; - s << "\tphysicalResolution = " << value.physicalResolution << '\n'; - s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n'; - s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n'; - s << "\tpersistentContent = " << value.persistentContent << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value) -{ - s << "VkDisplayModeParametersKHR = {\n"; - s << "\tvisibleRegion = " << value.visibleRegion << '\n'; - s << "\trefreshRate = " << value.refreshRate << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value) -{ - s << "VkDisplayModePropertiesKHR = {\n"; - s << "\tdisplayMode = " << value.displayMode << '\n'; - s << "\tparameters = " << value.parameters << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value) +std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value) { - s << "VkDisplayModeCreateInfoKHR = {\n"; + s << "VkRenderPassBeginInfo = {\n"; s << "\tsType = " << value.sType << '\n'; s << "\tpNext = " << value.pNext << '\n'; - s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n'; - s << "\tparameters = " << value.parameters << '\n'; - s << '}'; - return s; -} - -std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value) -{ - s << "VkDisplayPlaneCapabilitiesKHR = {\n"; - s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n'; - s << "\tminSrcPosition = " << value.minSrcPosition << '\n'; - s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n'; - s << "\tminSrcExtent = " << value.minSrcExtent << '\n'; - s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n'; - s << "\tminDstPosition = " << value.minDstPosition << '\n'; - s << "\tmaxDstPosition = " << value.maxDstPosition << '\n'; - s << "\tminDstExtent = " << value.minDstExtent << '\n'; - s << "\tmaxDstExtent = " << value.maxDstExtent << '\n'; + s << "\trenderPass = " << value.renderPass << '\n'; + s << "\tframebuffer = " << value.framebuffer << '\n'; + s << "\trenderArea = " << value.renderArea << '\n'; + s << "\tclearValueCount = " << value.clearValueCount << '\n'; + s << "\tpClearValues = " << value.pClearValues << '\n'; s << '}'; return s; } -std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value) +std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value) { - s << "VkDisplayPlanePropertiesKHR = {\n"; - s << "\tcurrentDisplay = " << value.currentDisplay << '\n'; - s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n'; + s << "VkDispatchIndirectCommand = {\n"; + s << "\tx = " << value.x << '\n'; + s << "\ty = " << value.y << '\n'; + s << "\tz = " << value.z << '\n'; s << '}'; return s; } -std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value) +std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value) { - s << "VkDisplaySurfaceCreateInfoKHR = {\n"; - s << "\tsType = " << value.sType << '\n'; - s << "\tpNext = " << value.pNext << '\n'; - s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n'; - s << "\tdisplayMode = " << value.displayMode << '\n'; - s << "\tplaneIndex = " << value.planeIndex << '\n'; - s << "\tplaneStackIndex = " << value.planeStackIndex << '\n'; - s << "\ttransform = " << value.transform << '\n'; - s << "\tglobalAlpha = " << value.globalAlpha << '\n'; - s << "\talphaMode = " << value.alphaMode << '\n'; - s << "\timageExtent = " << value.imageExtent << '\n'; + s << "VkDrawIndexedIndirectCommand = {\n"; + s << "\tindexCount = " << value.indexCount << '\n'; + s << "\tinstanceCount = " << value.instanceCount << '\n'; + s << "\tfirstIndex = " << value.firstIndex << '\n'; + s << "\tvertexOffset = " << value.vertexOffset << '\n'; + s << "\tfirstInstance = " << value.firstInstance << '\n'; s << '}'; return s; } -std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value) +std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value) { - s << "VkDisplayPresentInfoKHR = {\n"; - s << "\tsType = " << value.sType << '\n'; - s << "\tpNext = " << value.pNext << '\n'; - s << "\tsrcRect = " << value.srcRect << '\n'; - s << "\tdstRect = " << value.dstRect << '\n'; - s << "\tpersistent = " << value.persistent << '\n'; + s << "VkDrawIndirectCommand = {\n"; + s << "\tvertexCount = " << value.vertexCount << '\n'; + s << "\tinstanceCount = " << value.instanceCount << '\n'; + s << "\tfirstVertex = " << value.firstVertex << '\n'; + s << "\tfirstInstance = " << value.firstInstance << '\n'; s << '}'; return s; } diff --git a/external/vulkancts/framework/vulkan/vkStructTypes.inl b/external/vulkancts/framework/vulkan/vkStructTypes.inl index 75b183c..49d993c 100644 --- a/external/vulkancts/framework/vulkan/vkStructTypes.inl +++ b/external/vulkancts/framework/vulkan/vkStructTypes.inl @@ -18,9 +18,9 @@ struct VkInstanceCreateInfo const void* pNext; VkInstanceCreateFlags flags; const VkApplicationInfo* pApplicationInfo; - deUint32 enabledLayerNameCount; + deUint32 enabledLayerCount; const char* const* ppEnabledLayerNames; - deUint32 enabledExtensionNameCount; + deUint32 enabledExtensionCount; const char* const* ppEnabledExtensionNames; }; @@ -46,6 +46,7 @@ struct VkPhysicalDeviceFeatures VkBool32 dualSrcBlend; VkBool32 logicOp; VkBool32 multiDrawIndirect; + VkBool32 drawIndirectFirstInstance; VkBool32 depthClamp; VkBool32 depthBiasClamp; VkBool32 fillModeNonSolid; @@ -89,6 +90,7 @@ struct VkPhysicalDeviceFeatures VkBool32 sparseResidency16Samples; VkBool32 sparseResidencyAliased; VkBool32 variableMultisampleRate; + VkBool32 inheritedQueries; }; struct VkFormatProperties @@ -100,9 +102,9 @@ struct VkFormatProperties struct VkExtent3D { - deInt32 width; - deInt32 height; - deInt32 depth; + deUint32 width; + deUint32 height; + deUint32 depth; }; struct VkImageFormatProperties @@ -207,6 +209,7 @@ struct VkPhysicalDeviceLimits VkSampleCountFlags sampledImageStencilSampleCounts; VkSampleCountFlags storageImageSampleCounts; deUint32 maxSampleMaskWords; + VkBool32 timestampComputeAndGraphics; float timestampPeriod; deUint32 maxClipDistances; deUint32 maxCullDistances; @@ -290,9 +293,9 @@ struct VkDeviceCreateInfo VkDeviceCreateFlags flags; deUint32 queueCreateInfoCount; const VkDeviceQueueCreateInfo* pQueueCreateInfos; - deUint32 enabledLayerNameCount; + deUint32 enabledLayerCount; const char* const* ppEnabledLayerNames; - deUint32 enabledExtensionNameCount; + deUint32 enabledExtensionCount; const char* const* ppEnabledExtensionNames; const VkPhysicalDeviceFeatures* pEnabledFeatures; }; @@ -313,14 +316,15 @@ struct VkLayerProperties struct VkSubmitInfo { - VkStructureType sType; - const void* pNext; - deUint32 waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - deUint32 commandBufferCount; - const VkCommandBuffer* pCommandBuffers; - deUint32 signalSemaphoreCount; - const VkSemaphore* pSignalSemaphores; + VkStructureType sType; + const void* pNext; + deUint32 waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + const VkPipelineStageFlags* pWaitDstStageMask; + deUint32 commandBufferCount; + const VkCommandBuffer* pCommandBuffers; + deUint32 signalSemaphoreCount; + const VkSemaphore* pSignalSemaphores; }; struct VkMemoryAllocateInfo @@ -357,7 +361,7 @@ struct VkSparseImageFormatProperties struct VkSparseImageMemoryRequirements { VkSparseImageFormatProperties formatProperties; - deUint32 imageMipTailStartLod; + deUint32 imageMipTailFirstLod; VkDeviceSize imageMipTailSize; VkDeviceSize imageMipTailOffset; VkDeviceSize imageMipTailStride; @@ -460,7 +464,7 @@ struct VkQueryPoolCreateInfo const void* pNext; VkQueryPoolCreateFlags flags; VkQueryType queryType; - deUint32 entryCount; + deUint32 queryCount; VkQueryPipelineStatisticFlags pipelineStatistics; }; @@ -511,6 +515,7 @@ struct VkSubresourceLayout VkDeviceSize offset; VkDeviceSize size; VkDeviceSize rowPitch; + VkDeviceSize arrayPitch; VkDeviceSize depthPitch; }; @@ -626,7 +631,7 @@ struct VkPipelineTessellationStateCreateInfo { VkStructureType sType; const void* pNext; - VkPipelineTesselationStateCreateFlags flags; + VkPipelineTessellationStateCreateFlags flags; deUint32 patchControlPoints; }; @@ -648,8 +653,8 @@ struct VkOffset2D struct VkExtent2D { - deInt32 width; - deInt32 height; + deUint32 width; + deUint32 height; }; struct VkRect2D @@ -823,6 +828,7 @@ struct VkSamplerCreateInfo VkSamplerAddressMode addressModeV; VkSamplerAddressMode addressModeW; float mipLodBias; + VkBool32 anisotropyEnable; float maxAnisotropy; VkBool32 compareEnable; VkCompareOp compareOp; @@ -847,7 +853,7 @@ struct VkDescriptorSetLayoutCreateInfo const void* pNext; VkDescriptorSetLayoutCreateFlags flags; deUint32 bindingCount; - const VkDescriptorSetLayoutBinding* pBinding; + const VkDescriptorSetLayoutBinding* pBindings; }; struct VkDescriptorPoolSize @@ -871,7 +877,7 @@ struct VkDescriptorSetAllocateInfo VkStructureType sType; const void* pNext; VkDescriptorPool descriptorPool; - deUint32 setLayoutCount; + deUint32 descriptorSetCount; const VkDescriptorSetLayout* pSetLayouts; }; @@ -959,7 +965,7 @@ struct VkSubpassDescription const VkAttachmentReference* pResolveAttachments; const VkAttachmentReference* pDepthStencilAttachment; deUint32 preserveAttachmentCount; - const VkAttachmentReference* pPreserveAttachments; + const deUint32* pPreserveAttachments; }; struct VkSubpassDependency @@ -1000,14 +1006,13 @@ struct VkCommandBufferAllocateInfo const void* pNext; VkCommandPool commandPool; VkCommandBufferLevel level; - deUint32 bufferCount; + deUint32 commandBufferCount; }; -struct VkCommandBufferBeginInfo +struct VkCommandBufferInheritanceInfo { VkStructureType sType; const void* pNext; - VkCommandBufferUsageFlags flags; VkRenderPass renderPass; deUint32 subpass; VkFramebuffer framebuffer; @@ -1016,6 +1021,14 @@ struct VkCommandBufferBeginInfo VkQueryPipelineStatisticFlags pipelineStatistics; }; +struct VkCommandBufferBeginInfo +{ + VkStructureType sType; + const void* pNext; + VkCommandBufferUsageFlags flags; + const VkCommandBufferInheritanceInfo* pInheritanceInfo; +}; + struct VkBufferCopy { VkDeviceSize srcOffset; @@ -1043,11 +1056,9 @@ struct VkImageCopy struct VkImageBlit { VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkExtent3D srcExtent; + VkOffset3D srcOffsets[2]; VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D dstExtent; + VkOffset3D dstOffsets[2]; }; struct VkBufferImageCopy @@ -1102,15 +1113,12 @@ struct VkImageResolve VkExtent3D extent; }; -struct VkRenderPassBeginInfo +struct VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkRenderPass renderPass; - VkFramebuffer framebuffer; - VkRect2D renderArea; - deUint32 clearValueCount; - const VkClearValue* pClearValues; + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; }; struct VkBufferMemoryBarrier @@ -1126,30 +1134,6 @@ struct VkBufferMemoryBarrier VkDeviceSize size; }; -struct VkDispatchIndirectCommand -{ - deUint32 x; - deUint32 y; - deUint32 z; -}; - -struct VkDrawIndexedIndirectCommand -{ - deUint32 indexCount; - deUint32 instanceCount; - deUint32 firstIndex; - deInt32 vertexOffset; - deUint32 firstInstance; -}; - -struct VkDrawIndirectCommand -{ - deUint32 vertexCount; - deUint32 instanceCount; - deUint32 firstVertex; - deUint32 firstInstance; -}; - struct VkImageMemoryBarrier { VkStructureType sType; @@ -1164,138 +1148,38 @@ struct VkImageMemoryBarrier VkImageSubresourceRange subresourceRange; }; -struct VkMemoryBarrier -{ - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -}; - -struct VkSurfaceCapabilitiesKHR -{ - deUint32 minImageCount; - deUint32 maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - deUint32 maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; -}; - -struct VkSurfaceFormatKHR -{ - VkFormat format; - VkColorSpaceKHR colorSpace; -}; - -struct VkSwapchainCreateInfoKHR -{ - VkStructureType sType; - const void* pNext; - VkSwapchainCreateFlagsKHR flags; - VkSurfaceKHR surface; - deUint32 minImageCount; - VkFormat imageFormat; - VkColorSpaceKHR imageColorSpace; - VkExtent2D imageExtent; - deUint32 imageArrayLayers; - VkImageUsageFlags imageUsage; - VkSharingMode imageSharingMode; - deUint32 queueFamilyIndexCount; - const deUint32* pQueueFamilyIndices; - VkSurfaceTransformFlagBitsKHR preTransform; - VkCompositeAlphaFlagBitsKHR compositeAlpha; - VkPresentModeKHR presentMode; - VkBool32 clipped; - VkSwapchainKHR oldSwapchain; -}; - -struct VkPresentInfoKHR -{ - VkStructureType sType; - const void* pNext; - deUint32 waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - deUint32 swapchainCount; - const VkSwapchainKHR* pSwapchains; - const deUint32* pImageIndices; - VkResult* pResults; -}; - -struct VkDisplayPropertiesKHR -{ - VkDisplayKHR display; - const char* displayName; - VkExtent2D physicalDimensions; - VkExtent2D physicalResolution; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkBool32 planeReorderPossible; - VkBool32 persistentContent; -}; - -struct VkDisplayModeParametersKHR -{ - VkExtent2D visibleRegion; - deUint32 refreshRate; -}; - -struct VkDisplayModePropertiesKHR -{ - VkDisplayModeKHR displayMode; - VkDisplayModeParametersKHR parameters; -}; - -struct VkDisplayModeCreateInfoKHR -{ - VkStructureType sType; - const void* pNext; - VkDisplayModeCreateFlagsKHR flags; - VkDisplayModeParametersKHR parameters; -}; - -struct VkDisplayPlaneCapabilitiesKHR +struct VkRenderPassBeginInfo { - VkDisplayPlaneAlphaFlagsKHR supportedAlpha; - VkOffset2D minSrcPosition; - VkOffset2D maxSrcPosition; - VkExtent2D minSrcExtent; - VkExtent2D maxSrcExtent; - VkOffset2D minDstPosition; - VkOffset2D maxDstPosition; - VkExtent2D minDstExtent; - VkExtent2D maxDstExtent; + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + VkFramebuffer framebuffer; + VkRect2D renderArea; + deUint32 clearValueCount; + const VkClearValue* pClearValues; }; -struct VkDisplayPlanePropertiesKHR +struct VkDispatchIndirectCommand { - VkDisplayKHR currentDisplay; - deUint32 currentStackIndex; + deUint32 x; + deUint32 y; + deUint32 z; }; -struct VkDisplaySurfaceCreateInfoKHR +struct VkDrawIndexedIndirectCommand { - VkStructureType sType; - const void* pNext; - VkDisplaySurfaceCreateFlagsKHR flags; - VkDisplayModeKHR displayMode; - deUint32 planeIndex; - deUint32 planeStackIndex; - VkSurfaceTransformFlagBitsKHR transform; - float globalAlpha; - VkDisplayPlaneAlphaFlagBitsKHR alphaMode; - VkExtent2D imageExtent; + deUint32 indexCount; + deUint32 instanceCount; + deUint32 firstIndex; + deInt32 vertexOffset; + deUint32 firstInstance; }; -struct VkDisplayPresentInfoKHR +struct VkDrawIndirectCommand { - VkStructureType sType; - const void* pNext; - VkRect2D srcRect; - VkRect2D dstRect; - VkBool32 persistent; + deUint32 vertexCount; + deUint32 instanceCount; + deUint32 firstVertex; + deUint32 firstInstance; }; diff --git a/external/vulkancts/framework/vulkan/vkTypeUtil.inl b/external/vulkancts/framework/vulkan/vkTypeUtil.inl index 5421b11..52f65d6 100644 --- a/external/vulkancts/framework/vulkan/vkTypeUtil.inl +++ b/external/vulkancts/framework/vulkan/vkTypeUtil.inl @@ -14,7 +14,7 @@ inline VkAllocationCallbacks makeAllocationCallbacks (void* pUserData, PFN_vkAll return res; } -inline VkExtent3D makeExtent3D (deInt32 width, deInt32 height, deInt32 depth) +inline VkExtent3D makeExtent3D (deUint32 width, deUint32 height, deUint32 depth) { VkExtent3D res; res.width = width; @@ -88,12 +88,13 @@ inline VkSparseImageMemoryBindInfo makeSparseImageMemoryBindInfo (VkImage image, return res; } -inline VkSubresourceLayout makeSubresourceLayout (VkDeviceSize offset, VkDeviceSize size, VkDeviceSize rowPitch, VkDeviceSize depthPitch) +inline VkSubresourceLayout makeSubresourceLayout (VkDeviceSize offset, VkDeviceSize size, VkDeviceSize rowPitch, VkDeviceSize arrayPitch, VkDeviceSize depthPitch) { VkSubresourceLayout res; res.offset = offset; res.size = size; res.rowPitch = rowPitch; + res.arrayPitch = arrayPitch; res.depthPitch = depthPitch; return res; } @@ -177,7 +178,7 @@ inline VkOffset2D makeOffset2D (deInt32 x, deInt32 y) return res; } -inline VkExtent2D makeExtent2D (deInt32 width, deInt32 height) +inline VkExtent2D makeExtent2D (deUint32 width, deUint32 height) { VkExtent2D res; res.width = width; @@ -281,7 +282,7 @@ inline VkAttachmentReference makeAttachmentReference (deUint32 attachment, VkIma return res; } -inline VkSubpassDescription makeSubpassDescription (VkSubpassDescriptionFlags flags, VkPipelineBindPoint pipelineBindPoint, deUint32 inputAttachmentCount, const VkAttachmentReference* pInputAttachments, deUint32 colorAttachmentCount, const VkAttachmentReference* pColorAttachments, const VkAttachmentReference* pResolveAttachments, const VkAttachmentReference* pDepthStencilAttachment, deUint32 preserveAttachmentCount, const VkAttachmentReference* pPreserveAttachments) +inline VkSubpassDescription makeSubpassDescription (VkSubpassDescriptionFlags flags, VkPipelineBindPoint pipelineBindPoint, deUint32 inputAttachmentCount, const VkAttachmentReference* pInputAttachments, deUint32 colorAttachmentCount, const VkAttachmentReference* pColorAttachments, const VkAttachmentReference* pResolveAttachments, const VkAttachmentReference* pDepthStencilAttachment, deUint32 preserveAttachmentCount, const deUint32* pPreserveAttachments) { VkSubpassDescription res; res.flags = flags; @@ -366,19 +367,3 @@ inline VkDrawIndirectCommand makeDrawIndirectCommand (deUint32 vertexCount, deUi res.firstInstance = firstInstance; return res; } - -inline VkSurfaceFormatKHR makeSurfaceFormatKHR (VkFormat format, VkColorSpaceKHR colorSpace) -{ - VkSurfaceFormatKHR res; - res.format = format; - res.colorSpace = colorSpace; - return res; -} - -inline VkDisplayPlanePropertiesKHR makeDisplayPlanePropertiesKHR (VkDisplayKHR currentDisplay, deUint32 currentStackIndex) -{ - VkDisplayPlanePropertiesKHR res; - res.currentDisplay = currentDisplay; - res.currentStackIndex = currentStackIndex; - return res; -} diff --git a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl index a9a1b5c..14dceb0 100644 --- a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl @@ -34,7 +34,7 @@ virtual VkResult setEvent (VkDevice device, VkEvent event) const = 0; virtual VkResult resetEvent (VkDevice device, VkEvent event) const = 0; virtual VkResult createQueryPool (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const = 0; virtual void destroyQueryPool (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const = 0; -virtual VkResult getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const = 0; +virtual VkResult getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const = 0; virtual VkResult createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const = 0; virtual void destroyBuffer (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const = 0; virtual VkResult createBufferView (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const = 0; @@ -79,8 +79,8 @@ virtual VkResult beginCommandBuffer (VkCommandBuffer commandBuffer, const virtual VkResult endCommandBuffer (VkCommandBuffer commandBuffer) const = 0; virtual VkResult resetCommandBuffer (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const = 0; virtual void cmdBindPipeline (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0; -virtual void cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const = 0; -virtual void cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const = 0; +virtual void cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const = 0; +virtual void cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const = 0; virtual void cmdSetLineWidth (VkCommandBuffer commandBuffer, float lineWidth) const = 0; virtual void cmdSetDepthBias (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const = 0; virtual void cmdSetBlendConstants (VkCommandBuffer commandBuffer, const float blendConstants[4]) const = 0; @@ -90,7 +90,7 @@ virtual void cmdSetStencilWriteMask (VkCommandBuffer commandBuffer, VkSte virtual void cmdSetStencilReference (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const = 0; virtual void cmdBindDescriptorSets (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0; virtual void cmdBindIndexBuffer (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0; -virtual void cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0; +virtual void cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0; virtual void cmdDraw (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const = 0; virtual void cmdDrawIndexed (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const = 0; virtual void cmdDrawIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0; @@ -110,15 +110,15 @@ virtual void cmdClearAttachments (VkCommandBuffer commandBuffer, deUint3 virtual void cmdResolveImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0; virtual void cmdSetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0; virtual void cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0; -virtual void cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const = 0; -virtual void cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const void* const* ppMemoryBarriers) const = 0; -virtual void cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry, VkQueryControlFlags flags) const = 0; -virtual void cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 entry) const = 0; -virtual void cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const = 0; -virtual void cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 entry) const = 0; -virtual void cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const = 0; +virtual void cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0; +virtual void cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0; +virtual void cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const = 0; +virtual void cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const = 0; +virtual void cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0; +virtual void cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const = 0; +virtual void cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const = 0; virtual void cmdPushConstants (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const = 0; virtual void cmdBeginRenderPass (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const = 0; virtual void cmdNextSubpass (VkCommandBuffer commandBuffer, VkSubpassContents contents) const = 0; virtual void cmdEndRenderPass (VkCommandBuffer commandBuffer) const = 0; -virtual void cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBuffersCount, const VkCommandBuffer* pCommandBuffers) const = 0; +virtual void cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0; diff --git a/external/vulkancts/gen_framework.py b/external/vulkancts/gen_framework.py index 17cafe3..d081772 100644 --- a/external/vulkancts/gen_framework.py +++ b/external/vulkancts/gen_framework.py @@ -261,6 +261,9 @@ def parseCompositeTypes (src): types = [] for type, structname, contents, typename in matches: + if typename[-3:] == "KHR": + continue # \todo [2016-01-05 pyry] Figure out how to handle platform-specific types + types.append(parseCompositeType(typeMap[type], typename, contents)) return types diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp index 00476b8..c7379a8 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp @@ -39,6 +39,7 @@ #include "gluVarType.hpp" #include "tcuTestLog.hpp" #include "vkPrograms.hpp" +#include "vkQueryUtil.hpp" #include "vktTestCase.hpp" namespace vkt @@ -99,15 +100,15 @@ private: tcu::TestStatus BufferTestInstance::bufferCreateAndAllocTest (VkDeviceSize size) { - const VkDevice vkDevice = m_context.getDevice(); - const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice vkDevice = m_context.getDevice(); + const DeviceInterface& vk = m_context.getDeviceInterface(); VkBuffer testBuffer; VkMemoryRequirements memReqs; VkDeviceMemory memory; + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); // Create buffer { - const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); const VkBufferCreateInfo bufferParams = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, @@ -146,8 +147,52 @@ private: if (vk.allocateMemory(vkDevice, &memAlloc, (const VkAllocationCallbacks*)DE_NULL, &memory) != VK_SUCCESS) return tcu::TestStatus::fail("Alloc memory failed! (requested memory size: " + de::toString(size) + ")"); - if (vk.bindBufferMemory(vkDevice, testBuffer, memory, 0) != VK_SUCCESS) - return tcu::TestStatus::fail("Bind buffer memory failed! (requested memory size: " + de::toString(size) + ")"); + + if ((m_testCase.flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) || + (m_testCase.flags & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) || + (m_testCase.flags & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)) + { + VkQueue queue = 0; + + vk.getDeviceQueue(vkDevice, queueFamilyIndex, 0, &queue); + + const VkSparseMemoryBind sparseMemoryBind = + { + 0, // VkDeviceSize resourceOffset; + memReqs.size, // VkDeviceSize size; + memory, // VkDeviceMemory memory; + 0, // VkDeviceSize memoryOffset; + 0 // VkSparseMemoryBindFlags flags; + }; + + const VkSparseBufferMemoryBindInfo sparseBufferMemoryBindInfo = + { + testBuffer, // VkBuffer buffer; + 1u, // deUint32 bindCount; + &sparseMemoryBind // const VkSparseMemoryBind* pBinds; + }; + + const VkBindSparseInfo bindSparseInfo = + { + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 bufferBindCount; + &sparseBufferMemoryBindInfo, // const VkSparseBufferMemoryBindInfo* pBufferBinds; + 0, // deUint32 imageOpaqueBindCount; + DE_NULL, // const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds; + 0, // deUint32 imageBindCount; + DE_NULL, // const VkSparseImageMemoryBindInfo* pImageBinds; + 0, // deUint32 signalSemaphoreCount; + DE_NULL, // const VkSemaphore* pSignalSemaphores; + }; + + if (vk.queueBindSparse(queue, 1, &bindSparseInfo, DE_NULL) != VK_SUCCESS) + return tcu::TestStatus::fail("Bind sparse buffer memory failed! (requested memory size: " + de::toString(size) + ")"); + } else + if (vk.bindBufferMemory(vkDevice, testBuffer, memory, 0) != VK_SUCCESS) + return tcu::TestStatus::fail("Bind buffer memory failed! (requested memory size: " + de::toString(size) + ")"); } vk.freeMemory(vkDevice, memory, (const VkAllocationCallbacks*)DE_NULL); @@ -158,6 +203,17 @@ private: tcu::TestStatus BufferTestInstance::iterate (void) { + const VkPhysicalDeviceFeatures& physicalDeviceFeatures = m_context.getDeviceFeatures(); + + if ((m_testCase.flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT ) && !physicalDeviceFeatures.sparseBinding) + TCU_THROW(NotSupportedError, "Sparse bindings feature is not supported"); + + if ((m_testCase.flags & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT ) && !physicalDeviceFeatures.sparseResidencyBuffer) + TCU_THROW(NotSupportedError, "Sparse buffer residency feature is not supported"); + + if ((m_testCase.flags & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT ) && !physicalDeviceFeatures.sparseResidencyAliased) + TCU_THROW(NotSupportedError, "Sparse aliased residency feature is not supported"); + const VkDeviceSize testSizes[] = { 1, @@ -165,7 +221,7 @@ tcu::TestStatus BufferTestInstance::iterate (void) 15991, 16384 }; - tcu::TestStatus testStatus = tcu::TestStatus::pass("Buffer test"); + tcu::TestStatus testStatus = tcu::TestStatus::pass("Buffer test"); for (int i = 0; i < DE_LENGTH_OF_ARRAY(testSizes); i++) { @@ -175,13 +231,16 @@ tcu::TestStatus BufferTestInstance::iterate (void) if (m_testCase.usage & (VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT)) { - const VkPhysicalDevice vkPhysicalDevice = m_context.getPhysicalDevice(); - const InstanceInterface& vkInstance = m_context.getInstanceInterface(); + const VkPhysicalDevice vkPhysicalDevice = m_context.getPhysicalDevice(); + const InstanceInterface& vkInstance = m_context.getInstanceInterface(); + const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vkInstance, vkPhysicalDevice); VkPhysicalDeviceProperties props; vkInstance.getPhysicalDeviceProperties(vkPhysicalDevice, &props); - testStatus = bufferCreateAndAllocTest(props.limits.maxTexelBufferElements); + const VkDeviceSize maxTestBufferSize = de::min((VkDeviceSize) props.limits.maxTexelBufferElements, memoryProperties.memoryHeaps[memoryProperties.memoryTypes[0].heapIndex].size / 16); + + testStatus = bufferCreateAndAllocTest(maxTestBufferSize); } return testStatus; diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferViewAccessTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferViewAccessTests.cpp index 1d83957..f44908e 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiBufferViewAccessTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiBufferViewAccessTests.cpp @@ -171,7 +171,7 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase 0u, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y(), 1u }, // VkExtent3D extent; 1u, // deUint32 mipLevels; 1u, // deUint32 arraySize; VK_SAMPLE_COUNT_1_BIT, // deUint32 samples; @@ -505,8 +505,8 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase }; const VkRect2D scissor = { - { 0, 0 }, // VkOffset2D offset; - { m_renderSize.x(), m_renderSize.y() } // VkExtent2D extent; + { 0, 0 }, // VkOffset2D offset; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } // VkExtent2D extent; }; const VkPipelineViewportStateCreateInfo viewportStateParams = { @@ -666,12 +666,7 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue clearValue = makeClearValueColorF32(0.0, 0.0, 0.0, 0.0); @@ -687,7 +682,10 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase DE_NULL, // const void* pNext; *m_renderPass, // VkRenderPass renderPass; *m_framebuffer, // VkFramebuffer framebuffer; - { { 0, 0 }, { m_renderSize.x(), m_renderSize.y() } }, // VkRect2D renderArea; + { + { 0, 0 }, + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } + }, // VkRect2D renderArea; 1u, // deUint32 clearValueCount; attachmentClearValues // const VkClearValue* pClearValues; }; @@ -715,9 +713,8 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase 1u // deUint32 arraySize; } }; - const void* const initialImageBarrierPtr = &initialImageBarrier; - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_FALSE, 1, &initialImageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &initialImageBarrier); vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -727,6 +724,7 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase vk.cmdBindDescriptorSets(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1, &*m_descriptorSet, 0u, DE_NULL); vk.cmdBindVertexBuffers(*m_cmdBuffer, 0, 1, &m_vertexBuffer.get(), vertexBufferOffset); vk.cmdDraw(*m_cmdBuffer, (deUint32)m_vertices.size(), 1, 0, 0); + vk.cmdEndRenderPass(*m_cmdBuffer); const VkImageMemoryBarrier imageBarrier = { @@ -768,17 +766,17 @@ BufferViewTestInstance::BufferViewTestInstance (Context& context, BufferViewCase (deUint32)m_renderSize.y(), // deUint32 bufferImageHeight; { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u }, // VkImageSubresourceCopy imageSubresource; { 0, 0, 0 }, // VkOffset3D imageOffset; - { m_renderSize.x(), m_renderSize.y(), 1 } // VkExtent3D imageExtent; + { + (deUint32)m_renderSize.x(), + (deUint32)m_renderSize.y(), + 1u + } // VkExtent3D imageExtent; }; - const void* const imageBarrierPtr = &imageBarrier; - const void* const bufferBarrierPtr = &bufferBarrier; - - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vk.cmdCopyImageToBuffer(*m_cmdBuffer, *m_colorImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *m_resultBuffer, 1, ©Region); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); - vk.cmdEndRenderPass(*m_cmdBuffer); VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer)); } @@ -833,6 +831,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &m_cmdBuffer.get(), 0u, diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp index f126067..9c14d79 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp @@ -106,7 +106,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) const VkDevice vkDevice = m_context.getDevice(); const DeviceInterface& vk = m_context.getDeviceInterface(); const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); - const VkDeviceSize size = 16 * 1024; + const VkDeviceSize size = 3 * 5 * 7 * 64; VkBuffer testBuffer; VkMemoryRequirements memReqs; VkFormatProperties properties; @@ -205,7 +205,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) { de::MovePtr bufferViewTests (new tcu::TestCaseGroup(testCtx, "create", "BufferView Construction Tests")); - const VkDeviceSize range = 96; + const VkDeviceSize range = VK_WHOLE_SIZE; for (deUint32 format = VK_FORMAT_UNDEFINED + 1; format < VK_FORMAT_LAST; format++) { std::ostringstream testName; diff --git a/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp index 8407dd3..3e5810a 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp @@ -418,12 +418,7 @@ tcu::TestStatus executePrimaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -467,9 +462,7 @@ tcu::TestStatus executePrimaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -522,12 +515,7 @@ tcu::TestStatus executeLargePrimaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -570,9 +558,7 @@ tcu::TestStatus executeLargePrimaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -628,12 +614,7 @@ tcu::TestStatus resetBufferImplicitlyTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkEventCreateInfo eventCreateInfo = @@ -667,9 +648,7 @@ tcu::TestStatus resetBufferImplicitlyTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &cmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -743,12 +722,7 @@ tcu::TestStatus recordSinglePrimaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -805,12 +779,7 @@ tcu::TestStatus recordLargePrimaryBufferTest(Context &context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -864,9 +833,7 @@ tcu::TestStatus recordLargePrimaryBufferTest(Context &context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -908,11 +875,10 @@ tcu::TestStatus recordSingleSecondaryBufferTest(Context& context) }; const Unique secCmdBuf (allocateCommandBuffer(vk, vkDevice, &cmdBufParams)); - const VkCommandBufferBeginInfo secCmdBufBeginInfo = + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = { - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, DE_NULL, - 0, // flags (VkRenderPass)0u, // renderPass 0u, // subpass (VkFramebuffer)0u, // framebuffer @@ -920,6 +886,13 @@ tcu::TestStatus recordSingleSecondaryBufferTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; + const VkCommandBufferBeginInfo secCmdBufBeginInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + DE_NULL, + 0, // flags + &secCmdBufInheritInfo, + }; // Fill create info struct for event const VkEventCreateInfo eventCreateInfo = @@ -975,12 +948,7 @@ tcu::TestStatus recordLargeSecondaryBufferTest(Context &context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -1035,9 +1003,7 @@ tcu::TestStatus recordLargeSecondaryBufferTest(Context &context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1085,12 +1051,7 @@ tcu::TestStatus submitPrimaryBufferTwiceTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -1134,9 +1095,7 @@ tcu::TestStatus submitPrimaryBufferTwiceTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1217,6 +1176,13 @@ tcu::TestStatus submitSecondaryBufferTwiceTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, (VkRenderPass)0u, // renderPass 0u, // subpass (VkFramebuffer)0u, // framebuffer @@ -1224,18 +1190,12 @@ tcu::TestStatus submitSecondaryBufferTwiceTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secCmdBufBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0u, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secCmdBufInheritInfo, }; // Fill create info struct for event @@ -1289,9 +1249,7 @@ tcu::TestStatus submitSecondaryBufferTwiceTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf1.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1331,9 +1289,7 @@ tcu::TestStatus submitSecondaryBufferTwiceTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf2.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1384,12 +1340,7 @@ tcu::TestStatus oneTimeSubmitFlagPrimaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -1433,9 +1384,7 @@ tcu::TestStatus oneTimeSubmitFlagPrimaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1528,6 +1477,13 @@ tcu::TestStatus oneTimeSubmitFlagSecondaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, (VkRenderPass)0u, // renderPass 0u, // subpass (VkFramebuffer)0u, // framebuffer @@ -1535,18 +1491,12 @@ tcu::TestStatus oneTimeSubmitFlagSecondaryBufferTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secCmdBufBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secCmdBufInheritInfo, }; // Fill create info struct for event @@ -1600,9 +1550,7 @@ tcu::TestStatus oneTimeSubmitFlagSecondaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf1.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1654,9 +1602,7 @@ tcu::TestStatus oneTimeSubmitFlagSecondaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf2.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1707,12 +1653,7 @@ tcu::TestStatus simultaneousUsePrimaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Fill create info struct for event @@ -1737,7 +1678,7 @@ tcu::TestStatus simultaneousUsePrimaryBufferTest(Context& context) VkPipelineStageFlags stageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; // wait for event - vk.cmdWaitEvents(*primCmdBuf, 1u, &eventOne.get(), stageMask, stageMask, 0u, DE_NULL); + vk.cmdWaitEvents(*primCmdBuf, 1u, &eventOne.get(), stageMask, stageMask, 0u, DE_NULL, 0u, DE_NULL, 0u, DE_NULL); // Set the second event vk.cmdSetEvent(*primCmdBuf, eventTwo.get(), stageMask); @@ -1762,9 +1703,7 @@ tcu::TestStatus simultaneousUsePrimaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1843,6 +1782,13 @@ tcu::TestStatus simultaneousUseSecondaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, (VkRenderPass)0u, // renderPass 0u, // subpass (VkFramebuffer)0u, // framebuffer @@ -1850,18 +1796,12 @@ tcu::TestStatus simultaneousUseSecondaryBufferTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secCmdBufBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secCmdBufInheritInfo, }; // Fill create info struct for event @@ -1887,7 +1827,7 @@ tcu::TestStatus simultaneousUseSecondaryBufferTest(Context& context) VkPipelineStageFlags stageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; // wait for event - vk.cmdWaitEvents(*secCmdBuf, 1, &eventOne.get(), stageMask, stageMask, 0, DE_NULL); + vk.cmdWaitEvents(*secCmdBuf, 1, &eventOne.get(), stageMask, stageMask, 0, DE_NULL, 0u, DE_NULL, 0u, DE_NULL); // reset event vk.cmdSetEvent(*secCmdBuf, *eventTwo, stageMask); @@ -1919,9 +1859,7 @@ tcu::TestStatus simultaneousUseSecondaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1993,25 +1931,26 @@ tcu::TestStatus recordBufferQueryPreciseWithFlagTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secBufferInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, 0u, // renderPass 0u, // subpass 0u, // framebuffer - DE_FALSE, // occlusionQueryEnable - 0u, // queryFlags + VK_TRUE, // occlusionQueryEnable + VK_QUERY_CONTROL_PRECISE_BIT, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - 0u, // renderPass - 0u, // subpass - 0u, // framebuffer - VK_TRUE, // occlusionQueryEnable - VK_QUERY_CONTROL_PRECISE_BIT, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secBufferInheritInfo, }; // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set @@ -2084,25 +2023,26 @@ tcu::TestStatus recordBufferQueryImpreciseWithFlagTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secBufferInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, 0u, // renderPass 0u, // subpass 0u, // framebuffer - DE_FALSE, // occlusionQueryEnable - 0u, // queryFlags + VK_TRUE, // occlusionQueryEnable + VK_QUERY_CONTROL_PRECISE_BIT, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - 0u, // renderPass - 0u, // subpass - 0u, // framebuffer - VK_TRUE, // occlusionQueryEnable - VK_QUERY_CONTROL_PRECISE_BIT, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secBufferInheritInfo, }; // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set @@ -2175,6 +2115,13 @@ tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secBufferInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, 0u, // renderPass 0u, // subpass 0u, // framebuffer @@ -2182,18 +2129,12 @@ tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context) 0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - 0u, // renderPass - 0u, // subpass - 0u, // framebuffer - VK_TRUE, // occlusionQueryEnable - 0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secBufferInheritInfo, }; // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set @@ -2260,12 +2201,7 @@ tcu::TestStatus submitBufferCountNonZero(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkEventCreateInfo eventCreateInfo = @@ -2303,9 +2239,7 @@ tcu::TestStatus submitBufferCountNonZero(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask BUFFER_COUNT, // commandBufferCount cmdBuffers, // pCommandBuffers 0u, // signalSemaphoreCount @@ -2360,12 +2294,7 @@ tcu::TestStatus submitBufferCountEqualZero(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkEventCreateInfo eventCreateInfo = @@ -2404,9 +2333,7 @@ tcu::TestStatus submitBufferCountEqualZero(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &cmdBuffers[0], // pCommandBuffers 0u, // signalSemaphoreCount @@ -2419,6 +2346,7 @@ tcu::TestStatus submitBufferCountEqualZero(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &cmdBuffers[1], // pCommandBuffers 0u, // signalSemaphoreCount @@ -2431,7 +2359,7 @@ tcu::TestStatus submitBufferCountEqualZero(Context& context) VK_CHECK(vk.queueSubmit(queue, 0, &submitInfoCountZero, fenceZero.get())); VK_CHECK(vk.queueSubmit(queue, 1, &submitInfoCountOne, fenceOne.get())); - const VkFence fences[] = + const VkFence fences[] = { fenceZero.get(), fenceOne.get(), @@ -2483,12 +2411,7 @@ tcu::TestStatus submitBufferNullFence(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkEventCreateInfo eventCreateInfo = @@ -2526,9 +2449,7 @@ tcu::TestStatus submitBufferNullFence(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &cmdBuffers[0], // pCommandBuffers 0u, // signalSemaphoreCount @@ -2541,9 +2462,7 @@ tcu::TestStatus submitBufferNullFence(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &cmdBuffers[1], // pCommandBuffers 0u, // signalSemaphoreCount @@ -2609,6 +2528,13 @@ tcu::TestStatus executeSecondaryBufferTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, DE_NULL, // renderPass 0u, // subpass DE_NULL, // framebuffer @@ -2616,18 +2542,12 @@ tcu::TestStatus executeSecondaryBufferTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secCmdBufBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secCmdBufInheritInfo, }; // Fill create info struct for event @@ -2678,9 +2598,7 @@ tcu::TestStatus executeSecondaryBufferTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1u, // commandBufferCount &primCmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -2747,6 +2665,13 @@ tcu::TestStatus executeSecondaryBufferTwiceTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, 0, // flags + (const VkCommandBufferInheritanceInfo*)DE_NULL, + }; + + const VkCommandBufferInheritanceInfo secCmdBufInheritInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, (VkRenderPass)0u, // renderPass 0u, // subpass (VkFramebuffer)0u, // framebuffer @@ -2754,18 +2679,12 @@ tcu::TestStatus executeSecondaryBufferTwiceTest(Context& context) (VkQueryControlFlags)0u, // queryFlags (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics }; - const VkCommandBufferBeginInfo secCmdBufBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, // flags - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + &secCmdBufInheritInfo, }; // Fill create info struct for event @@ -2791,7 +2710,7 @@ tcu::TestStatus executeSecondaryBufferTwiceTest(Context& context) VkPipelineStageFlags stageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; // wait for event - vk.cmdWaitEvents(cmdBuffers[ndx], 1, &eventOne.get(), stageMask, stageMask, 0, DE_NULL); + vk.cmdWaitEvents(cmdBuffers[ndx], 1, &eventOne.get(), stageMask, stageMask, 0, DE_NULL, 0u, DE_NULL, 0u, DE_NULL); } // end recording of secondary buffers VK_CHECK(vk.endCommandBuffer(cmdBuffers[ndx])); @@ -2830,9 +2749,7 @@ tcu::TestStatus executeSecondaryBufferTwiceTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBufOne.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -2851,9 +2768,7 @@ tcu::TestStatus executeSecondaryBufferTwiceTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &primCmdBufTwo.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -2981,40 +2896,39 @@ tcu::TestStatus orderBindPipelineTest(Context& context) const Unique pipelineBad (createComputePipeline(vk, device, (VkPipelineCache)0u, &createInfoBad)); const VkAccessFlags inputBit = (VK_ACCESS_UNIFORM_READ_BIT); - const VkBufferMemoryBarrier bufferBarrierA = + const VkBufferMemoryBarrier bufferBarriers[] = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *bufferA, // buffer - (VkDeviceSize)0u, // offset - (VkDeviceSize)bufferSizeA, // size - }; - - const VkBufferMemoryBarrier bufferBarrierB = - { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *bufferB, // buffer - (VkDeviceSize)0u, // offset - (VkDeviceSize)bufferSizeB, // size + { + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *bufferA, // buffer + (VkDeviceSize)0u, // offset + (VkDeviceSize)bufferSizeA, // size + }, + { + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *bufferB, // buffer + (VkDeviceSize)0u, // offset + (VkDeviceSize)bufferSizeB, // size + } }; const deUint32 numSrcBuffers = 1u; const deUint32* const dynamicOffsets = (DE_NULL); const deUint32 numDynamicOffsets = (0); - const void* const preBarriers[] = { &bufferBarrierA, &bufferBarrierB }; const int numPreBarriers = numSrcBuffers; - const void* const postBarriers[] = { result.getResultReadBarrier() }; - const int numPostBarriers = DE_LENGTH_OF_ARRAY(postBarriers); + const vk::VkBufferMemoryBarrier* const postBarriers = result.getResultReadBarrier(); + const int numPostBarriers = 1; const tcu::Vec4 refQuadrantValue14 = (colorA2); const tcu::Vec4 refQuadrantValue23 = (colorA1); const tcu::Vec4 references[4] = @@ -3060,12 +2974,7 @@ tcu::TestStatus orderBindPipelineTest(Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const Unique cmdCompleteFence (createFence(vk, device, &fenceCreateInfo)); @@ -3078,10 +2987,16 @@ tcu::TestStatus orderBindPipelineTest(Context& context) vk.cmdBindDescriptorSets(*cmd, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0, numDescriptorSets, descriptorSets, numDynamicOffsets, dynamicOffsets); if (numPreBarriers) - vk.cmdPipelineBarrier(*cmd, 0u, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_FALSE, numPreBarriers, preBarriers); + vk.cmdPipelineBarrier(*cmd, 0u, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + numPreBarriers, bufferBarriers, + 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdDispatch(*cmd, numWorkGroups.x(), numWorkGroups.y(), numWorkGroups.z()); - vk.cmdPipelineBarrier(*cmd, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, numPostBarriers, postBarriers); + vk.cmdPipelineBarrier(*cmd, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + numPostBarriers, postBarriers, + 0, (const VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vk.endCommandBuffer(*cmd)); // run @@ -3092,9 +3007,7 @@ tcu::TestStatus orderBindPipelineTest(Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores - // TODO: The following field is in api spec 1.0 37bedec32143807010323f126ad685ab5e9d98de - // TODO: but not in the header Loader and Tools 69d4893b673bd552e445ba999ad0e73463d35007 - // DE_NULL, // pWaitDstStageMask + (const VkPipelineStageFlags*)DE_NULL, // pWaitDstStageMask 1, // commandBufferCount &cmd.get(), // pCommandBuffers 0u, // signalSemaphoreCount diff --git a/external/vulkancts/modules/vulkan/api/vktApiComputeInstanceResultBuffer.hpp b/external/vulkancts/modules/vulkan/api/vktApiComputeInstanceResultBuffer.hpp index f379a5f..37908ca 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiComputeInstanceResultBuffer.hpp +++ b/external/vulkancts/modules/vulkan/api/vktApiComputeInstanceResultBuffer.hpp @@ -62,7 +62,7 @@ public: inline vk::VkBuffer getBuffer(void) const { return *m_buffer; } - inline const void * getResultReadBarrier(void) const { return &m_bufferBarrier; } + inline const vk::VkBufferMemoryBarrier* getResultReadBarrier(void) const { return &m_bufferBarrier; } private: static vk::Move createResultBuffer(const vk::DeviceInterface &vki, diff --git a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp index 9510427..5a4beab 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp @@ -342,13 +342,6 @@ void CopiesAndBlittingTestInstance::uploadImage(tcu::ConstPixelBufferAccess imag } }; - const void* preCopyBarriers[2] = - { - &preBufferBarrier, - &preImageBarrier - }; - const void* const postCopyBarrier = &postImageBarrier; - const VkBufferImageCopy copyRegion = { 0u, // VkDeviceSize bufferOffset; @@ -361,7 +354,11 @@ void CopiesAndBlittingTestInstance::uploadImage(tcu::ConstPixelBufferAccess imag 1u, // deUint32 layerCount; }, { 0, 0, 0 }, // VkOffset3D imageOffset; - { imageAccess.getWidth(), imageAccess.getHeight(), 1u } // VkExtent3D imageExtent; + { + (deUint32)imageAccess.getWidth(), + (deUint32)imageAccess.getHeight(), + 1u + } // VkExtent3D imageExtent; }; // Write buffer data @@ -369,23 +366,18 @@ void CopiesAndBlittingTestInstance::uploadImage(tcu::ConstPixelBufferAccess imag flushMappedMemoryRange(vk, vkDevice, bufferAlloc->getMemory(), bufferAlloc->getOffset(), bufferSize); // Copy buffer to image - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 2u, preCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &preBufferBarrier, 1, &preImageBarrier); vk.cmdCopyBufferToImage(*cmdBuffer, *buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, ©Region); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1u, &postCopyBarrier); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); const VkSubmitInfo submitInfo = @@ -394,6 +386,7 @@ void CopiesAndBlittingTestInstance::uploadImage(tcu::ConstPixelBufferAccess imag DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -549,9 +542,6 @@ de::MovePtr CopiesAndBlittingTestInstance::readImage (const v pixelDataSize // VkDeviceSize size; }; - const void* const imageBarrierPtr = &imageBarrier; - const void* const bufferBarrierPtr = &bufferBarrier; - // Copy image to buffer const VkBufferImageCopy copyRegion = @@ -564,23 +554,18 @@ de::MovePtr CopiesAndBlittingTestInstance::readImage (const v imageSize // VkExtent3D imageExtent; }; - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vk.cmdCopyImageToBuffer(*cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1, ©Region); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); const VkSubmitInfo submitInfo = @@ -589,6 +574,7 @@ de::MovePtr CopiesAndBlittingTestInstance::readImage (const v DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -630,6 +616,23 @@ CopyImageToImage::CopyImageToImage (Context& context, TestParams params) const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); + VkImageFormatProperties properties; + if ((context.getInstanceInterface().getPhysicalDeviceImageFormatProperties (context.getPhysicalDevice(), + m_params.src.image.format, + VK_IMAGE_TYPE_2D, + VK_IMAGE_TILING_OPTIMAL, + VK_IMAGE_USAGE_TRANSFER_SRC_BIT, 0, + &properties) == VK_ERROR_FORMAT_NOT_SUPPORTED) || + (context.getInstanceInterface().getPhysicalDeviceImageFormatProperties (context.getPhysicalDevice(), + m_params.dst.image.format, + VK_IMAGE_TYPE_2D, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_BLIT_DST_BIT, 0, + &properties) == VK_ERROR_FORMAT_NOT_SUPPORTED)) + { + TCU_THROW(NotSupportedError, "Format not supported"); + } + // Create source image { const VkImageCreateInfo sourceImageParams = @@ -691,12 +694,12 @@ tcu::TestStatus CopyImageToImage::iterate() m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth)); - generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth); + generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, FILL_MODE_WHITE); m_destinationTextureLevel = de::MovePtr(new tcu::TextureLevel(dstTcuFormat, (int)m_params.dst.image.extent.width, (int)m_params.dst.image.extent.height, (int)m_params.dst.image.extent.depth)); - generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth); + generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, FILL_MODE_SEQUENTIAL); generateExpectedResult(); uploadImage(m_sourceTextureLevel->getAccess(), m_source.get()); @@ -752,26 +755,18 @@ tcu::TestStatus CopyImageToImage::iterate() } }; - const void* const srcImageBarrierPtr = &srcImageBarrier; - const void* const dstImageBarrierPtr = &dstImageBarrier; - - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &srcImageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &srcImageBarrier); vk.cmdCopyImage(*m_cmdBuffer, m_source.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), imageCopies); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &dstImageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &dstImageBarrier); VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer)); const VkSubmitInfo submitInfo = @@ -780,6 +775,7 @@ tcu::TestStatus CopyImageToImage::iterate() DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -895,10 +891,13 @@ CopyBufferToBuffer::CopyBufferToBuffer (Context& context, TestParams params) tcu::TestStatus CopyBufferToBuffer::iterate() { - m_sourceTextureLevel = de::MovePtr(new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), (int)m_params.src.buffer.size, 1)); - generateBuffer(m_sourceTextureLevel->getAccess(), (int)m_params.src.buffer.size, 1, 1, FILL_MODE_RED); - m_destinationTextureLevel = de::MovePtr(new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), (int)m_params.dst.buffer.size, 1)); - generateBuffer(m_destinationTextureLevel->getAccess(), (int)m_params.dst.buffer.size, 1, 1, FILL_MODE_WHITE); + const int srcLevelWidth = (int)(m_params.src.buffer.size/4); // Here the format is VK_FORMAT_R32_UINT, we need to divide the buffer size by 4 + m_sourceTextureLevel = de::MovePtr(new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), srcLevelWidth, 1)); + generateBuffer(m_sourceTextureLevel->getAccess(), srcLevelWidth, 1, 1, FILL_MODE_RED); + + const int dstLevelWidth = (int)(m_params.dst.buffer.size/4); + m_destinationTextureLevel = de::MovePtr(new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), dstLevelWidth, 1)); + generateBuffer(m_destinationTextureLevel->getAccess(), dstLevelWidth, 1, 1, FILL_MODE_WHITE); generateExpectedResult(); @@ -935,30 +934,22 @@ tcu::TestStatus CopyBufferToBuffer::iterate() m_params.dst.buffer.size // VkDeviceSize size; }; - const void* const srcBufferBarrierPtr = &srcBufferBarrier; - const void* const dstBufferBarrierPtr = &dstBufferBarrier; - VkBufferCopy* bufferCopies = ((VkBufferCopy*)deMalloc(m_params.regions.size() * sizeof(VkBufferCopy))); for (deUint32 i = 0; i < m_params.regions.size(); i++) bufferCopies[i] = m_params.regions[i].bufferCopy; - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &srcBufferBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &srcBufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdCopyBuffer(*m_cmdBuffer, m_source.get(), m_destination.get(), (deUint32)m_params.regions.size(), bufferCopies); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &dstBufferBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &dstBufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer)); const VkSubmitInfo submitInfo = @@ -967,6 +958,7 @@ tcu::TestStatus CopyBufferToBuffer::iterate() DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -978,7 +970,7 @@ tcu::TestStatus CopyBufferToBuffer::iterate() VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity */)); // Read buffer data - de::MovePtr resultLevel (new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), (int)m_params.dst.buffer.size, 1)); + de::MovePtr resultLevel (new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), dstLevelWidth, 1)); invalidateMappedMemoryRange(vk, vkDevice, m_destinationBufferAlloc->getMemory(), m_destinationBufferAlloc->getOffset(), m_params.dst.buffer.size); tcu::copy(*resultLevel, tcu::ConstPixelBufferAccess(resultLevel->getFormat(), resultLevel->getSize(), m_destinationBufferAlloc->getHostPtr())); deFree(bufferCopies); @@ -1144,31 +1136,23 @@ tcu::TestStatus CopyImageToBuffer::iterate() m_bufferSize // VkDeviceSize size; }; - const void* const imageBarrierPtr = &imageBarrier; - const void* const bufferBarrierPtr = &bufferBarrier; - // Copy from image to buffer VkBufferImageCopy* bufferImageCopies = ((VkBufferImageCopy*)deMalloc(m_params.regions.size() * sizeof(VkBufferImageCopy))); for (deUint32 i = 0; i < m_params.regions.size(); i++) bufferImageCopies[i] = m_params.regions[i].bufferImageCopy; - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vk.cmdCopyImageToBuffer(*m_cmdBuffer, m_source.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), (deUint32)m_params.regions.size(), bufferImageCopies); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer)); const VkSubmitInfo submitInfo = @@ -1177,6 +1161,7 @@ tcu::TestStatus CopyImageToBuffer::iterate() DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -1232,9 +1217,9 @@ void CopyImageToBuffer::copyRegionToTextureLevel(tcu::ConstPixelBufferAccess src const VkOffset3D srcOffset = region.bufferImageCopy.imageOffset; const int texelOffset = (int) region.bufferImageCopy.bufferOffset / texelSize; - for (int z = 0; z < extent.depth; z++) + for (deUint32 z = 0; z < extent.depth; z++) { - for (int y = 0; y < extent.height; y++) + for (deUint32 y = 0; y < extent.height; y++) { int texelIndex = texelOffset + (z * imageHeight + y) * rowLength; const tcu::ConstPixelBufferAccess srcSubRegion = tcu::getSubregion(src, srcOffset.x, srcOffset.y + y, srcOffset.z + z, @@ -1326,12 +1311,12 @@ CopyBufferToImage::CopyBufferToImage (Context& context, TestParams testParams) tcu::TestStatus CopyBufferToImage::iterate() { m_sourceTextureLevel = de::MovePtr(new tcu::TextureLevel(m_textureFormat, (int)m_params.src.buffer.size, 1)); - generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth); + generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, FILL_MODE_WHITE); m_destinationTextureLevel = de::MovePtr(new tcu::TextureLevel(m_textureFormat, m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth)); - generateBuffer(m_destinationTextureLevel->getAccess(), (int)m_params.dst.buffer.size, 1, 1); + generateBuffer(m_destinationTextureLevel->getAccess(), (int)m_params.dst.buffer.size, 1, 1, FILL_MODE_SEQUENTIAL); generateExpectedResult(); @@ -1377,31 +1362,23 @@ tcu::TestStatus CopyBufferToImage::iterate() } }; - const void* const bufferBarrierPtr = &bufferBarrier; - const void* const imageBarrierPtr = &imageBarrier; - // Copy from buffer to image VkBufferImageCopy* bufferImageCopies = ((VkBufferImageCopy*)deMalloc(m_params.regions.size() * sizeof(VkBufferImageCopy))); for (deUint32 i = 0; i < m_params.regions.size(); i++) bufferImageCopies[i] = m_params.regions[i].bufferImageCopy; - VkCommandBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdCopyBufferToImage(*m_cmdBuffer, m_source.get(), m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), bufferImageCopies); - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer)); const VkSubmitInfo submitInfo = @@ -1410,6 +1387,7 @@ tcu::TestStatus CopyBufferToImage::iterate() DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -1463,9 +1441,9 @@ void CopyBufferToImage::copyRegionToTextureLevel(tcu::ConstPixelBufferAccess src const VkOffset3D dstOffset = region.bufferImageCopy.imageOffset; const int texelOffset = (int) region.bufferImageCopy.bufferOffset / texelSize; - for (int z = 0; z < extent.depth; z++) + for (deUint32 z = 0; z < extent.depth; z++) { - for (int y = 0; y < extent.height; y++) + for (deUint32 y = 0; y < extent.height; y++) { int texelIndex = texelOffset + (z * imageHeight + y) * rowLength; const tcu::ConstPixelBufferAccess srcSubRegion = tcu::getSubregion(src, texelIndex, 0, region.bufferImageCopy.imageExtent.width, 1); diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp index a9363e4..f618893 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp @@ -275,7 +275,7 @@ bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDev deUint32 limitToCheck = featureLimitTable[ndx].uintVal; if (featureLimitTable[ndx].unsuppTableNdx != -1) { - if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset))) + if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset)) == VK_FALSE) limitToCheck = unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].uintVal; } @@ -308,7 +308,7 @@ bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDev float limitToCheck = featureLimitTable[ndx].floatVal; if (featureLimitTable[ndx].unsuppTableNdx != -1) { - if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset))) + if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset)) == VK_FALSE) limitToCheck = unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].floatVal; } @@ -340,7 +340,7 @@ bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDev deInt32 limitToCheck = featureLimitTable[ndx].intVal; if (featureLimitTable[ndx].unsuppTableNdx != -1) { - if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset))) + if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset)) == VK_FALSE) limitToCheck = unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].intVal; } if (featureLimitTable[ndx].type == LIMIT_TYPE_MIN) @@ -371,7 +371,7 @@ bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDev deUint64 limitToCheck = featureLimitTable[ndx].deviceSizeVal; if (featureLimitTable[ndx].unsuppTableNdx != -1) { - if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset))) + if (*((VkBool32*)((char*)features+unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].featureOffset)) == VK_FALSE) limitToCheck = unsupportedFeatureTable[featureLimitTable[ndx].unsuppTableNdx].deviceSizeVal; } diff --git a/external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp index e5cdc79..3f610f1 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp @@ -293,7 +293,10 @@ struct Instance { typedef VkInstance Type; - enum { MAX_CONCURRENT = 32 }; + static deUint32 getMaxConcurrent (Context&) + { + return 32; + } struct Parameters { @@ -337,7 +340,10 @@ struct Device { typedef VkDevice Type; - enum { MAX_CONCURRENT = 32 }; + static deUint32 getMaxConcurrent (Context&) + { + return 32; + } struct Parameters { @@ -428,7 +434,10 @@ struct DeviceMemory { typedef VkDeviceMemory Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context& context) + { + return context.getDeviceProperties().limits.maxMemoryAllocationCount; + } struct Parameters { @@ -481,7 +490,10 @@ struct Buffer { typedef VkBuffer Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -522,7 +534,10 @@ struct BufferView { typedef VkBufferView Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -576,7 +591,10 @@ struct Image { typedef VkImage Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -648,7 +666,10 @@ struct ImageView { typedef VkImageView Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -706,7 +727,10 @@ struct Semaphore { typedef VkSemaphore Type; - enum { MAX_CONCURRENT = 100 }; + static deUint32 getMaxConcurrent (Context&) + { + return 100; + } struct Parameters { @@ -739,7 +763,10 @@ struct Fence { typedef VkFence Type; - enum { MAX_CONCURRENT = 100 }; + static deUint32 getMaxConcurrent (Context&) + { + return 100; + } struct Parameters { @@ -772,7 +799,10 @@ struct Event { typedef VkEvent Type; - enum { MAX_CONCURRENT = 100 }; + static deUint32 getMaxConcurrent (Context&) + { + return 100; + } struct Parameters { @@ -805,7 +835,10 @@ struct QueryPool { typedef VkQueryPool Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -847,7 +880,10 @@ struct ShaderModule { typedef VkShaderModule Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -928,7 +964,10 @@ struct PipelineCache { typedef VkPipelineCache Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -959,7 +998,10 @@ struct Sampler { typedef VkSampler Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context& context) + { + return context.getDeviceProperties().limits.maxSamplerAllocationCount; + } struct Parameters { @@ -970,6 +1012,7 @@ struct Sampler VkSamplerAddressMode addressModeV; VkSamplerAddressMode addressModeW; float mipLodBias; + VkBool32 anisotropyEnable; float maxAnisotropy; VkBool32 compareEnable; VkCompareOp compareOp; @@ -982,11 +1025,12 @@ struct Sampler Parameters (void) : magFilter (VK_FILTER_NEAREST) , minFilter (VK_FILTER_NEAREST) - , mipmapMode (VK_SAMPLER_MIPMAP_MODE_BASE) + , mipmapMode (VK_SAMPLER_MIPMAP_MODE_NEAREST) , addressModeU (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE) , addressModeV (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE) , addressModeW (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE) , mipLodBias (0.0f) + , anisotropyEnable (VK_FALSE) , maxAnisotropy (1.0f) , compareEnable (VK_FALSE) , compareOp (VK_COMPARE_OP_ALWAYS) @@ -1016,6 +1060,7 @@ struct Sampler params.addressModeV, params.addressModeW, params.mipLodBias, + params.anisotropyEnable, params.maxAnisotropy, params.compareEnable, params.compareOp, @@ -1033,7 +1078,10 @@ struct DescriptorSetLayout { typedef VkDescriptorSetLayout Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1138,7 +1186,10 @@ struct PipelineLayout { typedef VkPipelineLayout Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1201,7 +1252,10 @@ struct RenderPass { typedef VkRenderPass Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } // \todo [2015-09-17 pyry] More interesting configurations struct Parameters @@ -1289,7 +1343,10 @@ struct GraphicsPipeline { typedef VkPipeline Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } // \todo [2015-09-17 pyry] More interesting configurations struct Parameters @@ -1503,7 +1560,10 @@ struct ComputePipeline { typedef VkPipeline Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } // \todo [2015-09-17 pyry] More interesting configurations struct Parameters @@ -1570,7 +1630,10 @@ struct DescriptorPool { typedef VkDescriptorPool Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1622,7 +1685,10 @@ struct DescriptorSet { typedef VkDescriptorSet Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1688,7 +1754,10 @@ struct Framebuffer { typedef VkFramebuffer Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1755,7 +1824,10 @@ struct CommandPool { typedef VkCommandPool Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1789,7 +1861,10 @@ struct CommandBuffer { typedef VkCommandBuffer Type; - enum { MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT_OBJECTS }; + static deUint32 getMaxConcurrent (Context&) + { + return DEFAULT_MAX_CONCURRENT_OBJECTS; + } struct Parameters { @@ -1883,7 +1958,7 @@ tcu::TestStatus createMaxConcurrentTest (Context& context, typename Object::Para typedef Unique UniqueObject; typedef SharedPtr ObjectPtr; - const deUint32 numObjects = Object::MAX_CONCURRENT; + const deUint32 numObjects = Object::getMaxConcurrent(context); const Environment env (context, numObjects); const typename Object::Resources res (env, params); vector objects (numObjects); @@ -2014,10 +2089,10 @@ tcu::TestStatus multithreadedCreatePerThreadDeviceTest (Context& context, typena template tcu::TestStatus createSingleAllocCallbacksTest (Context& context, typename Object::Parameters params) { - const deUint32 noCmdScope = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - | VK_SYSTEM_ALLOCATION_SCOPE_DEVICE - | VK_SYSTEM_ALLOCATION_SCOPE_CACHE - | VK_SYSTEM_ALLOCATION_SCOPE_OBJECT; + const deUint32 noCmdScope = (1u << VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE) + | (1u << VK_SYSTEM_ALLOCATION_SCOPE_DEVICE) + | (1u << VK_SYSTEM_ALLOCATION_SCOPE_CACHE) + | (1u << VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); // Callbacks used by resources AllocationCallbackRecorder resCallbacks (getSystemAllocator(), 128); diff --git a/external/vulkancts/modules/vulkan/api/vktApiSmokeTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiSmokeTests.cpp index 58037dd..a694381 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiSmokeTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiSmokeTests.cpp @@ -78,11 +78,12 @@ tcu::TestStatus createSamplerTest (Context& context) 0u, // flags VK_FILTER_NEAREST, // magFilter VK_FILTER_NEAREST, // minFilter - VK_SAMPLER_MIPMAP_MODE_BASE, // mipmapMode + VK_SAMPLER_MIPMAP_MODE_NEAREST, // mipmapMode VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // addressModeU VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // addressModeV VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // addressModeW 0.0f, // mipLodBias + VK_FALSE, // anisotropyEnable 1.0f, // maxAnisotropy DE_FALSE, // compareEnable VK_COMPARE_OP_ALWAYS, // compareOp @@ -131,12 +132,12 @@ void createTriangleAsmProgs (SourceCollections& dst) " OpName %4 \"main\"\n" " OpName %10 \"gl_Position\"\n" " OpName %12 \"a_position\"\n" - " OpName %16 \"gl_VertexID\"\n" - " OpName %17 \"gl_InstanceID\"\n" + " OpName %16 \"gl_VertexIndex\"\n" + " OpName %17 \"gl_InstanceIndex\"\n" " OpDecorate %10 BuiltIn Position\n" " OpDecorate %12 Location 0\n" - " OpDecorate %16 BuiltIn VertexId\n" - " OpDecorate %17 BuiltIn InstanceId\n" + " OpDecorate %16 BuiltIn VertexIndex\n" + " OpDecorate %17 BuiltIn InstanceIndex\n" "%2 = OpTypeVoid\n" "%3 = OpTypeFunction %2\n" "%7 = OpTypeFloat 32\n" @@ -254,7 +255,7 @@ tcu::TestStatus renderTriangleTest (Context& context) 0u, // flags VK_IMAGE_TYPE_2D, // imageType VK_FORMAT_R8G8B8A8_UNORM, // format - { renderSize.x(), renderSize.y(), 1 }, // extent + { (deUint32)renderSize.x(), (deUint32)renderSize.y(), 1 }, // extent 1u, // mipLevels 1u, // arraySize VK_SAMPLE_COUNT_1_BIT, // samples @@ -432,8 +433,8 @@ tcu::TestStatus renderTriangleTest (Context& context) 0u, // y }, // offset { - renderSize.x(), // width - renderSize.y(), // height + (deUint32)renderSize.x(), // width + (deUint32)renderSize.y(), // height }, // extent; }; const VkPipelineViewportStateCreateInfo viewportParams = @@ -604,12 +605,7 @@ tcu::TestStatus renderTriangleTest (Context& context) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - DE_NULL, // renderPass - 0u, // subpass - DE_NULL, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0u, // queryFlags - (VkQueryPipelineStatisticFlags)0u, // pipelineStatistics + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Record commands @@ -643,8 +639,7 @@ tcu::TestStatus renderTriangleTest (Context& context) 1u, // layerCount } // subresourceRange }; - const void* barriers[] = { &vertFlushBarrier, &colorAttBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, (VkDependencyFlags)0, 1, &vertFlushBarrier, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &colorAttBarrier); } { @@ -655,7 +650,10 @@ tcu::TestStatus renderTriangleTest (Context& context) DE_NULL, // pNext *renderPass, // renderPass *framebuffer, // framebuffer - { { 0, 0 }, { renderSize.x(), renderSize.y() } }, // renderArea + { + { 0, 0 }, + { (deUint32)renderSize.x(), (deUint32)renderSize.y() } + }, // renderArea 1u, // clearValueCount &clearValue, // pClearValues }; @@ -690,8 +688,7 @@ tcu::TestStatus renderTriangleTest (Context& context) 1u, // arraySize } // subresourceRange }; - const void* barriers[] = { &renderFinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &renderFinishBarrier); } { @@ -707,7 +704,11 @@ tcu::TestStatus renderTriangleTest (Context& context) 1u, // layerCount }, // imageSubresource { 0u, 0u, 0u }, // imageOffset - { renderSize.x(), renderSize.y(), 1u } // imageExtent + { + (deUint32)renderSize.x(), + (deUint32)renderSize.y(), + 1u + } // imageExtent }; vk.cmdCopyImageToBuffer(*cmdBuf, *image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *readImageBuffer, 1u, ©Params); } @@ -725,8 +726,7 @@ tcu::TestStatus renderTriangleTest (Context& context) 0u, // offset imageSizeBytes // size }; - const void* barriers[] = { ©FinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, ©FinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vk.endCommandBuffer(*cmdBuf)); @@ -761,6 +761,7 @@ tcu::TestStatus renderTriangleTest (Context& context) DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores + (const VkPipelineStageFlags*)DE_NULL, 1u, // commandBufferCount &cmdBuf.get(), // pCommandBuffers 0u, // signalSemaphoreCount diff --git a/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp b/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp index 0728c16..6a90c62 100644 --- a/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp +++ b/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp @@ -78,12 +78,12 @@ enum ResourceFlag RESOURCE_FLAG_LAST = (1u << 1u) }; -static const char* const s_quadrantGenVertexPosSource = " highp int quadPhase = gl_VertexID % 6;\n" +static const char* const s_quadrantGenVertexPosSource = " highp int quadPhase = gl_VertexIndex % 6;\n" " highp int quadXcoord = int(quadPhase == 1 || quadPhase == 4 || quadPhase == 5);\n" " highp int quadYcoord = int(quadPhase == 2 || quadPhase == 3 || quadPhase == 5);\n" - " highp int quadOriginX = (gl_VertexID / 6) % 2;\n" - " highp int quadOriginY = (gl_VertexID / 6) / 2;\n" - " quadrant_id = gl_VertexID / 6;\n" + " highp int quadOriginX = (gl_VertexIndex / 6) % 2;\n" + " highp int quadOriginY = (gl_VertexIndex / 6) / 2;\n" + " quadrant_id = gl_VertexIndex / 6;\n" " result_position = vec4(float(quadOriginX + quadXcoord - 1), float(quadOriginY + quadYcoord - 1), 0.0, 1.0);\n"; bool isUniformDescriptorType (vk::VkDescriptorType type) @@ -116,6 +116,14 @@ vk::VkImageType viewTypeToImageType (vk::VkImageViewType type) } } +vk::VkImageLayout getImageLayoutForDescriptorType (vk::VkDescriptorType descType) +{ + if (descType == vk::VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) + return vk::VK_IMAGE_LAYOUT_GENERAL; + else + return vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; +} + deUint32 getTextureLevelPyramidDataSize (const tcu::TextureLevelPyramid& srcImage) { deUint32 dataSize = 0; @@ -175,9 +183,9 @@ void writeTextureLevelPyramidData (void* dst, deUint32 dstLen, const tcu::Textur 0, }, // imageOffset { - sliceSize.x(), - sliceSize.y(), - sliceSize.z(), + (deUint32)sliceSize.x(), + (deUint32)sliceSize.y(), + (deUint32)sliceSize.z(), } // imageExtent }; copySlices->push_back(copySlice); @@ -322,7 +330,7 @@ vk::Move SingleTargetRenderInstance::createColorAttachment (const v (vk::VkImageCreateFlags)0, vk::VK_IMAGE_TYPE_2D, // imageType vk::mapTextureFormat(format), // format - { (deInt32)size.x(), (deInt32)size.y(), 1 }, // extent + { size.x(), size.y(), 1u }, // extent 1, // mipLevels 1, // arraySize vk::VK_SAMPLE_COUNT_1_BIT, // samples @@ -525,12 +533,7 @@ void SingleTargetRenderInstance::readRenderTarget (tcu::TextureLevel& dst) vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (vk::VkRenderPass)0u, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0u, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0, + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; const vk::VkImageSubresourceLayers firstSlice = { @@ -546,22 +549,26 @@ void SingleTargetRenderInstance::readRenderTarget (tcu::TextureLevel& dst) m_targetSize.y(), // bufferImageHeight firstSlice, // imageSubresource { 0, 0, 0 }, // imageOffset - { (deInt32)m_targetSize.x(), (deInt32)m_targetSize.y(), 1 } // imageExtent + { m_targetSize.x(), m_targetSize.y(), 1u } // imageExtent }; const de::MovePtr bufferMemory = allocateAndBindObjectMemory(m_vki, m_device, m_allocator, *buffer, vk::MemoryRequirement::HostVisible); const vk::Unique cmd (vk::allocateCommandBuffer(m_vki, m_device, &cmdBufAllocInfo)); const vk::Unique cmdCompleteFence (vk::createFence(m_vki, m_device, &fenceCreateInfo)); - const void* const imageBarrierPtr = &imageBarrier; - const void* const bufferBarrierPtr = &memoryBarrier; const deUint64 infiniteTimeout = ~(deUint64)0u; // copy content to buffer VK_CHECK(m_vki.beginCommandBuffer(*cmd, &cmdBufBeginInfo)); - m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_FALSE, 1, &imageBarrierPtr); + m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &imageBarrier); m_vki.cmdCopyImageToBuffer(*cmd, *m_colorAttachmentImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1, ©Region); - m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_FALSE, 1, &bufferBarrierPtr); + m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, &memoryBarrier, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); VK_CHECK(m_vki.endCommandBuffer(*cmd)); // wait for transfer to complete @@ -572,6 +579,7 @@ void SingleTargetRenderInstance::readRenderTarget (tcu::TextureLevel& dst) DE_NULL, 0u, (const vk::VkSemaphore*)0, + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &cmd.get(), 0u, @@ -637,19 +645,16 @@ tcu::TestStatus SingleTargetRenderInstance::iterate (void) vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (vk::VkRenderPass)0u, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0u, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0, + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; const vk::Unique cmd (vk::allocateCommandBuffer(m_vki, m_device, &cmdBufAllocInfo)); - const void* const imageBarrierPtr = &imageBarrier; VK_CHECK(m_vki.beginCommandBuffer(*cmd, &cmdBufBeginInfo)); - m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_FALSE, 1, &imageBarrierPtr); + m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &imageBarrier); VK_CHECK(m_vki.endCommandBuffer(*cmd)); { @@ -659,6 +664,7 @@ tcu::TestStatus SingleTargetRenderInstance::iterate (void) DE_NULL, 0u, (const vk::VkSemaphore*)0, + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &cmd.get(), 0u, @@ -816,7 +822,7 @@ vk::Move SingleCmdRenderInstance::createPipeline (vk::VkPipeline { vk::VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, DE_NULL, - (vk::VkPipelineTesselationStateCreateFlags)0, + (vk::VkPipelineTessellationStateCreateFlags)0, 3u, // patchControlPoints }; const vk::VkViewport viewport = @@ -830,8 +836,8 @@ vk::Move SingleCmdRenderInstance::createPipeline (vk::VkPipeline }; const vk::VkRect2D renderArea = { - { 0, 0 }, // offset - { (deInt32)m_targetSize.x(), (deInt32)m_targetSize.y() }, // extent + { 0, 0 }, // offset + { m_targetSize.x(), m_targetSize.y() }, // extent }; const vk::VkPipelineViewportStateCreateInfo vpState = { @@ -949,8 +955,8 @@ void SingleCmdRenderInstance::renderToTarget (void) { const vk::VkRect2D renderArea = { - { 0, 0 }, // offset - { (deInt32)m_targetSize.x(), (deInt32)m_targetSize.y() }, // extent + { 0, 0 }, // offset + { m_targetSize.x(), m_targetSize.y() }, // extent }; const vk::VkCommandBufferAllocateInfo mainCmdBufCreateInfo = { @@ -965,12 +971,7 @@ void SingleCmdRenderInstance::renderToTarget (void) vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (vk::VkRenderPass)0u, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0u, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0, + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; const vk::VkCommandBufferAllocateInfo passCmdBufCreateInfo = { @@ -980,12 +981,10 @@ void SingleCmdRenderInstance::renderToTarget (void) vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY, // level 1u, // count }; - const vk::VkCommandBufferBeginInfo passCmdBufBeginInfo = + const vk::VkCommandBufferInheritanceInfo passCmdBufInheritInfo = { - vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, DE_NULL, - vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT | - vk::VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, // flags (vk::VkRenderPass)*m_renderPass, // renderPass 0u, // subpass (vk::VkFramebuffer)*m_framebuffer, // framebuffer @@ -993,6 +992,14 @@ void SingleCmdRenderInstance::renderToTarget (void) (vk::VkQueryControlFlags)0, (vk::VkQueryPipelineStatisticFlags)0, }; + const vk::VkCommandBufferBeginInfo passCmdBufBeginInfo = + { + vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + DE_NULL, + vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT | + vk::VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, // flags + &passCmdBufInheritInfo, + }; const vk::VkFenceCreateInfo fenceCreateInfo = { vk::VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, @@ -1048,6 +1055,7 @@ void SingleCmdRenderInstance::renderToTarget (void) DE_NULL, 0u, (const vk::VkSemaphore*)0, + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &mainCmd.get(), 0u, @@ -1439,39 +1447,38 @@ void BufferRenderInstance::writeDrawCmdBuffer (vk::VkCommandBuffer cmd) const // make host writes device-visible const vk::VkAccessFlags inputBit = (isUniformBuffer) ? (vk::VK_ACCESS_UNIFORM_READ_BIT) : (vk::VK_ACCESS_SHADER_READ_BIT); - const vk::VkBufferMemoryBarrier memoryBarrierA = - { - vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *m_sourceBufferA, // buffer - 0u, // offset - (vk::VkDeviceSize)m_bufferSizeA, // size - }; - const vk::VkBufferMemoryBarrier memoryBarrierB = + const vk::VkBufferMemoryBarrier memoryBarriers[] = { - vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *m_sourceBufferB, // buffer - 0u, // offset - (vk::VkDeviceSize)m_bufferSizeB, // size - }; - const void* const memoryBarriers[2] = - { - &memoryBarrierA, - &memoryBarrierB, + { + vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *m_sourceBufferA, // buffer + 0u, // offset + (vk::VkDeviceSize)m_bufferSizeA, // size + }, + { + vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *m_sourceBufferB, // buffer + 0u, // offset + (vk::VkDeviceSize)m_bufferSizeB, // size + } }; const deUint32 numMemoryBarriers = getInterfaceNumResources(m_shaderInterface); m_vki.cmdBindDescriptorSets(cmd, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, getPipelineLayout(), 0, 1, &m_descriptorSet.get(), numOffsets, dynamicOffsetPtr); - m_vki.cmdPipelineBarrier(cmd, 0u, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_FALSE, numMemoryBarriers, memoryBarriers); + m_vki.cmdPipelineBarrier(cmd, 0u, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + numMemoryBarriers, memoryBarriers, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); m_vki.cmdDraw(cmd, 6 * 4, 1, 0, 0); // render four quads (two separate triangles) } @@ -1504,7 +1511,7 @@ public: void readResultContentsTo (tcu::Vec4 (*results)[4]) const; inline vk::VkBuffer getBuffer (void) const { return *m_buffer; } - inline const void* getResultReadBarrier (void) const { return &m_bufferBarrier; } + inline const vk::VkBufferMemoryBarrier* getResultReadBarrier (void) const { return &m_bufferBarrier; } private: static vk::Move createResultBuffer (const vk::DeviceInterface& vki, @@ -1673,51 +1680,51 @@ vk::Move ComputePipeline::createPipeline (const vk::DeviceInterf class ComputeCommand { public: - ComputeCommand (const vk::DeviceInterface& vki, - vk::VkDevice device, - vk::VkPipeline pipeline, - vk::VkPipelineLayout pipelineLayout, - const tcu::UVec3& numWorkGroups, - int numDescriptorSets, - const vk::VkDescriptorSet* descriptorSets, - int numDynamicOffsets, - const deUint32* dynamicOffsets, - int numPreBarriers, - const void* const* preBarriers, - int numPostBarriers, - const void* const* postBarriers); - - void submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue) const; + ComputeCommand (const vk::DeviceInterface& vki, + vk::VkDevice device, + vk::VkPipeline pipeline, + vk::VkPipelineLayout pipelineLayout, + const tcu::UVec3& numWorkGroups, + int numDescriptorSets, + const vk::VkDescriptorSet* descriptorSets, + int numDynamicOffsets, + const deUint32* dynamicOffsets, + int numPreBarriers, + const vk::VkBufferMemoryBarrier* preBarriers, + int numPostBarriers, + const vk::VkBufferMemoryBarrier* postBarriers); + + void submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue) const; private: - const vk::DeviceInterface& m_vki; - const vk::VkDevice m_device; - const vk::VkPipeline m_pipeline; - const vk::VkPipelineLayout m_pipelineLayout; - const tcu::UVec3 m_numWorkGroups; - const int m_numDescriptorSets; - const vk::VkDescriptorSet* const m_descriptorSets; - const int m_numDynamicOffsets; - const deUint32* const m_dynamicOffsets; - const int m_numPreBarriers; - const void* const* const m_preBarriers; - const int m_numPostBarriers; - const void* const* const m_postBarriers; + const vk::DeviceInterface& m_vki; + const vk::VkDevice m_device; + const vk::VkPipeline m_pipeline; + const vk::VkPipelineLayout m_pipelineLayout; + const tcu::UVec3 m_numWorkGroups; + const int m_numDescriptorSets; + const vk::VkDescriptorSet* const m_descriptorSets; + const int m_numDynamicOffsets; + const deUint32* const m_dynamicOffsets; + const int m_numPreBarriers; + const vk::VkBufferMemoryBarrier* const m_preBarriers; + const int m_numPostBarriers; + const vk::VkBufferMemoryBarrier* const m_postBarriers; }; -ComputeCommand::ComputeCommand (const vk::DeviceInterface& vki, - vk::VkDevice device, - vk::VkPipeline pipeline, - vk::VkPipelineLayout pipelineLayout, - const tcu::UVec3& numWorkGroups, - int numDescriptorSets, - const vk::VkDescriptorSet* descriptorSets, - int numDynamicOffsets, - const deUint32* dynamicOffsets, - int numPreBarriers, - const void* const* preBarriers, - int numPostBarriers, - const void* const* postBarriers) +ComputeCommand::ComputeCommand (const vk::DeviceInterface& vki, + vk::VkDevice device, + vk::VkPipeline pipeline, + vk::VkPipelineLayout pipelineLayout, + const tcu::UVec3& numWorkGroups, + int numDescriptorSets, + const vk::VkDescriptorSet* descriptorSets, + int numDynamicOffsets, + const deUint32* dynamicOffsets, + int numPreBarriers, + const vk::VkBufferMemoryBarrier* preBarriers, + int numPostBarriers, + const vk::VkBufferMemoryBarrier* postBarriers) : m_vki (vki) , m_device (device) , m_pipeline (pipeline) @@ -1741,7 +1748,7 @@ void ComputeCommand::submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue vk::VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, DE_NULL, vk::VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // flags - queueFamilyIndex, // queueFamilyIndex + queueFamilyIndex, // queueFamilyIndex }; const vk::Unique cmdPool (vk::createCommandPool(m_vki, m_device, &cmdPoolCreateInfo)); @@ -1765,12 +1772,7 @@ void ComputeCommand::submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (vk::VkRenderPass)0u, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0u, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0, + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; const vk::Unique cmdCompleteFence (vk::createFence(m_vki, m_device, &fenceCreateInfo)); @@ -1783,10 +1785,16 @@ void ComputeCommand::submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue m_vki.cmdBindDescriptorSets(*cmd, vk::VK_PIPELINE_BIND_POINT_COMPUTE, m_pipelineLayout, 0, m_numDescriptorSets, m_descriptorSets, m_numDynamicOffsets, m_dynamicOffsets); if (m_numPreBarriers) - m_vki.cmdPipelineBarrier(*cmd, 0u, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_FALSE, m_numPreBarriers, m_preBarriers); + m_vki.cmdPipelineBarrier(*cmd, 0u, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + m_numPreBarriers, m_preBarriers, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); m_vki.cmdDispatch(*cmd, m_numWorkGroups.x(), m_numWorkGroups.y(), m_numWorkGroups.z()); - m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_FALSE, m_numPostBarriers, m_postBarriers); + m_vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + m_numPostBarriers, m_postBarriers, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); VK_CHECK(m_vki.endCommandBuffer(*cmd)); // run @@ -1797,6 +1805,7 @@ void ComputeCommand::submitAndWait (deUint32 queueFamilyIndex, vk::VkQueue queue DE_NULL, 0u, (const vk::VkSemaphore*)0, + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &cmd.get(), 0u, @@ -2072,29 +2081,30 @@ tcu::TestStatus BufferComputeInstance::testResourceAccess (void) const ComputePipeline pipeline (m_vki, m_device, m_context.getBinaryCollection(), 1, &descriptorSetLayout.get()); const vk::VkAccessFlags inputBit = (isUniformBuffer) ? (vk::VK_ACCESS_UNIFORM_READ_BIT) : (vk::VK_ACCESS_SHADER_READ_BIT); - const vk::VkBufferMemoryBarrier bufferBarrierA = + const vk::VkBufferMemoryBarrier bufferBarriers[] = { - vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *bufferA, // buffer - (vk::VkDeviceSize)0u, // offset - (vk::VkDeviceSize)bufferSizeA, // size - }; - const vk::VkBufferMemoryBarrier bufferBarrierB = - { - vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - DE_NULL, - vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask - inputBit, // inputMask - vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex - vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex - *bufferB, // buffer - (vk::VkDeviceSize)0u, // offset - (vk::VkDeviceSize)bufferSizeB, // size + { + vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *bufferA, // buffer + (vk::VkDeviceSize)0u, // offset + (vk::VkDeviceSize)bufferSizeA, // size + }, + { + vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_HOST_WRITE_BIT, // outputMask + inputBit, // inputMask + vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex + vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex + *bufferB, // buffer + (vk::VkDeviceSize)0u, // offset + (vk::VkDeviceSize)bufferSizeB, // size + } }; const deUint32 numSrcBuffers = getInterfaceNumResources(m_shaderInterface); @@ -2103,10 +2113,10 @@ tcu::TestStatus BufferComputeInstance::testResourceAccess (void) const int numDescriptorSets = DE_LENGTH_OF_ARRAY(descriptorSets); const deUint32* const dynamicOffsets = (m_setDynamicOffset) ? (bindTimeOffsets) : (DE_NULL); const deUint32 numDynamicOffsets = (m_setDynamicOffset) ? (numSrcBuffers) : (0); - const void* const preBarriers[] = { &bufferBarrierA, &bufferBarrierB }; + const vk::VkBufferMemoryBarrier* const preBarriers = bufferBarriers; const int numPreBarriers = numSrcBuffers; - const void* const postBarriers[] = { m_result.getResultReadBarrier() }; - const int numPostBarriers = DE_LENGTH_OF_ARRAY(postBarriers); + const vk::VkBufferMemoryBarrier* const postBarriers = m_result.getResultReadBarrier(); + const int numPostBarriers = 1; const ComputeCommand compute (m_vki, m_device, @@ -2783,6 +2793,7 @@ private: vk::VkQueue queue, vk::Allocator& allocator, vk::VkImage image, + vk::VkImageLayout layout, const tcu::TextureLevelPyramid& data); protected: @@ -2832,19 +2843,21 @@ ImageInstanceImages::ImageInstanceImages (const vk::DeviceInterface& vki, , m_imageViewA (vk::Move()) , m_imageViewB (vk::Move()) { + const vk::VkImageLayout layout = getImageLayoutForDescriptorType(descriptorType); + DE_ASSERT(numImages == 1 || numImages == 2); populateSourceImage(&m_sourceImageA, true); m_imageA = createImage(vki, device, allocator, descriptorType, viewType, m_sourceImageA, &m_imageMemoryA); m_imageViewA = createImageView(vki, device, viewType, m_sourceImageA, *m_imageA, m_baseMipLevel, m_baseArraySlice); - uploadImage(vki, device, queueFamilyIndex, queue, allocator, *m_imageA, m_sourceImageA); + uploadImage(vki, device, queueFamilyIndex, queue, allocator, *m_imageA, layout, m_sourceImageA); if (numImages == 2) { populateSourceImage(&m_sourceImageB, false); m_imageB = createImage(vki, device, allocator, descriptorType, viewType, m_sourceImageB, &m_imageMemoryB); m_imageViewB = createImageView(vki, device, viewType, m_sourceImageB, *m_imageB, m_baseMipLevel, m_baseArraySlice); - uploadImage(vki, device, queueFamilyIndex, queue, allocator, *m_imageB, m_sourceImageB); + uploadImage(vki, device, queueFamilyIndex, queue, allocator, *m_imageB, layout, m_sourceImageB); } } @@ -2868,13 +2881,13 @@ vk::Move ImageInstanceImages::createImage (const vk::DeviceInterfac const vk::VkExtent3D extent = { // x - (deInt32)baseLevel.getWidth(), + (deUint32)baseLevel.getWidth(), // y - (viewType == vk::VK_IMAGE_VIEW_TYPE_1D || viewType == vk::VK_IMAGE_VIEW_TYPE_1D_ARRAY) ? (1) : (deInt32)baseLevel.getHeight(), + (viewType == vk::VK_IMAGE_VIEW_TYPE_1D || viewType == vk::VK_IMAGE_VIEW_TYPE_1D_ARRAY) ? (1u) : (deUint32)baseLevel.getHeight(), // z - (viewType == vk::VK_IMAGE_VIEW_TYPE_3D) ? ((deInt32)baseLevel.getDepth()) : (1), + (viewType == vk::VK_IMAGE_VIEW_TYPE_3D) ? ((deUint32)baseLevel.getDepth()) : (1u), }; const vk::VkImageCreateInfo createInfo = { @@ -2995,6 +3008,7 @@ void ImageInstanceImages::uploadImage (const vk::DeviceInterface& vki, vk::VkQueue queue, vk::Allocator& allocator, vk::VkImage image, + vk::VkImageLayout layout, const tcu::TextureLevelPyramid& data) { const deUint32 arraySize = (m_viewType == vk::VK_IMAGE_VIEW_TYPE_3D) ? (1) : @@ -3060,7 +3074,7 @@ void ImageInstanceImages::uploadImage (const vk::DeviceInterface& vki, vk::VK_ACCESS_TRANSFER_WRITE_BIT, // outputMask vk::VK_ACCESS_SHADER_READ_BIT, // inputMask vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, // oldLayout - vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, // newLayout + layout, // newLayout vk::VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex vk::VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex image, // image @@ -3087,17 +3101,10 @@ void ImageInstanceImages::uploadImage (const vk::DeviceInterface& vki, vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, vk::VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // flags - (vk::VkRenderPass)0u, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0u, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0, + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; const vk::Unique cmd (vk::allocateCommandBuffer(vki, device, &cmdBufCreateInfo)); - const void* const preBarriers[2] = { &preMemoryBarrier, &preImageBarrier }; - const void* const postBarriers[1] = { &postImageBarrier }; const vk::Unique cmdCompleteFence (vk::createFence(vki, device, &fenceCreateInfo)); const deUint64 infiniteTimeout = ~(deUint64)0u; std::vector copySlices; @@ -3108,9 +3115,15 @@ void ImageInstanceImages::uploadImage (const vk::DeviceInterface& vki, // record command buffer VK_CHECK(vki.beginCommandBuffer(*cmd, &cmdBufBeginInfo)); - vki.cmdPipelineBarrier(*cmd, 0u, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_FALSE, DE_LENGTH_OF_ARRAY(preBarriers), preBarriers); + vki.cmdPipelineBarrier(*cmd, 0u, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, &preMemoryBarrier, + 1, &preImageBarrier); vki.cmdCopyBufferToImage(*cmd, *dataBuffer, image, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)copySlices.size(), ©Slices[0]); - vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, vk::VK_FALSE, DE_LENGTH_OF_ARRAY(postBarriers), postBarriers); + vki.cmdPipelineBarrier(*cmd, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &postImageBarrier); VK_CHECK(vki.endCommandBuffer(*cmd)); // submit and wait for command buffer to complete before killing it @@ -3121,6 +3134,7 @@ void ImageInstanceImages::uploadImage (const vk::DeviceInterface& vki, DE_NULL, 0u, (const vk::VkSemaphore*)0, + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &cmd.get(), 0u, @@ -3402,10 +3416,11 @@ vk::Move ImageFetchRenderInstance::createDescriptorSet (con vk::VkImageView viewA, vk::VkImageView viewB) { + const vk::VkImageLayout imageLayout = getImageLayoutForDescriptorType(descriptorType); const vk::VkDescriptorImageInfo imageInfos[2] = { - makeDescriptorImageInfo(viewA, vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL), - makeDescriptorImageInfo(viewB, vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL), + makeDescriptorImageInfo(viewA, imageLayout), + makeDescriptorImageInfo(viewB, imageLayout), }; const vk::VkDescriptorSetAllocateInfo allocInfo = { @@ -3622,10 +3637,11 @@ vk::Move ImageFetchComputeInstance::createDescriptorPool ( vk::Move ImageFetchComputeInstance::createDescriptorSet (vk::VkDescriptorPool pool, vk::VkDescriptorSetLayout layout) const { const vk::VkDescriptorBufferInfo resultInfo = vk::makeDescriptorBufferInfo(m_result.getBuffer(), 0u, (vk::VkDeviceSize)ComputeInstanceResultBuffer::DATA_SIZE); + const vk::VkImageLayout imageLayout = getImageLayoutForDescriptorType(m_descriptorType); const vk::VkDescriptorImageInfo imageInfos[2] = { - makeDescriptorImageInfo(m_images.getImageViewA(), vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL), - makeDescriptorImageInfo(m_images.getImageViewB(), vk::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL), + makeDescriptorImageInfo(m_images.getImageViewA(), imageLayout), + makeDescriptorImageInfo(m_images.getImageViewB(), imageLayout), }; const vk::VkDescriptorSetAllocateInfo allocInfo = { @@ -3720,10 +3736,10 @@ tcu::TestStatus ImageFetchComputeInstance::testResourceAccess (void) const int numDescriptorSets = DE_LENGTH_OF_ARRAY(descriptorSets); const deUint32* const dynamicOffsets = DE_NULL; const int numDynamicOffsets = 0; - const void* const* preBarriers = DE_NULL; + const vk::VkBufferMemoryBarrier* const preBarriers = DE_NULL; const int numPreBarriers = 0; - const void* const postBarriers[] = { m_result.getResultReadBarrier() }; - const int numPostBarriers = DE_LENGTH_OF_ARRAY(postBarriers); + const vk::VkBufferMemoryBarrier* const postBarriers = m_result.getResultReadBarrier(); + const int numPostBarriers = 1; const ComputeCommand compute (m_vki, m_device, @@ -4037,31 +4053,8 @@ tcu::Sampler ImageSampleInstanceImages::createRefSampler (bool isFirst) vk::Move ImageSampleInstanceImages::createSampler (const vk::DeviceInterface& vki, vk::VkDevice device, const tcu::Sampler& sampler, const tcu::TextureFormat& format) { - const bool compareEnabled = (sampler.compare != tcu::Sampler::COMPAREMODE_NONE); - const vk::VkCompareOp compareOp = (compareEnabled) ? (vk::mapCompareMode(sampler.compare)) : (vk::VK_COMPARE_OP_ALWAYS); - const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type); - const bool isIntTexture = channelClass == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER || channelClass == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER; - const vk::VkBorderColor borderColor = (isIntTexture) ? (vk::VK_BORDER_COLOR_INT_OPAQUE_WHITE) : (vk::VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE); - const vk::VkSamplerCreateInfo createInfo = - { - vk::VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, - DE_NULL, - (vk::VkSamplerCreateFlags)0, - vk::mapFilterMode(sampler.magFilter), // magFilter - vk::mapFilterMode(sampler.minFilter), // minFilter - vk::mapMipmapMode(sampler.minFilter), // mipMode - vk::mapWrapMode(sampler.wrapS), // addressU - vk::mapWrapMode(sampler.wrapT), // addressV - vk::mapWrapMode(sampler.wrapR), // addressW - 0.0f, // mipLodBias - 1, // maxAnisotropy - (vk::VkBool32)(compareEnabled ? vk::VK_TRUE : vk::VK_FALSE), // compareEnable - compareOp, // compareOp - 0.0f, // minLod - 0.0f, // maxLod - borderColor, // borderColor - vk::VK_FALSE, // unnormalizedCoords - }; + const vk::VkSamplerCreateInfo createInfo = vk::mapSampler(sampler, format); + return vk::createSampler(vki, device, &createInfo); } @@ -4165,8 +4158,7 @@ private: static vk::Move createDescriptorPool (const vk::DeviceInterface& vki, vk::VkDevice device, vk::VkDescriptorType descriptorType, - ShaderInputInterface shaderInterface, - bool isImmutable); + ShaderInputInterface shaderInterface); static vk::Move createDescriptorSet (const vk::DeviceInterface& vki, vk::VkDevice device, @@ -4234,7 +4226,7 @@ ImageSampleRenderInstance::ImageSampleRenderInstance (vkt::Context& context, , m_images (m_vki, m_device, m_queueFamilyIndex, m_queue, m_allocator, m_descriptorType, m_shaderInterface, m_viewType, m_baseMipLevel, m_baseArraySlice, isImmutable) , m_descriptorSetLayout (createDescriptorSetLayout(m_vki, m_device, m_descriptorType, m_shaderInterface, m_stageFlags, m_images)) , m_pipelineLayout (createPipelineLayout(m_vki, m_device, *m_descriptorSetLayout)) - , m_descriptorPool (createDescriptorPool(m_vki, m_device, m_descriptorType, m_shaderInterface, isImmutable)) + , m_descriptorPool (createDescriptorPool(m_vki, m_device, m_descriptorType, m_shaderInterface)) , m_descriptorSet (createDescriptorSet(m_vki, m_device, m_descriptorType, m_shaderInterface, *m_descriptorSetLayout, *m_descriptorPool, isImmutable, m_images)) { } @@ -4301,8 +4293,7 @@ vk::Move ImageSampleRenderInstance::createPipelineLayout ( vk::Move ImageSampleRenderInstance::createDescriptorPool (const vk::DeviceInterface& vki, vk::VkDevice device, vk::VkDescriptorType descriptorType, - ShaderInputInterface shaderInterface, - bool isImmutable) + ShaderInputInterface shaderInterface) { vk::DescriptorPoolBuilder builder; @@ -4311,9 +4302,8 @@ vk::Move ImageSampleRenderInstance::createDescriptorPool ( // separate samplers need image to sample builder.addType(vk::VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE); - // samplers needed only if they are specified in the descriptor set - if (!isImmutable) - builder.addType(vk::VK_DESCRIPTOR_TYPE_SAMPLER, getInterfaceNumResources(shaderInterface)); + // also need sample to use, indifferent of whether immutable or not + builder.addType(vk::VK_DESCRIPTOR_TYPE_SAMPLER, getInterfaceNumResources(shaderInterface)); } else if (descriptorType == vk::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) { @@ -4860,10 +4850,10 @@ tcu::TestStatus ImageSampleComputeInstance::testResourceAccess (void) const int numDescriptorSets = DE_LENGTH_OF_ARRAY(descriptorSets); const deUint32* const dynamicOffsets = DE_NULL; const int numDynamicOffsets = 0; - const void* const* preBarriers = DE_NULL; + const vk::VkBufferMemoryBarrier* const preBarriers = DE_NULL; const int numPreBarriers = 0; - const void* const postBarriers[] = { m_result.getResultReadBarrier() }; - const int numPostBarriers = DE_LENGTH_OF_ARRAY(postBarriers); + const vk::VkBufferMemoryBarrier* const postBarriers = m_result.getResultReadBarrier(); + const int numPostBarriers = 1; const ComputeCommand compute (m_vki, m_device, @@ -5265,41 +5255,40 @@ vkt::TestInstance* ImageDescriptorCase::createInstance (vkt::Context& context) c class TexelBufferInstanceBuffers { public: - TexelBufferInstanceBuffers (const vk::DeviceInterface& vki, - vk::VkDevice device, - vk::Allocator& allocator, - vk::VkDescriptorType descriptorType, - int numTexelBuffers, - bool hasViewOffset); + TexelBufferInstanceBuffers (const vk::DeviceInterface& vki, + vk::VkDevice device, + vk::Allocator& allocator, + vk::VkDescriptorType descriptorType, + int numTexelBuffers, + bool hasViewOffset); private: - static vk::Move createBuffer (const vk::DeviceInterface& vki, - vk::VkDevice device, - vk::Allocator& allocator, - vk::VkDescriptorType descriptorType, - de::MovePtr *outAllocation); + static vk::Move createBuffer (const vk::DeviceInterface& vki, + vk::VkDevice device, + vk::Allocator& allocator, + vk::VkDescriptorType descriptorType, + de::MovePtr *outAllocation); - static vk::Move createBufferView (const vk::DeviceInterface& vki, - vk::VkDevice device, - const tcu::TextureFormat& textureFormat, - deUint32 offset, - vk::VkBuffer buffer); + static vk::Move createBufferView (const vk::DeviceInterface& vki, + vk::VkDevice device, + const tcu::TextureFormat& textureFormat, + deUint32 offset, + vk::VkBuffer buffer); - static vk::VkBufferMemoryBarrier createBarrier (vk::VkDescriptorType descriptorType, vk::VkBuffer buffer); + static vk::VkBufferMemoryBarrier createBarrier (vk::VkDescriptorType descriptorType, vk::VkBuffer buffer); - void populateSourceBuffer (const tcu::PixelBufferAccess& access); - void uploadData (const vk::DeviceInterface& vki, vk::VkDevice device, const vk::Allocation& memory, const de::ArrayBuffer& data); + void populateSourceBuffer (const tcu::PixelBufferAccess& access); + void uploadData (const vk::DeviceInterface& vki, vk::VkDevice device, const vk::Allocation& memory, const de::ArrayBuffer& data); public: - static int getFetchPos (int fetchPosNdx); - tcu::Vec4 fetchTexelValue (int fetchPosNdx) const; + static int getFetchPos (int fetchPosNdx); + tcu::Vec4 fetchTexelValue (int fetchPosNdx) const; - inline int getNumTexelBuffers (void) const { return m_numTexelBuffers; } - const tcu::TextureFormat& getTextureFormat (void) const { return m_imageFormat; } - inline vk::VkBufferView getBufferViewA (void) const { return *m_bufferViewA; } - inline vk::VkBufferView getBufferViewB (void) const { return *m_bufferViewB; } - inline const void* getBufferInitBarrierA (void) const { return &m_bufferBarrierA; } - inline const void* getBufferInitBarrierB (void) const { return &m_bufferBarrierB; } + inline int getNumTexelBuffers (void) const { return m_numTexelBuffers; } + const tcu::TextureFormat& getTextureFormat (void) const { return m_imageFormat; } + inline vk::VkBufferView getBufferViewA (void) const { return *m_bufferViewA; } + inline vk::VkBufferView getBufferViewB (void) const { return *m_bufferViewB; } + inline const vk::VkBufferMemoryBarrier* getBufferInitBarriers (void) const { return m_bufferBarriers; } private: enum @@ -5318,23 +5307,22 @@ private: SAMPLE_POINT_3 = 25, }; - const deUint32 m_numTexelBuffers; - const tcu::TextureFormat m_imageFormat; - const deUint32 m_viewOffset; - - de::ArrayBuffer m_sourceBufferA; - de::ArrayBuffer m_sourceBufferB; - const tcu::ConstPixelBufferAccess m_sourceViewA; - const tcu::ConstPixelBufferAccess m_sourceViewB; - - de::MovePtr m_bufferMemoryA; - de::MovePtr m_bufferMemoryB; - const vk::Unique m_bufferA; - const vk::Unique m_bufferB; - const vk::Unique m_bufferViewA; - const vk::Unique m_bufferViewB; - const vk::VkBufferMemoryBarrier m_bufferBarrierA; - const vk::VkBufferMemoryBarrier m_bufferBarrierB; + const deUint32 m_numTexelBuffers; + const tcu::TextureFormat m_imageFormat; + const deUint32 m_viewOffset; + + de::ArrayBuffer m_sourceBufferA; + de::ArrayBuffer m_sourceBufferB; + const tcu::ConstPixelBufferAccess m_sourceViewA; + const tcu::ConstPixelBufferAccess m_sourceViewB; + + de::MovePtr m_bufferMemoryA; + de::MovePtr m_bufferMemoryB; + const vk::Unique m_bufferA; + const vk::Unique m_bufferB; + const vk::Unique m_bufferViewA; + const vk::Unique m_bufferViewB; + vk::VkBufferMemoryBarrier m_bufferBarriers[2]; }; TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (const vk::DeviceInterface& vki, @@ -5362,8 +5350,6 @@ TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (const vk::DeviceInterfac , m_bufferViewB ((numTexelBuffers == 1) ? vk::Move() : createBufferView(vki, device, m_imageFormat, m_viewOffset, *m_bufferB)) - , m_bufferBarrierA (createBarrier(descriptorType, *m_bufferA)) - , m_bufferBarrierB (createBarrier(descriptorType, *m_bufferB)) { DE_ASSERT(numTexelBuffers == 1 || numTexelBuffers == 2); DE_ASSERT(VIEW_WIDTH * m_imageFormat.getPixelSize() == VIEW_DATA_SIZE); @@ -5379,6 +5365,9 @@ TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (const vk::DeviceInterfac populateSourceBuffer(tcu::PixelBufferAccess(m_imageFormat, tcu::IVec3(BUFFER_SIZE / m_imageFormat.getPixelSize(), 1, 1), m_sourceBufferB.getPtr())); uploadData(vki, device, *m_bufferMemoryB, m_sourceBufferB); } + + m_bufferBarriers[0] = createBarrier(descriptorType, *m_bufferA); + m_bufferBarriers[1] = createBarrier(descriptorType, *m_bufferB); } vk::Move TexelBufferInstanceBuffers::createBuffer (const vk::DeviceInterface& vki, @@ -5936,10 +5925,10 @@ tcu::TestStatus TexelBufferComputeInstance::testResourceAccess (void) const int numDescriptorSets = DE_LENGTH_OF_ARRAY(descriptorSets); const deUint32* const dynamicOffsets = DE_NULL; const int numDynamicOffsets = 0; - const void* const preBarriers[] = { m_texelBuffers.getBufferInitBarrierA(), m_texelBuffers.getBufferInitBarrierB() }; + const vk::VkBufferMemoryBarrier* const preBarriers = m_texelBuffers.getBufferInitBarriers(); const int numPreBarriers = m_texelBuffers.getNumTexelBuffers(); - const void* const postBarriers[] = { m_result.getResultReadBarrier() }; - const int numPostBarriers = DE_LENGTH_OF_ARRAY(postBarriers); + const vk::VkBufferMemoryBarrier* const postBarriers = m_result.getResultReadBarrier(); + const int numPostBarriers = 1; const ComputeCommand compute (m_vki, m_device, diff --git a/external/vulkancts/modules/vulkan/compute/vktComputeBasicComputeShaderTests.cpp b/external/vulkancts/modules/vulkan/compute/vktComputeBasicComputeShaderTests.cpp index 20c5e66..da249c0 100644 --- a/external/vulkancts/modules/vulkan/compute/vktComputeBasicComputeShaderTests.cpp +++ b/external/vulkancts/modules/vulkan/compute/vktComputeBasicComputeShaderTests.cpp @@ -237,7 +237,6 @@ tcu::TestStatus SharedVarTestInstance::iterate (void) const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); const VkBufferMemoryBarrier computeFinishBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer, 0ull, bufferSizeBytes); - const void* barriers[] = { &computeFinishBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -251,7 +250,7 @@ tcu::TestStatus SharedVarTestInstance::iterate (void) vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &computeFinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -409,7 +408,6 @@ tcu::TestStatus SharedVarAtomicOpTestInstance::iterate (void) const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); const VkBufferMemoryBarrier computeFinishBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer, 0ull, bufferSizeBytes); - const void* barriers[] = { &computeFinishBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -423,7 +421,7 @@ tcu::TestStatus SharedVarAtomicOpTestInstance::iterate (void) vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1u, &computeFinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -583,7 +581,6 @@ tcu::TestStatus SSBOLocalBarrierTestInstance::iterate (void) const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); const VkBufferMemoryBarrier computeFinishBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer, 0ull, bufferSizeBytes); - const void* barriers[] = { &computeFinishBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -597,7 +594,7 @@ tcu::TestStatus SSBOLocalBarrierTestInstance::iterate (void) vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &computeFinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -789,11 +786,7 @@ tcu::TestStatus CopyImageToSSBOTestInstance::iterate (void) VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, *image, subresourceRange); - const void* preCopyBarriers[] = { &stagingBufferPostHostWriteBarrier, &imagePreCopyBarrier }; - const void* postCopyBarriers[] = { &imagePostCopyBarrier }; - const VkBufferMemoryBarrier computeFinishBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, bufferSizeBytes); - const void* postComputeBarriers[] = { &computeFinishBarrier }; const VkBufferImageCopy copyParams = makeBufferImageCopy(m_imageSize); const tcu::IVec2 workSize = m_imageSize / m_localSize; @@ -810,12 +803,12 @@ tcu::TestStatus CopyImageToSSBOTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, 0u, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preCopyBarriers), preCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, 0u, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &stagingBufferPostHostWriteBarrier, 1, &imagePreCopyBarrier); vk.cmdCopyBufferToImage(*cmdBuffer, *stagingBuffer, *image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, ©Params); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postCopyBarriers), postCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imagePostCopyBarrier); vk.cmdDispatch(*cmdBuffer, workSize.x(), workSize.y(), 1u); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postComputeBarriers), postComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &computeFinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -1005,10 +998,6 @@ tcu::TestStatus CopySSBOToImageTestInstance::iterate (void) const VkBufferMemoryBarrier outputBufferPostCopyBarrier = makeBufferMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, bufferSizeBytes); - const void* preComputeBarriers[] = { &inputBufferPostHostWriteBarrier, &imageLayoutBarrier }; - const void* preCopyBarriers[] = { &imagePreCopyBarrier }; - const void* postCopyBarriers[] = { &outputBufferPostCopyBarrier }; - const VkBufferImageCopy copyParams = makeBufferImageCopy(m_imageSize); const tcu::IVec2 workSize = m_imageSize / m_localSize; @@ -1024,12 +1013,12 @@ tcu::TestStatus CopySSBOToImageTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preComputeBarriers), preComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &inputBufferPostHostWriteBarrier, 1, &imageLayoutBarrier); vk.cmdDispatch(*cmdBuffer, workSize.x(), workSize.y(), 1u); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preCopyBarriers), preCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imagePreCopyBarrier); vk.cmdCopyImageToBuffer(*cmdBuffer, *image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *outputBuffer, 1u, ©Params); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postCopyBarriers), postCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &outputBufferPostCopyBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -1161,7 +1150,7 @@ void BufferToBufferInvertTest::initPrograms (SourceCollections& sourceCollection << "layout(binding = 0) readonly uniform Input {\n" << " uint values[" << m_numValues << "];\n" << "} ub_in;\n" - << "layout(binding = 1) writeonly buffer Output {\n" + << "layout(binding = 1, std140) writeonly buffer Output {\n" << " uint values[" << m_numValues << "];\n" << "} sb_out;\n" << "void main (void) {\n" @@ -1178,10 +1167,10 @@ void BufferToBufferInvertTest::initPrograms (SourceCollections& sourceCollection { src << "#version 310 es\n" << "layout (local_size_x = " << m_localSize.x() << ", local_size_y = " << m_localSize.y() << ", local_size_z = " << m_localSize.z() << ") in;\n" - << "layout(binding = 0) readonly buffer Input {\n" + << "layout(binding = 0, std140) readonly buffer Input {\n" << " uint values[" << m_numValues << "];\n" << "} sb_in;\n" - << "layout (binding = 1) writeonly buffer Output {\n" + << "layout (binding = 1, std140) writeonly buffer Output {\n" << " uint values[" << m_numValues << "];\n" << "} sb_out;\n" << "void main (void) {\n" @@ -1232,16 +1221,16 @@ tcu::TestStatus BufferToBufferInvertTestInstance::iterate (void) // Create an input buffer - const VkDeviceSize bufferSizeBytes = sizeof(deUint32) * m_numValues; + const VkDeviceSize bufferSizeBytes = sizeof(tcu::UVec4) * m_numValues; const Buffer inputBuffer(vk, device, allocator, makeBufferCreateInfo(bufferSizeBytes, inputBufferUsageFlags), MemoryRequirement::HostVisible); // Fill the input buffer with data { de::Random rnd(randomSeed); const Allocation& inputBufferAllocation = inputBuffer.getAllocation(); - deUint32* bufferPtr = static_cast(inputBufferAllocation.getHostPtr()); + tcu::UVec4* bufferPtr = static_cast(inputBufferAllocation.getHostPtr()); for (deUint32 i = 0; i < m_numValues; ++i) - *bufferPtr++ = rnd.getUint32(); + bufferPtr[i].x() = rnd.getUint32(); flushMappedMemoryRange(vk, device, inputBufferAllocation.getMemory(), inputBufferAllocation.getOffset(), bufferSizeBytes); } @@ -1280,10 +1269,8 @@ tcu::TestStatus BufferToBufferInvertTestInstance::iterate (void) const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); const VkBufferMemoryBarrier hostWriteBarrier = makeBufferMemoryBarrier(VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, *inputBuffer, 0ull, bufferSizeBytes); - const void* preComputeBarriers[] = { &hostWriteBarrier }; const VkBufferMemoryBarrier shaderWriteBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, bufferSizeBytes); - const void* postComputeBarriers[] = { &shaderWriteBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -1295,9 +1282,9 @@ tcu::TestStatus BufferToBufferInvertTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preComputeBarriers), preComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &hostWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postComputeBarriers), postComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -1310,13 +1297,13 @@ tcu::TestStatus BufferToBufferInvertTestInstance::iterate (void) const Allocation& outputBufferAllocation = outputBuffer.getAllocation(); invalidateMappedMemoryRange(vk, device, outputBufferAllocation.getMemory(), outputBufferAllocation.getOffset(), bufferSizeBytes); - const deUint32* bufferPtr = static_cast(outputBufferAllocation.getHostPtr()); - const deUint32* refBufferPtr = static_cast(inputBuffer.getAllocation().getHostPtr()); + const tcu::UVec4* bufferPtr = static_cast(outputBufferAllocation.getHostPtr()); + const tcu::UVec4* refBufferPtr = static_cast(inputBuffer.getAllocation().getHostPtr()); for (deUint32 ndx = 0; ndx < m_numValues; ++ndx) { - const deUint32 res = bufferPtr[ndx]; - const deUint32 ref = ~refBufferPtr[ndx]; + const deUint32 res = bufferPtr[ndx].x(); + const deUint32 ref = ~refBufferPtr[ndx].x(); if (res != ref) { @@ -1473,10 +1460,8 @@ tcu::TestStatus InvertSSBOInPlaceTestInstance::iterate (void) const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); const VkBufferMemoryBarrier hostWriteBarrier = makeBufferMemoryBarrier(VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, *buffer, 0ull, bufferSizeBytes); - const void* preComputeBarriers[] = { &hostWriteBarrier }; const VkBufferMemoryBarrier shaderWriteBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer, 0ull, bufferSizeBytes); - const void* postComputeBarriers[] = { &shaderWriteBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -1488,9 +1473,9 @@ tcu::TestStatus InvertSSBOInPlaceTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preComputeBarriers), preComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &hostWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postComputeBarriers), postComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -1665,9 +1650,11 @@ tcu::TestStatus WriteToMultipleSSBOTestInstance::iterate (void) const Unique pipelineLayout(makePipelineLayout(vk, device, *descriptorSetLayout)); const Unique pipeline(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule)); - const VkBufferMemoryBarrier shaderWriteBarrier0 = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer0, 0ull, bufferSizeBytes); - const VkBufferMemoryBarrier shaderWriteBarrier1 = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer1, 0ull, bufferSizeBytes); - const void* postComputeBarriers[] = { &shaderWriteBarrier0, &shaderWriteBarrier1 }; + const VkBufferMemoryBarrier shaderWriteBarriers[] = + { + makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer0, 0ull, bufferSizeBytes), + makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *buffer1, 0ull, bufferSizeBytes) + }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -1680,7 +1667,7 @@ tcu::TestStatus WriteToMultipleSSBOTestInstance::iterate (void) vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postComputeBarriers), postComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, DE_LENGTH_OF_ARRAY(shaderWriteBarriers), shaderWriteBarriers, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -1878,13 +1865,10 @@ tcu::TestStatus SSBOBarrierTestInstance::iterate (void) const Unique pipeline1(makeComputePipeline(vk, device, *pipelineLayout, *shaderModule1)); const VkBufferMemoryBarrier writeUniformConstantsBarrier = makeBufferMemoryBarrier(VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_UNIFORM_READ_BIT, *uniformBuffer, 0ull, uniformBufferSizeBytes); - const void* barriersBeforeCompute[] = { &writeUniformConstantsBarrier }; const VkBufferMemoryBarrier betweenShadersBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, *workBuffer, 0ull, workBufferSizeBytes); - const void* barriersAfterFirstShader[] = { &betweenShadersBarrier }; const VkBufferMemoryBarrier afterComputeBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, outputBufferSizeBytes); - const void* barriersAfterCompute[] = { &afterComputeBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -1896,16 +1880,16 @@ tcu::TestStatus SSBOBarrierTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline0); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersBeforeCompute), barriersBeforeCompute); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &writeUniformConstantsBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfterFirstShader), barriersAfterFirstShader); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &betweenShadersBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); // Switch to the second shader program vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline1); vk.cmdDispatch(*cmdBuffer, m_workSize.x(), m_workSize.y(), m_workSize.z()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfterCompute), barriersAfterCompute); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &afterComputeBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -2093,10 +2077,6 @@ tcu::TestStatus ImageAtomicOpTestInstance::iterate (void) const VkBufferMemoryBarrier outputBufferPostCopyBarrier = makeBufferMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, outputBufferSizeBytes); - const void* preComputeBarriers[] = { &inputBufferPostHostWriteBarrier }; - const void* preCopyBarriers[] = { &imagePreCopyBarrier }; - const void* postCopyBarriers[] = { &outputBufferPostCopyBarrier }; - const VkBufferImageCopy copyParams = makeBufferImageCopy(m_imageSize); // Prepare the command buffer @@ -2111,12 +2091,12 @@ tcu::TestStatus ImageAtomicOpTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preComputeBarriers), preComputeBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &inputBufferPostHostWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); vk.cmdDispatch(*cmdBuffer, m_imageSize.x(), m_imageSize.y(), 1u); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preCopyBarriers), preCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imagePreCopyBarrier); vk.cmdCopyImageToBuffer(*cmdBuffer, *image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *outputBuffer, 1u, ©Params); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postCopyBarriers), postCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &outputBufferPostCopyBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -2246,6 +2226,12 @@ tcu::TestStatus ImageBarrierTestInstance::iterate (void) const VkDeviceSize outputBufferSizeBytes = sizeof(deUint32); const Buffer outputBuffer(vk, device, allocator, makeBufferCreateInfo(outputBufferSizeBytes, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), MemoryRequirement::HostVisible); + // Initialize atomic counter value to zero + const Allocation& outputBufferAllocation = outputBuffer.getAllocation(); + deUint32* outputBufferPtr = static_cast(outputBufferAllocation.getHostPtr()); + *outputBufferPtr = 0; + flushMappedMemoryRange(vk, device, outputBufferAllocation.getMemory(), outputBufferAllocation.getOffset(), outputBufferSizeBytes); + // Create a uniform buffer (to pass uniform constants) const VkDeviceSize uniformBufferSizeBytes = sizeof(deUint32); @@ -2305,17 +2291,12 @@ tcu::TestStatus ImageBarrierTestInstance::iterate (void) VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, *image, subresourceRange); - const void* barriersBeforeCompute[] = { &writeUniformConstantsBarrier, &imageLayoutBarrier }; - const VkImageMemoryBarrier imageBarrierBetweenShaders = makeImageMemoryBarrier( VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, *image, subresourceRange); - const void* barriersAfterFirstShader[] = { &imageBarrierBetweenShaders }; - const VkBufferMemoryBarrier afterComputeBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *outputBuffer, 0ull, outputBufferSizeBytes); - const void* barriersAfterCompute[] = { &afterComputeBarrier }; const Unique cmdPool(makeCommandPool(vk, device, queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(vk, device, *cmdPool)); @@ -2327,16 +2308,16 @@ tcu::TestStatus ImageBarrierTestInstance::iterate (void) vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline0); vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipelineLayout, 0u, 1u, &descriptorSet.get(), 0u, DE_NULL); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersBeforeCompute), barriersBeforeCompute); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &writeUniformConstantsBarrier, 1, &imageLayoutBarrier); vk.cmdDispatch(*cmdBuffer, m_imageSize.x(), m_imageSize.y(), 1u); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfterFirstShader), barriersAfterFirstShader); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrierBetweenShaders); // Switch to the second shader program vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline1); vk.cmdDispatch(*cmdBuffer, m_imageSize.x(), m_imageSize.y(), 1u); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfterCompute), barriersAfterCompute); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &afterComputeBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -2346,7 +2327,6 @@ tcu::TestStatus ImageBarrierTestInstance::iterate (void) // Validate the results - const Allocation& outputBufferAllocation = outputBuffer.getAllocation(); invalidateMappedMemoryRange(vk, device, outputBufferAllocation.getMemory(), outputBufferAllocation.getOffset(), outputBufferSizeBytes); const int numValues = multiplyComponents(m_imageSize); diff --git a/external/vulkancts/modules/vulkan/compute/vktComputeIndirectComputeDispatchTests.cpp b/external/vulkancts/modules/vulkan/compute/vktComputeIndirectComputeDispatchTests.cpp index 0c57b99..15b361a 100644 --- a/external/vulkancts/modules/vulkan/compute/vktComputeIndirectComputeDispatchTests.cpp +++ b/external/vulkancts/modules/vulkan/compute/vktComputeIndirectComputeDispatchTests.cpp @@ -267,12 +267,11 @@ tcu::TestStatus IndirectDispatchInstanceBufferUpload::iterate (void) // Create descriptor pool const vk::Unique descriptorPool( vk::DescriptorPoolBuilder() - .addType(vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER) + .addType(vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, (deUint32)m_dispatchCommands.size()) .build(m_device_interface, m_device, vk::VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, static_cast(m_dispatchCommands.size()))); const vk::VkBufferMemoryBarrier ssboPostBarrier = makeBufferMemoryBarrier( vk::VK_ACCESS_SHADER_WRITE_BIT, vk::VK_ACCESS_HOST_READ_BIT, *resultBuffer, 0ull, resultBufferSize); - const void* const postBarriers[] = { &ssboPostBarrier }; // Create command buffer const vk::Unique cmdPool(makeCommandPool(m_device_interface, m_device, m_queueFamilyIndex)); @@ -317,7 +316,10 @@ tcu::TestStatus IndirectDispatchInstanceBufferUpload::iterate (void) } // Insert memory barrier - m_device_interface.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_FALSE, DE_LENGTH_OF_ARRAY(postBarriers), postBarriers); + m_device_interface.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, &ssboPostBarrier, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); // End recording commands endCommandBuffer(m_device_interface, *cmdBuffer); @@ -496,8 +498,6 @@ void IndirectDispatchInstanceBufferGenerate::fillIndirectBufferData (const vk::V const vk::VkBufferMemoryBarrier bufferBarrier = makeBufferMemoryBarrier( vk::VK_ACCESS_SHADER_WRITE_BIT, vk::VK_ACCESS_INDIRECT_COMMAND_READ_BIT, *indirectBuffer, 0ull, m_bufferSize); - const void* const postBarriers[] = { &bufferBarrier }; - // Bind compute pipeline m_device_interface.cmdBindPipeline(commandBuffer, vk::VK_PIPELINE_BIND_POINT_COMPUTE, *m_computePipeline); @@ -508,7 +508,10 @@ void IndirectDispatchInstanceBufferGenerate::fillIndirectBufferData (const vk::V m_device_interface.cmdDispatch(commandBuffer, 1u, 1u, 1u); // Insert memory barrier - m_device_interface.cmdPipelineBarrier(commandBuffer, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, vk::VK_FALSE, DE_LENGTH_OF_ARRAY(postBarriers), postBarriers); + m_device_interface.cmdPipelineBarrier(commandBuffer, vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, vk::VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, &bufferBarrier, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } class IndirectDispatchCaseBufferGenerate : public IndirectDispatchCaseBufferUpload diff --git a/external/vulkancts/modules/vulkan/compute/vktComputeShaderBuiltinVarTests.cpp b/external/vulkancts/modules/vulkan/compute/vktComputeShaderBuiltinVarTests.cpp index 24ab099..ec7345c 100644 --- a/external/vulkancts/modules/vulkan/compute/vktComputeShaderBuiltinVarTests.cpp +++ b/external/vulkancts/modules/vulkan/compute/vktComputeShaderBuiltinVarTests.cpp @@ -449,8 +449,6 @@ tcu::TestStatus ComputeBuiltinVarInstance::iterate (void) const VkBufferMemoryBarrier bufferBarrier = makeBufferMemoryBarrier( VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *resultBuffer, 0ull, resultBufferSize); - const void* const postBarrier[] = { &bufferBarrier }; - const Unique cmdPool(makeCommandPool(m_vki, m_device, m_queueFamilyIndex)); const Unique cmdBuffer(makeCommandBuffer(m_vki, m_device, *cmdPool)); @@ -475,7 +473,10 @@ tcu::TestStatus ComputeBuiltinVarInstance::iterate (void) // Dispatch indirect compute command m_vki.cmdDispatch(*cmdBuffer, subCase.numWorkGroups()[0], subCase.numWorkGroups()[1], subCase.numWorkGroups()[2]); - m_vki.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, VK_FALSE, 1, postBarrier); + m_vki.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 1, &bufferBarrier, + 0, (const VkImageMemoryBarrier*)DE_NULL); // End recording commands endCommandBuffer(m_vki, *cmdBuffer); diff --git a/external/vulkancts/modules/vulkan/compute/vktComputeTestsUtil.cpp b/external/vulkancts/modules/vulkan/compute/vktComputeTestsUtil.cpp index 2095508..51d936b 100644 --- a/external/vulkancts/modules/vulkan/compute/vktComputeTestsUtil.cpp +++ b/external/vulkancts/modules/vulkan/compute/vktComputeTestsUtil.cpp @@ -291,12 +291,7 @@ void beginCommandBuffer (const DeviceInterface& vk, const VkCommandBuffer comman VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - DE_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(commandBuffer, &commandBufBeginParams)); } @@ -325,6 +320,7 @@ void submitCommandsAndWait (const DeviceInterface& vk, DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &commandBuffer, // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.cpp index dfd7038..6547b96 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.cpp @@ -469,21 +469,19 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind const vk::VkAttachmentReference* _resolveAttachments, vk::VkAttachmentReference depthStencilAttachment, deUint32 _preserveAttachmentCount, - const vk::VkAttachmentReference* _preserveAttachments) + const deUint32* _preserveAttachments) { m_inputAttachments = std::vector(_inputAttachments, _inputAttachments + _inputAttachmentCount); m_colorAttachments = std::vector(_colorAttachments, _colorAttachments + _colorAttachmentCount); if (_resolveAttachments) - { m_resolveAttachments = std::vector(_resolveAttachments, _resolveAttachments + _colorAttachmentCount); - } - m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); + m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); m_depthStencilAttachment = depthStencilAttachment; - flags = _flags; + flags = _flags; pipelineBindPoint = _pipelineBindPoint; inputAttachmentCount = _inputAttachmentCount; pInputAttachments = DE_NULL; @@ -494,21 +492,17 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind pPreserveAttachments = DE_NULL; preserveAttachmentCount = _preserveAttachmentCount; - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) @@ -521,34 +515,29 @@ SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) m_colorAttachments = std::vector( rhs.pColorAttachments, rhs.pColorAttachments + rhs.colorAttachmentCount); - if (rhs.pResolveAttachments) { + if (rhs.pResolveAttachments) m_resolveAttachments = std::vector( rhs.pResolveAttachments, rhs.pResolveAttachments + rhs.colorAttachmentCount); - } - m_preserveAttachments = std::vector( + + m_preserveAttachments = std::vector( rhs.pPreserveAttachments, rhs.pPreserveAttachments + rhs.preserveAttachmentCount); if (rhs.pDepthStencilAttachment) - { m_depthStencilAttachment = *rhs.pDepthStencilAttachment; - } - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } SubpassDescription::SubpassDescription (const SubpassDescription& rhs) { @@ -565,22 +554,19 @@ SubpassDescription& SubpassDescription::operator= (const SubpassDescription& rhs m_preserveAttachments = rhs.m_preserveAttachments; m_depthStencilAttachment = rhs.m_depthStencilAttachment; - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } return *this; } @@ -615,35 +601,10 @@ SubpassDependency::SubpassDependency (const vk::VkSubpassDependency& rhs) CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags _flags) { - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = DE_NULL; - subpass = 0; - framebuffer = DE_NULL; - flags = _flags; - occlusionQueryEnable = false; - queryFlags = 0u; - pipelineStatistics = 0u; -} - -CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkRenderPass _renderPass, - deUint32 _subpass, - vk::VkFramebuffer _framebuffer, - vk::VkCommandBufferUsageFlags _flags, - bool _occlusionQueryEnable, - vk::VkQueryControlFlags _queryFlags, - vk::VkQueryPipelineStatisticFlags _pipelineStatistics) -{ - - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = _renderPass; - subpass = _subpass; - framebuffer = _framebuffer; - flags = _flags; - occlusionQueryEnable = _occlusionQueryEnable; - queryFlags = _queryFlags; - pipelineStatistics = _pipelineStatistics; + sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + pNext = DE_NULL; + flags = _flags; + pInheritanceInfo = DE_NULL; } DescriptorPoolCreateInfo::DescriptorPoolCreateInfo (const std::vector& poolSizeCounts, @@ -676,7 +637,7 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo (deUint32 _bindingC pNext = DE_NULL; flags = 0; bindingCount = _bindingCount; - pBinding = _pBindings; + pBindings = _pBindings; } PipelineLayoutCreateInfo::PipelineLayoutCreateInfo (deUint32 _descriptorSetCount, @@ -770,7 +731,7 @@ PipelineCreateInfo::InputAssemblerState::InputAssemblerState (vk::VkPrimitiveTop primitiveRestartEnable = _primitiveRestartEnable; } -PipelineCreateInfo::TesselationState::TesselationState (deUint32 _patchControlPoints) +PipelineCreateInfo::TessellationState::TessellationState (deUint32 _patchControlPoints) { sType = vk::VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO; pNext = DE_NULL; @@ -1190,6 +1151,7 @@ SamplerCreateInfo::SamplerCreateInfo (vk::VkFilter _magFilter, vk::VkSamplerAddressMode _addressModeV, vk::VkSamplerAddressMode _addressModeW, float _mipLodBias, + vk::VkBool32 _anisotropyEnable, float _maxAnisotropy, vk::VkBool32 _compareEnable, vk::VkCompareOp _compareOp, @@ -1208,6 +1170,7 @@ SamplerCreateInfo::SamplerCreateInfo (vk::VkFilter _magFilter, addressModeV = _addressModeV; addressModeW = _addressModeW; mipLodBias = _mipLodBias; + anisotropyEnable = _anisotropyEnable; maxAnisotropy = _maxAnisotropy; compareEnable = _compareEnable; compareOp = _compareOp; diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.hpp b/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.hpp index aa6f16f..b7ae712 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.hpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawCreateInfoUtil.hpp @@ -175,7 +175,7 @@ public: const vk::VkAttachmentReference* resolveAttachments, vk::VkAttachmentReference depthStencilAttachment, deUint32 preserveAttachmentCount, - const vk::VkAttachmentReference* preserveAttachments); + const deUint32* preserveAttachments); SubpassDescription (const vk::VkSubpassDescription& other); SubpassDescription (const SubpassDescription& other); @@ -185,7 +185,7 @@ private: std::vector m_inputAttachments; std::vector m_colorAttachments; std::vector m_resolveAttachments; - std::vector m_preserveAttachments; + std::vector m_preserveAttachments; vk::VkAttachmentReference m_depthStencilAttachment; }; @@ -261,13 +261,6 @@ class CmdBufferBeginInfo : public vk::VkCommandBufferBeginInfo { public: CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags flags = 0); - CmdBufferBeginInfo (vk::VkRenderPass renderPass, - deUint32 subpass, - vk::VkFramebuffer framebuffer, - vk::VkCommandBufferUsageFlags flags = 0, - bool occlusionQueryEnable = false, - vk::VkQueryControlFlags queryFlags = 0u, - vk::VkQueryPipelineStatisticFlags pipelineStatistics = 0u); }; class DescriptorPoolSize : public vk::VkDescriptorPoolSize @@ -334,10 +327,10 @@ public: InputAssemblerState (vk::VkPrimitiveTopology topology, vk::VkBool32 primitiveRestartEnable = false); }; - class TesselationState : public vk::VkPipelineTessellationStateCreateInfo + class TessellationState : public vk::VkPipelineTessellationStateCreateInfo { public: - TesselationState (deUint32 patchControlPoints = 0); + TessellationState (deUint32 patchControlPoints = 0); }; class ViewportState : public vk::VkPipelineViewportStateCreateInfo @@ -511,6 +504,7 @@ public: vk::VkSamplerAddressMode addressV = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, vk::VkSamplerAddressMode addressW = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, float mipLodBias = 0.0f, + vk::VkBool32 anisotropyEnable = vk::VK_FALSE, float maxAnisotropy = 1.0f, vk::VkBool32 compareEnable = false, vk::VkCompareOp compareOp = vk::VK_COMPARE_OP_ALWAYS, diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawImageObjectUtil.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawImageObjectUtil.cpp index a879dc8..472fd1e 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawImageObjectUtil.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawImageObjectUtil.cpp @@ -352,10 +352,10 @@ void Image::readUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } vk::VkBufferImageCopy region = @@ -363,7 +363,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyImageToBuffer(*copyCmdBuffer, object(), layout, stagingResource->object(), 1, ®ion); @@ -375,6 +375,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -440,7 +441,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, { de::SharedPtr stagingResource; { - vk::VkExtent3D stagingExtent = {width, height, depth}; + vk::VkExtent3D stagingExtent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo(type, m_format, stagingExtent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_DST_BIT); @@ -467,7 +468,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); const vk::VkOffset3D zeroOffset = { 0, 0, 0 }; - vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {width, height, depth} }; + vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {(deUint32)width, (deUint32)height, (deUint32)depth} }; m_vk.cmdCopyImage(*copyCmdBuffer, object(), layout, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, 1, ®ion); VK_CHECK(m_vk.endCommandBuffer(*copyCmdBuffer)); @@ -478,6 +479,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -585,7 +587,7 @@ void Image::upload (vk::VkQueue queue, DE_ASSERT(layout == vk::VK_IMAGE_LAYOUT_GENERAL || layout == vk::VK_IMAGE_LAYOUT_UNDEFINED || layout == vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); de::SharedPtr stagingResource; - vk::VkExtent3D extent = {width, height, depth}; + vk::VkExtent3D extent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo( type, m_format, extent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_SRC_BIT); @@ -636,9 +638,10 @@ void Image::upload (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); @@ -647,7 +650,7 @@ void Image::upload (vk::VkQueue queue, zeroOffset, {aspect, mipLevel, arrayElement, 1}, offset, - {width, height, depth}}; + {(deUint32)width, (deUint32)height, (deUint32)depth}}; m_vk.cmdCopyImage(*copyCmdBuffer, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, object(), layout, 1, ®ion); @@ -659,6 +662,7 @@ void Image::upload (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -755,16 +759,17 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } vk::VkBufferImageCopy region = { 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyBufferToImage(*copyCmdBuffer, stagingResource->object(), @@ -777,6 +782,7 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -888,24 +894,25 @@ void transition2DImage (const vk::DeviceInterface& vk, vk::VkImageLayout newLayout) { vk::VkImageMemoryBarrier barrier; - barrier.sType = vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; - barrier.pNext = DE_NULL; - barrier.srcAccessMask = 0; - barrier.dstAccessMask = 0; - barrier.oldLayout = oldLayout; - barrier.newLayout = newLayout; - barrier.srcQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; - barrier.dstQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; - barrier.image = image; + barrier.sType = vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + barrier.pNext = DE_NULL; + barrier.srcAccessMask = 0; + barrier.dstAccessMask = 0; + barrier.oldLayout = oldLayout; + barrier.newLayout = newLayout; + barrier.srcQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; + barrier.dstQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; + barrier.image = image; barrier.subresourceRange.aspectMask = aspectMask; barrier.subresourceRange.baseMipLevel = 0; barrier.subresourceRange.levelCount = 1; barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = 1; - void* barriers[] = { &barrier }; - - vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } void initialTransitionColor2DImage (const vk::DeviceInterface &vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout) diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawIndexedTest.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawIndexedTest.cpp index 1b8da19..0e1f8fd 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawIndexedTest.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawIndexedTest.cpp @@ -168,6 +168,7 @@ tcu::TestStatus DrawIndexed::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -289,6 +290,7 @@ tcu::TestStatus DrawInstancedIndexed::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp index 2e5b378..f8ac4a0 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp @@ -255,6 +255,7 @@ tcu::TestStatus IndirectDraw::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -424,6 +425,7 @@ tcu::TestStatus IndirectDrawInstanced::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawSimpleTest.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawSimpleTest.cpp index a4dfa5f..4a43913 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawSimpleTest.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawSimpleTest.cpp @@ -162,6 +162,7 @@ tcu::TestStatus SimpleDraw::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -267,6 +268,7 @@ tcu::TestStatus SimpleDrawInstanced::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp index 5f968e7..9afd2fb 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp @@ -226,20 +226,20 @@ void DynamicStateBaseClass::setDynamicViewportState (const deUint32 width, const viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; - m_vk.cmdSetViewport(*m_cmdBuffer, 1, &viewport); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, 1, &viewport); vk::VkRect2D scissor; scissor.offset.x = 0; scissor.offset.y = 0; scissor.extent.width = width; scissor.extent.height = height; - m_vk.cmdSetScissor(*m_cmdBuffer, 1, &scissor); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, 1, &scissor); } void DynamicStateBaseClass::setDynamicViewportState (deUint32 viewportCount, const vk::VkViewport* pViewports, const vk::VkRect2D* pScissors) { - m_vk.cmdSetViewport(*m_cmdBuffer, viewportCount, pViewports); - m_vk.cmdSetScissor(*m_cmdBuffer, viewportCount, pScissors); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, viewportCount, pViewports); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, viewportCount, pScissors); } void DynamicStateBaseClass::setDynamicRasterizationState (const float lineWidth, diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCBTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCBTests.cpp index 03ced79..a508a4f 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCBTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCBTests.cpp @@ -123,6 +123,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.cpp index f65b84c..203f152 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.cpp @@ -470,21 +470,19 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind const vk::VkAttachmentReference* _resolveAttachments, vk::VkAttachmentReference depthStencilAttachment, deUint32 _preserveAttachmentCount, - const vk::VkAttachmentReference* _preserveAttachments) + const deUint32* _preserveAttachments) { m_inputAttachments = std::vector(_inputAttachments, _inputAttachments + _inputAttachmentCount); m_colorAttachments = std::vector(_colorAttachments, _colorAttachments + _colorAttachmentCount); if (_resolveAttachments) - { m_resolveAttachments = std::vector(_resolveAttachments, _resolveAttachments + _colorAttachmentCount); - } - m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); + m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); m_depthStencilAttachment = depthStencilAttachment; - flags = _flags; + flags = _flags; pipelineBindPoint = _pipelineBindPoint; inputAttachmentCount = _inputAttachmentCount; pInputAttachments = DE_NULL; @@ -495,21 +493,17 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind pPreserveAttachments = DE_NULL; preserveAttachmentCount = _preserveAttachmentCount; - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) @@ -522,34 +516,29 @@ SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) m_colorAttachments = std::vector( rhs.pColorAttachments, rhs.pColorAttachments + rhs.colorAttachmentCount); - if (rhs.pResolveAttachments) { + if (rhs.pResolveAttachments) m_resolveAttachments = std::vector( rhs.pResolveAttachments, rhs.pResolveAttachments + rhs.colorAttachmentCount); - } - m_preserveAttachments = std::vector( + + m_preserveAttachments = std::vector( rhs.pPreserveAttachments, rhs.pPreserveAttachments + rhs.preserveAttachmentCount); if (rhs.pDepthStencilAttachment) - { m_depthStencilAttachment = *rhs.pDepthStencilAttachment; - } - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } SubpassDescription::SubpassDescription (const SubpassDescription& rhs) { @@ -566,22 +555,19 @@ SubpassDescription& SubpassDescription::operator= (const SubpassDescription& rhs m_preserveAttachments = rhs.m_preserveAttachments; m_depthStencilAttachment = rhs.m_depthStencilAttachment; - if (m_inputAttachments.size()) { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } return *this; } @@ -616,35 +602,10 @@ SubpassDependency::SubpassDependency (const vk::VkSubpassDependency& rhs) CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags _flags) { - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = DE_NULL; - subpass = 0; - framebuffer = DE_NULL; - flags = _flags; - occlusionQueryEnable = false; - queryFlags = 0u; - pipelineStatistics = 0u; -} - -CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkRenderPass _renderPass, - deUint32 _subpass, - vk::VkFramebuffer _framebuffer, - vk::VkCommandBufferUsageFlags _flags, - bool _occlusionQueryEnable, - vk::VkQueryControlFlags _queryFlags, - vk::VkQueryPipelineStatisticFlags _pipelineStatistics) -{ - - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = _renderPass; - subpass = _subpass; - framebuffer = _framebuffer; - flags = _flags; - occlusionQueryEnable = _occlusionQueryEnable; - queryFlags = _queryFlags; - pipelineStatistics = _pipelineStatistics; + sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + pNext = DE_NULL; + flags = _flags; + pInheritanceInfo = DE_NULL; } DescriptorPoolCreateInfo::DescriptorPoolCreateInfo (const std::vector& poolSizeCounts, @@ -677,7 +638,7 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo (deUint32 _bindingC pNext = DE_NULL; flags = 0; bindingCount = _bindingCount; - pBinding = _pBindings; + pBindings = _pBindings; } PipelineLayoutCreateInfo::PipelineLayoutCreateInfo (deUint32 _descriptorSetCount, @@ -772,7 +733,7 @@ PipelineCreateInfo::InputAssemblerState::InputAssemblerState (vk::VkPrimitiveTop primitiveRestartEnable = _primitiveRestartEnable; } -PipelineCreateInfo::TesselationState::TesselationState (deUint32 _patchControlPoints) +PipelineCreateInfo::TessellationState::TessellationState (deUint32 _patchControlPoints) { sType = vk::VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO; pNext = DE_NULL; @@ -1203,6 +1164,7 @@ SamplerCreateInfo::SamplerCreateInfo (vk::VkFilter _magFilter, vk::VkSamplerAddressMode _addressModeV, vk::VkSamplerAddressMode _addressModeW, float _mipLodBias, + vk::VkBool32 _anisotropyEnable, float _maxAnisotropy, vk::VkBool32 _compareEnable, vk::VkCompareOp _compareOp, @@ -1221,6 +1183,7 @@ SamplerCreateInfo::SamplerCreateInfo (vk::VkFilter _magFilter, addressModeV = _addressModeV; addressModeW = _addressModeW; mipLodBias = _mipLodBias; + anisotropyEnable = _anisotropyEnable; maxAnisotropy = _maxAnisotropy; compareEnable = _compareEnable; compareOp = _compareOp; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.hpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.hpp index fed2205..cd61d66 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.hpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCreateInfoUtil.hpp @@ -177,7 +177,7 @@ public: const vk::VkAttachmentReference* resolveAttachments, vk::VkAttachmentReference depthStencilAttachment, deUint32 preserveAttachmentCount, - const vk::VkAttachmentReference* preserveAttachments); + const deUint32* preserveAttachments); SubpassDescription (const vk::VkSubpassDescription& other); SubpassDescription (const SubpassDescription& other); @@ -187,7 +187,7 @@ private: std::vector m_inputAttachments; std::vector m_colorAttachments; std::vector m_resolveAttachments; - std::vector m_preserveAttachments; + std::vector m_preserveAttachments; vk::VkAttachmentReference m_depthStencilAttachment; }; @@ -263,13 +263,6 @@ class CmdBufferBeginInfo : public vk::VkCommandBufferBeginInfo { public: CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags flags = 0); - CmdBufferBeginInfo (vk::VkRenderPass renderPass, - deUint32 subpass, - vk::VkFramebuffer framebuffer, - vk::VkCommandBufferUsageFlags flags = 0, - bool occlusionQueryEnable = false, - vk::VkQueryControlFlags queryFlags = 0u, - vk::VkQueryPipelineStatisticFlags pipelineStatistics = 0u); }; class DescriptorPoolSize : public vk::VkDescriptorPoolSize @@ -336,10 +329,10 @@ public: InputAssemblerState (vk::VkPrimitiveTopology topology, vk::VkBool32 primitiveRestartEnable = false); }; - class TesselationState : public vk::VkPipelineTessellationStateCreateInfo + class TessellationState : public vk::VkPipelineTessellationStateCreateInfo { public: - TesselationState (deUint32 patchControlPoints = 0); + TessellationState (deUint32 patchControlPoints = 0); }; class ViewportState : public vk::VkPipelineViewportStateCreateInfo @@ -513,6 +506,7 @@ public: vk::VkSamplerAddressMode addressV = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, vk::VkSamplerAddressMode addressW = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, float mipLodBias = 0.0f, + vk::VkBool32 anisotropyEnable = vk::VK_FALSE, float maxAnisotropy = 1.0f, vk::VkBool32 compareEnable = false, vk::VkCompareOp compareOp = vk::VK_COMPARE_OP_ALWAYS, diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp index b772b50..752493e 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp @@ -67,7 +67,6 @@ public: DepthStencilBaseCase (Context& context, const char* vertexShaderName, const char* fragmentShaderName) : TestInstance (context) , m_colorAttachmentFormat (vk::VK_FORMAT_R8G8B8A8_UNORM) - , m_depthStencilAttachmentFormat (vk::VK_FORMAT_D24_UNORM_S8_UINT) , m_topology (vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP) , m_vk (context.getDeviceInterface()) , m_vertexShaderName (vertexShaderName) @@ -121,6 +120,25 @@ protected: { const vk::VkDevice device = m_context.getDevice(); + vk::VkFormatProperties formatProperties; + // check for VK_FORMAT_D24_UNORM_S8_UINT support + m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), vk::VK_FORMAT_D24_UNORM_S8_UINT, &formatProperties); + if (formatProperties.optimalTilingFeatures & vk::VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + { + m_depthStencilAttachmentFormat = vk::VK_FORMAT_D24_UNORM_S8_UINT; + } + else + { + // check for VK_FORMAT_D32_SFLOAT_S8_UINT support + m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), vk::VK_FORMAT_D32_SFLOAT_S8_UINT, &formatProperties); + if (formatProperties.optimalTilingFeatures & vk::VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + { + m_depthStencilAttachmentFormat = vk::VK_FORMAT_D32_SFLOAT_S8_UINT; + } + else + throw tcu::NotSupportedError("No valid depth stencil attachment available"); + } + const PipelineLayoutCreateInfo pipelineLayoutCreateInfo; m_pipelineLayout = vk::createPipelineLayout(m_vk, device, &pipelineLayoutCreateInfo); @@ -328,20 +346,20 @@ protected: viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; - m_vk.cmdSetViewport(*m_cmdBuffer, 1, &viewport); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, 1, &viewport); vk::VkRect2D scissor; scissor.offset.x = 0; scissor.offset.y = 0; scissor.extent.width = width; scissor.extent.height = height; - m_vk.cmdSetScissor(*m_cmdBuffer, 1, &scissor); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, 1, &scissor); } void setDynamicViewportState(const deUint32 viewportCount, const vk::VkViewport* pViewports, const vk::VkRect2D* pScissors) { - m_vk.cmdSetViewport(*m_cmdBuffer, viewportCount, pViewports); - m_vk.cmdSetScissor(*m_cmdBuffer, viewportCount, pScissors); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, viewportCount, pViewports); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, viewportCount, pScissors); } void setDynamicRasterizationState(const float lineWidth = 1.0f, @@ -385,6 +403,14 @@ public: DepthBoundsParamTestInstance (Context &context, ShaderMap shaders) : DepthStencilBaseCase (context, shaders[glu::SHADERTYPE_VERTEX], shaders[glu::SHADERTYPE_FRAGMENT]) { + // Check if depth bounds test is supported + { + const vk::VkPhysicalDeviceFeatures& deviceFeatures = m_context.getDeviceFeatures(); + + if (!deviceFeatures.depthBounds) + throw tcu::NotSupportedError("Depth bounds test is unsupported"); + } + m_data.push_back(PositionColorVertex(tcu::Vec4(-1.0f, 1.0f, 0.375f, 1.0f), tcu::RGBA::green().toVec())); m_data.push_back(PositionColorVertex(tcu::Vec4(0.0f, 1.0f, 0.375f, 1.0f), tcu::RGBA::green().toVec())); m_data.push_back(PositionColorVertex(tcu::Vec4(-1.0f, -1.0f, 0.375f, 1.0f), tcu::RGBA::green().toVec())); @@ -403,15 +429,6 @@ public: m_depthStencilState_1 = PipelineCreateInfo::DepthStencilState( vk::VK_TRUE, vk::VK_TRUE, vk::VK_COMPARE_OP_ALWAYS, vk::VK_FALSE); - - // Check if depth bounds test is supported - { - const vk::VkPhysicalDeviceFeatures& deviceFeatures = m_context.getDeviceFeatures(); - - if (!deviceFeatures.depthBounds) - throw tcu::NotSupportedError("Depth bounds test is unsupported"); - } - // enable depth bounds test m_depthStencilState_2 = PipelineCreateInfo::DepthStencilState( vk::VK_FALSE, vk::VK_FALSE, vk::VK_COMPARE_OP_NEVER, vk::VK_TRUE); @@ -452,6 +469,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -603,6 +621,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -772,6 +791,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateGeneralTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateGeneralTests.cpp index 5fa4935..7da5f06 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateGeneralTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateGeneralTests.cpp @@ -114,6 +114,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -223,6 +224,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -372,6 +374,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp index 504ef88..ba3ee95 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp @@ -352,10 +352,10 @@ void Image::readUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } vk::VkBufferImageCopy region = @@ -363,7 +363,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyImageToBuffer(*copyCmdBuffer, object(), layout, stagingResource->object(), 1, ®ion); @@ -375,6 +375,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -440,7 +441,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, { de::SharedPtr stagingResource; { - vk::VkExtent3D stagingExtent = {width, height, depth}; + vk::VkExtent3D stagingExtent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo(type, m_format, stagingExtent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_DST_BIT); @@ -467,7 +468,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); const vk::VkOffset3D zeroOffset = { 0, 0, 0 }; - vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {width, height, depth} }; + vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {(deUint32)width, (deUint32)height, (deUint32)depth} }; m_vk.cmdCopyImage(*copyCmdBuffer, object(), layout, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, 1, ®ion); VK_CHECK(m_vk.endCommandBuffer(*copyCmdBuffer)); @@ -478,6 +479,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -585,7 +587,7 @@ void Image::upload (vk::VkQueue queue, DE_ASSERT(layout == vk::VK_IMAGE_LAYOUT_GENERAL || layout == vk::VK_IMAGE_LAYOUT_UNDEFINED || layout == vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); de::SharedPtr stagingResource; - vk::VkExtent3D extent = {width, height, depth}; + vk::VkExtent3D extent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo( type, m_format, extent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_SRC_BIT); @@ -636,9 +638,10 @@ void Image::upload (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); @@ -647,7 +650,7 @@ void Image::upload (vk::VkQueue queue, zeroOffset, {aspect, mipLevel, arrayElement, 1}, offset, - {width, height, depth}}; + {(deUint32)width, (deUint32)height, (deUint32)depth}}; m_vk.cmdCopyImage(*copyCmdBuffer, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, object(), layout, 1, ®ion); @@ -659,6 +662,7 @@ void Image::upload (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -755,16 +759,17 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } vk::VkBufferImageCopy region = { 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyBufferToImage(*copyCmdBuffer, stagingResource->object(), @@ -777,6 +782,7 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -903,9 +909,10 @@ void transition2DImage (const vk::DeviceInterface& vk, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = 1; - void* barriers[] = { &barrier }; - - vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } void initialTransitionColor2DImage (const vk::DeviceInterface &vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout) diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp index 12865c0..61a663f 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp @@ -59,7 +59,6 @@ public: DepthBiasBaseCase (Context& context, const char* vertexShaderName, const char* fragmentShaderName) : TestInstance (context) , m_colorAttachmentFormat (vk::VK_FORMAT_R8G8B8A8_UNORM) - , m_depthStencilAttachmentFormat (vk::VK_FORMAT_D24_UNORM_S8_UINT) , m_topology (vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP) , m_vk (context.getDeviceInterface()) , m_vertexShaderName (vertexShaderName) @@ -111,6 +110,25 @@ protected: { const vk::VkDevice device = m_context.getDevice(); + vk::VkFormatProperties formatProperties; + // check for VK_FORMAT_D24_UNORM_S8_UINT support + m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), vk::VK_FORMAT_D24_UNORM_S8_UINT, &formatProperties); + if (formatProperties.optimalTilingFeatures & vk::VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + { + m_depthStencilAttachmentFormat = vk::VK_FORMAT_D24_UNORM_S8_UINT; + } + else + { + // check for VK_FORMAT_D32_SFLOAT_S8_UINT support + m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), vk::VK_FORMAT_D32_SFLOAT_S8_UINT, &formatProperties); + if (formatProperties.optimalTilingFeatures & vk::VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + { + m_depthStencilAttachmentFormat = vk::VK_FORMAT_D32_SFLOAT_S8_UINT; + } + else + throw tcu::NotSupportedError("No valid depth stencil attachment available"); + } + const PipelineLayoutCreateInfo pipelineLayoutCreateInfo; m_pipelineLayout = vk::createPipelineLayout(m_vk, device, &pipelineLayoutCreateInfo); @@ -304,20 +322,20 @@ protected: viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; - m_vk.cmdSetViewport(*m_cmdBuffer, 1, &viewport); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, 1, &viewport); vk::VkRect2D scissor; scissor.offset.x = 0; scissor.offset.y = 0; scissor.extent.width = width; scissor.extent.height = height; - m_vk.cmdSetScissor(*m_cmdBuffer, 1, &scissor); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, 1, &scissor); } void setDynamicViewportState (const deUint32 viewportCount, const vk::VkViewport* pViewports, const vk::VkRect2D* pScissors) { - m_vk.cmdSetViewport(*m_cmdBuffer, viewportCount, pViewports); - m_vk.cmdSetScissor(*m_cmdBuffer, viewportCount, pScissors); + m_vk.cmdSetViewport(*m_cmdBuffer, 0, viewportCount, pViewports); + m_vk.cmdSetScissor(*m_cmdBuffer, 0, viewportCount, pScissors); } void setDynamicRasterizationState (const float lineWidth = 1.0f, @@ -413,6 +431,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -518,6 +537,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -574,6 +594,14 @@ public: LineWidthParamTestInstance (Context& context, ShaderMap shaders) : DynamicStateBaseClass (context, shaders[glu::SHADERTYPE_VERTEX], shaders[glu::SHADERTYPE_FRAGMENT]) { + // Check if line width test is supported + { + const vk::VkPhysicalDeviceFeatures& deviceFeatures = m_context.getDeviceFeatures(); + + if (!deviceFeatures.wideLines) + throw tcu::NotSupportedError("Line width test is unsupported"); + } + m_topology = vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST; m_data.push_back(PositionColorVertex(tcu::Vec4(-1.0f, 0.0f, 0.0f, 1.0f), tcu::RGBA::green().toVec())); @@ -615,6 +643,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateVPTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateVPTests.cpp index acfdbc0..bd835cf 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateVPTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateVPTests.cpp @@ -108,6 +108,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -242,6 +243,17 @@ public: : DynamicStateBaseClass (context, shaders[glu::SHADERTYPE_VERTEX], shaders[glu::SHADERTYPE_FRAGMENT]) , m_geometryShaderName (shaders[glu::SHADERTYPE_GEOMETRY]) { + // Check geometry shader support + { + const vk::VkPhysicalDeviceFeatures& deviceFeatures = m_context.getDeviceFeatures(); + + if (!deviceFeatures.multiViewport) + throw tcu::NotSupportedError("Multi-viewport is not supported"); + + if (!deviceFeatures.geometryShader) + throw tcu::NotSupportedError("Geometry shaders are not supported"); + } + for (int i = 0; i < 4; i++) { m_data.push_back(PositionColorVertex(tcu::Vec4(-1.0f, 1.0f, (float)i / 3.0f, 1.0f), tcu::RGBA::green().toVec())); @@ -255,17 +267,6 @@ public: virtual void initPipeline (const vk::VkDevice device) { - // Check geometry shader support - { - const vk::VkPhysicalDeviceFeatures& deviceFeatures = m_context.getDeviceFeatures(); - - if (!deviceFeatures.multiViewport) - throw tcu::NotSupportedError("Multi-viewport is not supported"); - - if (!deviceFeatures.geometryShader) - throw tcu::NotSupportedError("Geometry shaders are not supported"); - } - const vk::Unique vs(createShaderModule(m_vk, device, m_context.getBinaryCollection().get(m_vertexShaderName), 0)); const vk::Unique gs(createShaderModule(m_vk, device, m_context.getBinaryCollection().get(m_geometryShaderName), 0)); const vk::Unique fs(createShaderModule(m_vk, device, m_context.getBinaryCollection().get(m_fragmentShaderName), 0)); @@ -339,6 +340,7 @@ public: DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp index 2914a4f..11fee12 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp @@ -67,25 +67,25 @@ namespace image namespace { -inline VkImageCreateInfo makeImageCreateInfo (const Texture& texture, const VkFormat format, const VkImageUsageFlags usage) +inline VkImageCreateInfo makeImageCreateInfo (const Texture& texture, const VkFormat format, const VkImageUsageFlags usage, const VkImageCreateFlags flags) { const VkImageCreateInfo imageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - (isCube(texture) ? (VkImageCreateFlags)VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : 0u), // VkImageCreateFlags flags; - mapImageType(texture.type()), // VkImageType imageType; - format, // VkFormat format; - makeExtent3D(texture.layerSize()), // VkExtent3D extent; - 1u, // deUint32 mipLevels; - (deUint32)texture.numLayers(), // deUint32 arrayLayers; - VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - usage, // VkImageUsageFlags usage; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 0u, // deUint32 queueFamilyIndexCount; - DE_NULL, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (isCube(texture) ? (VkImageCreateFlags)VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : 0u) | flags, // VkImageCreateFlags flags; + mapImageType(texture.type()), // VkImageType imageType; + format, // VkFormat format; + makeExtent3D(texture.layerSize()), // VkExtent3D extent; + 1u, // deUint32 mipLevels; + (deUint32)texture.numLayers(), // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + usage, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 0u, // deUint32 queueFamilyIndexCount; + DE_NULL, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; return imageParams; } @@ -253,13 +253,13 @@ void replaceSnormReinterpretValues (const tcu::PixelBufferAccess access) { const tcu::IVec4 color(access.getPixelInt(x, y, z)); tcu::IVec4 newColor = color; - + for (int i = 0; i < 4; ++i) { const deInt32 oldColor(color[i]); if (oldColor == -128) newColor[i] = -127; } - + if (newColor != color) access.setPixel(newColor, x, y, z); } @@ -355,9 +355,7 @@ void commandImageWriteBarrierBetweenShaderInvocations (Context& context, const V VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_GENERAL, image, fullImageSubresourceRange); - const void* const barriers[] = { &shaderWriteBarrier }; - - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier); } void commandBufferWriteBarrierBeforeHostRead (Context& context, const VkCommandBuffer cmdBuffer, const VkBuffer buffer, const VkDeviceSize bufferSizeBytes) @@ -368,9 +366,7 @@ void commandBufferWriteBarrierBeforeHostRead (Context& context, const VkCommandB VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, buffer, 0ull, bufferSizeBytes); - const void* const barriers[] = { &shaderWriteBarrier }; - - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } //! Copy all layers of an image to a buffer. @@ -389,19 +385,15 @@ void commandCopyImageToBuffer (Context& context, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, image, fullImageSubresourceRange); - const void* const barriersBeforeCopy[] = { &prepareForTransferBarrier }; - const VkBufferImageCopy copyRegion = makeBufferImageCopy(texture); const VkBufferMemoryBarrier copyBarrier = makeBufferMemoryBarrier( VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, buffer, 0ull, bufferSizeBytes); - const void* const barriersAfterCopy[] = { ©Barrier }; - - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersBeforeCopy), barriersBeforeCopy); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &prepareForTransferBarrier); vk.cmdCopyImageToBuffer(cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, buffer, 1u, ©Region); - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfterCopy), barriersAfterCopy); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, ©Barrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } //! Minimum chunk size is determined by the offset alignment requirements. @@ -682,7 +674,7 @@ ImageStoreTestInstance::ImageStoreTestInstance (Context& context, m_image = de::MovePtr(new Image( vk, device, allocator, - makeImageCreateInfo(m_texture, m_format, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT), + makeImageCreateInfo(m_texture, m_format, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, 0u), MemoryRequirement::Any)); // This buffer will be used to pass constants to the shader @@ -781,9 +773,7 @@ void ImageStoreTestInstance::commandBeforeCompute (const VkCommandBuffer cmdBuff VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, m_constantsBuffer->get(), 0ull, constantsBufferSize); - const void* const barriersBefore[] = { &writeConstantsBarrier, &setImageLayoutBarrier }; - - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersBefore), barriersBefore); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &writeConstantsBarrier, 1, &setImageLayoutBarrier); } void ImageStoreTestInstance::commandBetweenShaderInvocations (const VkCommandBuffer cmdBuffer) @@ -1074,18 +1064,19 @@ ImageLoadStoreTestInstance::ImageLoadStoreTestInstance (Context& context, : LoadStoreTestInstance (context, texture, format, imageFormat, singleLayerBind) , m_perLayerData (texture.numLayers()) { - const DeviceInterface& vk = m_context.getDeviceInterface(); - const VkDevice device = m_context.getDevice(); - Allocator& allocator = m_context.getDefaultAllocator(); + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + Allocator& allocator = m_context.getDefaultAllocator(); + const VkImageCreateFlags imageFlags = (m_format == m_imageFormat ? 0u : (VkImageCreateFlags)VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT); m_imageSrc = de::MovePtr(new Image( vk, device, allocator, - makeImageCreateInfo(m_texture, m_imageFormat, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT), + makeImageCreateInfo(m_texture, m_imageFormat, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, imageFlags), MemoryRequirement::Any)); m_imageDst = de::MovePtr(new Image( vk, device, allocator, - makeImageCreateInfo(m_texture, m_imageFormat, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT), + makeImageCreateInfo(m_texture, m_imageFormat, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, imageFlags), MemoryRequirement::Any)); } @@ -1159,24 +1150,24 @@ void ImageLoadStoreTestInstance::commandBeforeCompute (const VkCommandBuffer cmd const VkImageSubresourceRange fullImageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, m_texture.numLayers()); { - const VkImageMemoryBarrier barrierSetSrcImageLayout = makeImageMemoryBarrier( - 0u, 0u, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - m_imageSrc->get(), fullImageSubresourceRange); - - const VkImageMemoryBarrier barrierSetDstImageLayout = makeImageMemoryBarrier( - 0u, 0u, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, - m_imageDst->get(), fullImageSubresourceRange); + const VkImageMemoryBarrier preCopyImageBarriers[] = + { + makeImageMemoryBarrier( + 0u, 0u, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + m_imageSrc->get(), fullImageSubresourceRange), + makeImageMemoryBarrier( + 0u, 0u, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, + m_imageDst->get(), fullImageSubresourceRange) + }; const VkBufferMemoryBarrier barrierFlushHostWriteBeforeCopy = makeBufferMemoryBarrier( VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT, m_imageBuffer->get(), 0ull, m_imageSizeBytes); - const void* const barriers[] = { &barrierSetSrcImageLayout, &barrierSetDstImageLayout, &barrierFlushHostWriteBeforeCopy }; - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT, - DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &barrierFlushHostWriteBeforeCopy, DE_LENGTH_OF_ARRAY(preCopyImageBarriers), preCopyImageBarriers); } { const VkImageMemoryBarrier barrierAfterCopy = makeImageMemoryBarrier( @@ -1184,12 +1175,10 @@ void ImageLoadStoreTestInstance::commandBeforeCompute (const VkCommandBuffer cmd VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, m_imageSrc->get(), fullImageSubresourceRange); - const void* const barriers[] = { &barrierAfterCopy }; - const VkBufferImageCopy copyRegion = makeBufferImageCopy(m_texture); vk.cmdCopyBufferToImage(cmdBuffer, m_imageBuffer->get(), m_imageSrc->get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, ©Region); - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &barrierAfterCopy); } } diff --git a/external/vulkancts/modules/vulkan/image/vktImageQualifiersTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageQualifiersTests.cpp index cc04fba..dadc7d5 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageQualifiersTests.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageQualifiersTests.cpp @@ -598,8 +598,7 @@ void MemoryQualifierInstanceImage::commandsBeforeCompute (const VkCommandBuffer m_image->get(), subresourceRange); - const void* preComputeBarriers[] = { &imageLayoutBarrier }; - deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preComputeBarriers), preComputeBarriers); + deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageLayoutBarrier); } void MemoryQualifierInstanceImage::commandsAfterCompute (const VkCommandBuffer cmdBuffer, const VkDeviceSize bufferSizeInBytes) const @@ -615,8 +614,7 @@ void MemoryQualifierInstanceImage::commandsAfterCompute (const VkCommandBuffer c m_image->get(), subresourceRange); - const void* preCopyBarriers[] = { &imagePreCopyBarrier }; - deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(preCopyBarriers), preCopyBarriers); + deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imagePreCopyBarrier); const VkBufferImageCopy copyParams = makeBufferImageCopy(vk::makeExtent3D(m_imageSize.x(), m_imageSize.y(), m_imageSize.z()), m_imageSize.w()); deviceInterface.cmdCopyImageToBuffer(cmdBuffer, m_image->get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_buffer->get(), 1u, ©Params); @@ -628,8 +626,7 @@ void MemoryQualifierInstanceImage::commandsAfterCompute (const VkCommandBuffer c 0ull, bufferSizeInBytes); - const void* postCopyBarriers[] = { &bufferPostCopyBarrier }; - deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(postCopyBarriers), postCopyBarriers); + deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferPostCopyBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } class MemoryQualifierInstanceBuffer : public MemoryQualifierInstanceBase @@ -708,8 +705,7 @@ void MemoryQualifierInstanceBuffer::commandsAfterCompute (const VkCommandBuffer 0ull, bufferSizeInBytes); - const void* barriers[] = { &shaderWriteBarrier }; - deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + deviceInterface.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } TestInstance* MemoryQualifierTestCase::createInstance (Context& context) const diff --git a/external/vulkancts/modules/vulkan/image/vktImageSizeTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageSizeTests.cpp index 5db47da..e704871 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageSizeTests.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageSizeTests.cpp @@ -303,8 +303,6 @@ tcu::TestStatus SizeTestInstance::iterate (void) VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, m_resultBuffer->get(), 0ull, m_resultBufferSizeBytes); - const void* const barriersAfter[] = { &shaderWriteBarrier }; - // Create the pipeline. const Unique shaderModule(createShaderModule(vk, device, m_context.getBinaryCollection().get("comp"), 0)); @@ -325,7 +323,7 @@ tcu::TestStatus SizeTestInstance::iterate (void) commandBeforeCompute(*cmdBuffer); vk.cmdDispatch(*cmdBuffer, 1, 1, 1); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriersAfter), barriersAfter); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &shaderWriteBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); endCommandBuffer(vk, *cmdBuffer); @@ -418,9 +416,7 @@ void ImageSizeTestInstance::commandBeforeCompute (const VkCommandBuffer cmdBuffe VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, m_image->get(), subresourceRange); - const void* const barriers[] = { &barrierSetImageLayout }; - - vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &barrierSetImageLayout); } class BufferSizeTestInstance : public SizeTestInstance diff --git a/external/vulkancts/modules/vulkan/image/vktImageTestsUtil.cpp b/external/vulkancts/modules/vulkan/image/vktImageTestsUtil.cpp index d22e4cb..add8b64 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageTestsUtil.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageTestsUtil.cpp @@ -276,12 +276,7 @@ void beginCommandBuffer (const DeviceInterface& vk, const VkCommandBuffer comman VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - DE_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(commandBuffer, &commandBufBeginParams)); } @@ -309,6 +304,7 @@ void submitCommandsAndWait (const DeviceInterface& vk, DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &commandBuffer, // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp index 3582487..af0cac0 100644 --- a/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp +++ b/external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp @@ -118,7 +118,7 @@ tcu::TestStatus AllocateFreeTestInstance::iterate (void) if (m_memoryTypeIndex == 0) { log << TestLog::Message << "Memory allocation count: " << m_config.memoryAllocationCount << TestLog::EndMessage; - log << TestLog::Message << "Single allocation size: " << (m_config.memorySize ? de::toString(*m_config.memorySize) : de::toString(100.0f * (*m_config.memoryPercentage)) + " of heap size.D") << TestLog::EndMessage; + log << TestLog::Message << "Single allocation size: " << (m_config.memorySize ? de::toString(*m_config.memorySize) : de::toString(100.0f * (*m_config.memoryPercentage)) + " percent of the heap size.") << TestLog::EndMessage; if (m_config.order == TestConfig::ALLOC_REVERSE_FREE) log << TestLog::Message << "Memory is freed in reversed order. " << TestLog::EndMessage; @@ -475,9 +475,9 @@ tcu::TestCaseGroup* createAllocationTests (tcu::TestContext& testCtx) { "1MiB", 1*MiB } }; - const float allocationPercents[] = + const int allocationPercents[] = { - 0.01f + 1 }; const int allocationCounts[] = @@ -552,8 +552,8 @@ tcu::TestCaseGroup* createAllocationTests (tcu::TestContext& testCtx) for (size_t allocationPercentNdx = 0; allocationPercentNdx < DE_LENGTH_OF_ARRAY(allocationPercents); allocationPercentNdx++) { - const float allocationPercent = allocationPercents[allocationPercentNdx]; - de::MovePtr percentGroup (new tcu::TestCaseGroup(testCtx, ("percent_" + de::toString((int)(100.0f * allocationPercent))).c_str(), ("Test different allocation percents " + de::toString(allocationPercent * 100.0f)).c_str())); + const int allocationPercent = allocationPercents[allocationPercentNdx]; + de::MovePtr percentGroup (new tcu::TestCaseGroup(testCtx, ("percent_" + de::toString(allocationPercent)).c_str(), ("Test different allocation percents " + de::toString(allocationPercent)).c_str())); for (size_t orderNdx = 0; orderNdx < DE_LENGTH_OF_ARRAY(orders); orderNdx++) { @@ -566,17 +566,17 @@ tcu::TestCaseGroup* createAllocationTests (tcu::TestContext& testCtx) { const int allocationCount = allocationCounts[allocationCountNdx]; - if ((allocationCount != -1) && ((float)allocationCount * allocationPercent >= 1.00f / 8.00f)) + if ((allocationCount != -1) && ((float)allocationCount * (float)allocationPercent >= 1.00f / 8.00f)) continue; TestConfig config; - config.memoryPercentage = allocationPercent; + config.memoryPercentage = (float)allocationPercent / 100.0f; config.order = order; if (allocationCount == -1) { - config.memoryAllocationCount = (int)((1.00f / 8.00f) / allocationPercent); + config.memoryAllocationCount = (int)((1.00f / 8.00f) / ((float)allocationPercent / 100.0f)); if (config.memoryAllocationCount == 0 || config.memoryAllocationCount == 1 diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryPipelineBarrierTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryPipelineBarrierTests.cpp index 196906d..4ac9b4a 100644 --- a/external/vulkancts/modules/vulkan/memory/vktMemoryPipelineBarrierTests.cpp +++ b/external/vulkancts/modules/vulkan/memory/vktMemoryPipelineBarrierTests.cpp @@ -92,6 +92,7 @@ namespace enum { ALL_PIPELINE_STAGES = vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT + | vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT | vk::VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT | vk::VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | vk::VK_PIPELINE_STAGE_VERTEX_SHADER_BIT @@ -215,6 +216,7 @@ enum Access enum PipelineStage { PIPELINESTAGE_TOP_OF_PIPE_BIT = 0, + PIPELINESTAGE_BOTTOM_OF_PIPE_BIT, PIPELINESTAGE_DRAW_INDIRECT_BIT, PIPELINESTAGE_VERTEX_INPUT_BIT, PIPELINESTAGE_VERTEX_SHADER_BIT, @@ -237,6 +239,7 @@ PipelineStage pipelineStageFlagToPipelineStage (vk::VkPipelineStageFlagBits flag switch (flags) { case vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT: return PIPELINESTAGE_TOP_OF_PIPE_BIT; + case vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT: return PIPELINESTAGE_BOTTOM_OF_PIPE_BIT; case vk::VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT: return PIPELINESTAGE_DRAW_INDIRECT_BIT; case vk::VK_PIPELINE_STAGE_VERTEX_INPUT_BIT: return PIPELINESTAGE_VERTEX_INPUT_BIT; case vk::VK_PIPELINE_STAGE_VERTEX_SHADER_BIT: return PIPELINESTAGE_VERTEX_SHADER_BIT; @@ -500,11 +503,10 @@ vk::Move createBeginCommandBuffer (const vk::DeviceInterfac vk::VkCommandPool pool, vk::VkCommandBufferLevel level) { - const vk::VkCommandBufferBeginInfo beginInfo = + const vk::VkCommandBufferInheritanceInfo inheritInfo = { - vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, DE_NULL, - 0u, 0, 0, 0, @@ -512,6 +514,13 @@ vk::Move createBeginCommandBuffer (const vk::DeviceInterfac 0u, 0u }; + const vk::VkCommandBufferBeginInfo beginInfo = + { + vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + DE_NULL, + 0u, + (level == vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY ? &inheritInfo : (const vk::VkCommandBufferInheritanceInfo*)DE_NULL), + }; vk::Move commandBuffer (createCommandBuffer(vkd, device, pool, level)); @@ -687,6 +696,7 @@ void queueRun (const vk::DeviceInterface& vkd, 0, DE_NULL, + (const vk::VkPipelineStageFlags*)DE_NULL, 1, &commandBuffer, @@ -908,7 +918,7 @@ IVec2 findImageSizeWxHx4 (vk::VkDeviceSize size) IVec2 findMaxRGBA8ImageSize (const vk::DeviceInterface& vkd, vk::VkDevice device, - vk::VkBufferUsageFlags usage, + vk::VkImageUsageFlags usage, vk::VkSharingMode sharingMode, const vector& queueFamilies, @@ -938,9 +948,9 @@ IVec2 findMaxRGBA8ImageSize (const vk::DeviceInterface& vkd, vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - currentSize[0], - currentSize[1], - 1, + (deUint32)currentSize[0], + (deUint32)currentSize[1], + 1u, }, 1u, 1u, vk::VK_SAMPLE_COUNT_1_BIT, @@ -1642,9 +1652,9 @@ void CreateImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_imageWidth, - m_imageHeight, - 1, + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u, }, 1u, 1u, vk::VK_SAMPLE_COUNT_1_BIT, @@ -1900,6 +1910,7 @@ void SubmitCommandBuffer::execute (ExecuteContext& context) 0, DE_NULL, + (const vk::VkPipelineStageFlags*)DE_NULL, 1, &cmd, @@ -1995,6 +2006,8 @@ void PipelineBarrier::submit (SubmitContext& context) const vk::DeviceInterface& vkd = context.getContext().getDeviceInterface(); const vk::VkCommandBuffer cmd = context.getCommandBuffer(); + // \todo [2016-01-08 pyry] This could be cleaned up thanks to latest API changes + switch (m_type) { case TYPE_GLOBAL: @@ -2007,12 +2020,8 @@ void PipelineBarrier::submit (SubmitContext& context) m_srcAccesses, m_dstAccesses }; - const void* const barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, (vk::VkDependencyFlags)0, 1, &barrier, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); break; } @@ -2033,12 +2042,8 @@ void PipelineBarrier::submit (SubmitContext& context) 0, vk::VK_WHOLE_SIZE }; - const void* const barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &barrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); break; } @@ -2046,7 +2051,7 @@ void PipelineBarrier::submit (SubmitContext& context) { const vk::VkImageMemoryBarrier barrier = { - vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, DE_NULL, m_srcAccesses, @@ -2065,12 +2070,8 @@ void PipelineBarrier::submit (SubmitContext& context) 0, 1 } }; - const void* const barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(cmd, m_srcStages, m_dstStages, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &barrier); break; } @@ -2086,6 +2087,7 @@ public: ~ImageTransition (void) {} const char* getName (void) const { return "ImageTransition"; } + void prepare (PrepareContext& context); void logSubmit (TestLog& log, size_t commandIndex) const; void submit (SubmitContext& context); }; @@ -2095,6 +2097,11 @@ void ImageTransition::logSubmit (TestLog& log, size_t commandIndex) const log << TestLog::Message << commandIndex << ":" << getName() << " Use pipeline barrier to trasition to VK_IMAGE_LAYOUT_GENERAL." << TestLog::EndMessage; } +void ImageTransition::prepare (PrepareContext& context) +{ + context.setImageLayout(vk::VK_IMAGE_LAYOUT_GENERAL); +} + void ImageTransition::submit (SubmitContext& context) { const vk::DeviceInterface& vkd = context.getContext().getDeviceInterface(); @@ -2120,12 +2127,8 @@ void ImageTransition::submit (SubmitContext& context) 0u, 1u } }; - const void* const barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(cmd, ALL_PIPELINE_STAGES, ALL_PIPELINE_STAGES, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(cmd, ALL_PIPELINE_STAGES, ALL_PIPELINE_STAGES, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &barrier); } class FillBuffer : public CmdCommand @@ -2317,12 +2320,7 @@ void BufferCopyToBuffer::verify (VerifyContext& context, size_t commandIndex) vk::VK_WHOLE_SIZE }; - const void* barriers[] = - { - &barrier - }; - - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &barrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -2494,9 +2492,9 @@ void BufferCopyToImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_imageWidth, - m_imageHeight, - 1, + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -2540,12 +2538,8 @@ void BufferCopyToImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &barrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -2573,9 +2567,9 @@ void BufferCopyToImage::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -2635,10 +2629,6 @@ void BufferCopyToImage::verify (VerifyContext& context, size_t commandIndex) vk::VK_WHOLE_SIZE }; - const void* preBarriers[] = - { - &imageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -2651,19 +2641,15 @@ void BufferCopyToImage::verify (VerifyContext& context, size_t commandIndex) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; - const void* postBarriers[] = - { - &bufferBarrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vkd.cmdCopyImageToBuffer(*commandBuffer, *m_dstImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstBuffer, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); @@ -2753,9 +2739,9 @@ void BufferCopyFromImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_imageWidth, - m_imageHeight, - 1, + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -2775,7 +2761,7 @@ void BufferCopyFromImage::prepare (PrepareContext& context) m_memory = bindImageMemory(vki, vkd, physicalDevice, device, *m_srcImage, 0); { - const vk::Unique srcBuffer (createBuffer(vkd, device, 4 * m_imageWidth * m_imageHeight, vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT, vk::VK_SHARING_MODE_EXCLUSIVE, queueFamilies)); + const vk::Unique srcBuffer (createBuffer(vkd, device, 4 * m_imageWidth * m_imageHeight, vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT, vk::VK_SHARING_MODE_EXCLUSIVE, queueFamilies)); const vk::Unique memory (bindBufferMemory(vki, vkd, physicalDevice, device, *srcBuffer, vk::VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); const vk::Unique commandBuffer (createBeginCommandBuffer(vkd, device, commandPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY)); const vk::VkImageMemoryBarrier preImageBarrier = @@ -2824,14 +2810,6 @@ void BufferCopyFromImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* preBarriers[] = - { - &preImageBarrier - }; - const void* postBarriers[] = - { - &postImageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -2844,9 +2822,9 @@ void BufferCopyFromImage::prepare (PrepareContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -2865,9 +2843,9 @@ void BufferCopyFromImage::prepare (PrepareContext& context) vkd.unmapMemory(device, *memory); } - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &preImageBarrier); vkd.cmdCopyBufferToImage(*commandBuffer, *srcBuffer, *m_srcImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -2895,9 +2873,9 @@ void BufferCopyFromImage::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -2977,9 +2955,9 @@ void ImageCopyToBuffer::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -3010,12 +2988,7 @@ void ImageCopyToBuffer::verify (VerifyContext& context, size_t commandIndex) vk::VK_WHOLE_SIZE }; - const void* barriers[] = - { - &barrier - }; - - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &barrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -3115,9 +3088,9 @@ void ImageCopyFromBuffer::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -3198,9 +3171,9 @@ void ImageCopyFromImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_imageWidth, - m_imageHeight, - 1, + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -3220,7 +3193,7 @@ void ImageCopyFromImage::prepare (PrepareContext& context) m_memory = bindImageMemory(vki, vkd, physicalDevice, device, *m_srcImage, 0); { - const vk::Unique srcBuffer (createBuffer(vkd, device, 4 * m_imageWidth * m_imageHeight, vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT, vk::VK_SHARING_MODE_EXCLUSIVE, queueFamilies)); + const vk::Unique srcBuffer (createBuffer(vkd, device, 4 * m_imageWidth * m_imageHeight, vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT, vk::VK_SHARING_MODE_EXCLUSIVE, queueFamilies)); const vk::Unique memory (bindBufferMemory(vki, vkd, physicalDevice, device, *srcBuffer, vk::VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); const vk::Unique commandBuffer (createBeginCommandBuffer(vkd, device, commandPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY)); const vk::VkImageMemoryBarrier preImageBarrier = @@ -3269,14 +3242,6 @@ void ImageCopyFromImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* preBarriers[] = - { - &preImageBarrier - }; - const void* postBarriers[] = - { - &postImageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -3289,9 +3254,9 @@ void ImageCopyFromImage::prepare (PrepareContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -3310,9 +3275,9 @@ void ImageCopyFromImage::prepare (PrepareContext& context) vkd.unmapMemory(device, *memory); } - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &preImageBarrier); vkd.cmdCopyBufferToImage(*commandBuffer, *srcBuffer, *m_srcImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -3346,9 +3311,9 @@ void ImageCopyFromImage::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -3428,9 +3393,9 @@ void ImageCopyToImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_imageWidth, - m_imageHeight, - 1, + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -3474,12 +3439,8 @@ void ImageCopyToImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &barrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -3513,9 +3474,9 @@ void ImageCopyToImage::submit (SubmitContext& context) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; @@ -3573,11 +3534,6 @@ void ImageCopyToImage::verify (VerifyContext& context, size_t commandIndex) 0, vk::VK_WHOLE_SIZE }; - - const void* preBarriers[] = - { - &imageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -3590,19 +3546,15 @@ void ImageCopyToImage::verify (VerifyContext& context, size_t commandIndex) }, { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + (deUint32)m_imageWidth, + (deUint32)m_imageHeight, + 1u } }; - const void* postBarriers[] = - { - &bufferBarrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vkd.cmdCopyImageToBuffer(*commandBuffer, *m_dstImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstBuffer, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); @@ -3699,9 +3651,9 @@ void ImageBlitFromImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_srcImageWidth, - m_srcImageHeight, - 1, + (deUint32)m_srcImageWidth, + (deUint32)m_srcImageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -3770,14 +3722,6 @@ void ImageBlitFromImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* preBarriers[] = - { - &preImageBarrier - }; - const void* postBarriers[] = - { - &postImageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -3790,9 +3734,9 @@ void ImageBlitFromImage::prepare (PrepareContext& context) }, { 0, 0, 0 }, { - m_srcImageWidth, - m_srcImageHeight, - 1 + (deUint32)m_srcImageWidth, + (deUint32)m_srcImageHeight, + 1u } }; @@ -3811,9 +3755,9 @@ void ImageBlitFromImage::prepare (PrepareContext& context) vkd.unmapMemory(device, *memory); } - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &preImageBarrier); vkd.cmdCopyBufferToImage(*commandBuffer, *srcBuffer, *m_srcImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -3838,11 +3782,13 @@ void ImageBlitFromImage::submit (SubmitContext& context) 0, // arrayLayer 1 // layerCount }, - { 0, 0, 0 }, { - m_srcImageWidth, - m_srcImageHeight, - 1 + { 0, 0, 0 }, + { + m_srcImageWidth, + m_srcImageHeight, + 1 + }, }, // Dst @@ -3852,11 +3798,13 @@ void ImageBlitFromImage::submit (SubmitContext& context) 0, // arrayLayer 1 // layerCount }, - { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + { 0, 0, 0 }, + { + m_imageWidth, + m_imageHeight, + 1u + } } }; vkd.cmdBlitImage(commandBuffer, *m_srcImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, context.getImage(), context.getImageLayout(), 1, ®ion, vk::VK_FILTER_NEAREST); @@ -3975,9 +3923,9 @@ void ImageBlitToImage::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, { - m_dstImageWidth, - m_dstImageHeight, - 1, + (deUint32)m_dstImageWidth, + (deUint32)m_dstImageHeight, + 1u, }, 1, 1, // mipLevels, arrayLayers vk::VK_SAMPLE_COUNT_1_BIT, @@ -4021,12 +3969,8 @@ void ImageBlitToImage::prepare (PrepareContext& context) 1 // Layer count } }; - const void* barriers[] = - { - &barrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &barriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &barrier); VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); queueRun(vkd, queue, *commandBuffer); @@ -4051,11 +3995,13 @@ void ImageBlitToImage::submit (SubmitContext& context) 0, // arrayLayer 1 // layerCount }, - { 0, 0, 0 }, { - m_imageWidth, - m_imageHeight, - 1 + { 0, 0, 0 }, + { + m_imageWidth, + m_imageHeight, + 1 + }, }, // Dst @@ -4065,11 +4011,13 @@ void ImageBlitToImage::submit (SubmitContext& context) 0, // arrayLayer 1 // layerCount }, - { 0, 0, 0 }, { - m_dstImageWidth, - m_dstImageHeight, - 1 + { 0, 0, 0 }, + { + m_dstImageWidth, + m_dstImageHeight, + 1u + } } }; vkd.cmdBlitImage(commandBuffer, context.getImage(), context.getImageLayout(), *m_dstImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion, vk::VK_FILTER_NEAREST); @@ -4126,11 +4074,6 @@ void ImageBlitToImage::verify (VerifyContext& context, size_t commandIndex) 0, vk::VK_WHOLE_SIZE }; - - const void* preBarriers[] = - { - &imageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -4143,19 +4086,15 @@ void ImageBlitToImage::verify (VerifyContext& context, size_t commandIndex) }, { 0, 0, 0 }, { - m_dstImageWidth, - m_dstImageHeight, + (deUint32)m_dstImageWidth, + (deUint32)m_dstImageHeight, 1 } }; - const void* postBarriers[] = - { - &bufferBarrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vkd.cmdCopyImageToBuffer(*commandBuffer, *m_dstImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstBuffer, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); @@ -4398,7 +4337,7 @@ void SubmitRenderPass::prepare (PrepareContext& context) vk::VK_IMAGE_TYPE_2D, vk::VK_FORMAT_R8G8B8A8_UNORM, - { m_targetWidth, m_targetHeight, 1 }, + { (deUint32)m_targetWidth, (deUint32)m_targetHeight, 1u }, 1u, 1u, vk::VK_SAMPLE_COUNT_1_BIT, @@ -4509,7 +4448,7 @@ void SubmitRenderPass::submit (SubmitContext& context) *m_renderPass, *m_framebuffer, - { { 0, 0 }, { m_targetWidth, m_targetHeight } }, + { { 0, 0 }, { (deUint32)m_targetWidth, (deUint32)m_targetHeight } }, 1u, &clearValue }; @@ -4591,11 +4530,6 @@ void SubmitRenderPass::verify (VerifyContext& context, size_t commandIndex) 0, vk::VK_WHOLE_SIZE }; - - const void* preBarriers[] = - { - &imageBarrier - }; const vk::VkBufferImageCopy region = { 0, @@ -4608,19 +4542,15 @@ void SubmitRenderPass::verify (VerifyContext& context, size_t commandIndex) }, { 0, 0, 0 }, { - m_targetWidth, - m_targetHeight, - 1 + (deUint32)m_targetWidth, + (deUint32)m_targetHeight, + 1u } }; - const void* postBarriers[] = - { - &bufferBarrier - }; - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1, &preBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vkd.cmdCopyImageToBuffer(*commandBuffer, *m_colorTarget, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstBuffer, 1, ®ion); - vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &postBarriers[0]); + vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, 0, (const vk::VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vkd.endCommandBuffer(*commandBuffer)); @@ -4818,7 +4748,7 @@ void RenderBuffer::prepare (PrepareRenderPassContext& context) }; const vk::VkRect2D scissors[] = { - { { 0, 0 }, { context.getTargetWidth(), context.getTargetHeight() } } + { { 0, 0 }, { (deUint32)context.getTargetWidth(), (deUint32)context.getTargetHeight() } } }; const vk::VkPipelineViewportStateCreateInfo viewportState = { @@ -5458,6 +5388,7 @@ void getAvailableOps (const State& state, bool supportsBuffers, bool supportsIma && usage & USAGE_HOST_WRITE && state.memoryDefined && state.hostInvalidated + && state.queueIdle && state.cache.isValid(vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_ACCESS_HOST_WRITE_BIT) && state.cache.isValid(vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_ACCESS_HOST_READ_BIT)) { @@ -5467,6 +5398,7 @@ void getAvailableOps (const State& state, bool supportsBuffers, bool supportsIma if (usage & USAGE_HOST_READ && state.memoryDefined && state.hostInvalidated + && state.queueIdle && state.cache.isValid(vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_ACCESS_HOST_READ_BIT)) { ops.push_back(OP_MAP_READ); @@ -5474,6 +5406,7 @@ void getAvailableOps (const State& state, bool supportsBuffers, bool supportsIma if (usage & USAGE_HOST_WRITE && state.hostInvalidated + && state.queueIdle && state.cache.isValid(vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_ACCESS_HOST_WRITE_BIT)) { ops.push_back(OP_MAP_WRITE); @@ -6411,7 +6344,18 @@ tcu::TestStatus MemoryTestInstance::iterate (void) log << TestLog::Message << "Max buffer size: " << maxBufferSize << TestLog::EndMessage; log << TestLog::Message << "Max RGBA8 image size: " << maxImageSize << TestLog::EndMessage; - testCommand(log, m_resultCollector, m_context.getBinaryCollection(), vki, vkd, physicalDevice, device, m_config.size, m_memoryTypeNdx, m_config.usage, m_config.sharing, queue, queueFamilyIndex, queues, maxBufferSize, maxImageSize); + + // Skip tests if there are no supported operations + if (maxBufferSize == 0 + && maxImageSize[0] == 0 + && (m_config.usage & (USAGE_HOST_READ|USAGE_HOST_WRITE)) == 0) + { + log << TestLog::Message << "Skipping memory type. None of the usages are supported." << TestLog::EndMessage; + } + else + { + testCommand(log, m_resultCollector, m_context.getBinaryCollection(), vki, vkd, physicalDevice, device, m_config.size, m_memoryTypeNdx, m_config.usage, m_config.sharing, queue, queueFamilyIndex, queues, maxBufferSize, maxImageSize); + } } catch (const tcu::TestError& e) { @@ -6453,7 +6397,7 @@ struct AddPrograms "highp float;\n" "void main (void) {\n" "\tgl_PointSize = 1.0;\n" - "\thighp vec2 pos = vec2(gl_VertexID % 256, gl_VertexID / 256) / vec2(255.0);\n" + "\thighp vec2 pos = vec2(gl_VertexIndex % 256, gl_VertexIndex / 256) / vec2(255.0);\n" "\tgl_Position = vec4(1.999 * pos - vec2(0.999), 0.0, 1.0);\n" "}\n"; @@ -6482,8 +6426,10 @@ tcu::TestCaseGroup* createPipelineBarrierTests (tcu::TestContext& testCtx) de::MovePtr group (new tcu::TestCaseGroup(testCtx, "pipeline_barrier", "Pipeline barrier tests.")); const vk::VkDeviceSize sizes[] = { - 1024, - 1024*1024, + 1024, // 1K + 8*1024, // 8K + 64*1024, // 64K + 1024*1024, // 1M }; const Usage usages[] = { diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp index 1e81530..96a34de 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp @@ -139,7 +139,7 @@ private: VkPipelineColorBlendAttachmentState m_blendStates[BlendTest::QUAD_COUNT]; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; VkImageCreateInfo m_colorImageCreateInfo; @@ -739,12 +739,7 @@ BlendTestInstance::BlendTestInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -808,6 +803,7 @@ tcu::TestStatus BlendTestInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp index 35ddbab..a242a7e 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp @@ -148,7 +148,7 @@ private: private: VkCompareOp m_depthCompareOps[DepthTest::QUAD_COUNT]; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; const VkFormat m_depthFormat; @@ -738,12 +738,7 @@ DepthTestInstance::DepthTestInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValues[2] = @@ -811,6 +806,7 @@ tcu::TestStatus DepthTestInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp index c5601e6..27a0762 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp @@ -324,7 +324,7 @@ static MovePtr createRefProgram(const tcu::TextureFormat& renderTarge } // anonymous ImageSamplingInstance::ImageSamplingInstance (Context& context, - const tcu::IVec2& renderSize, + const tcu::UVec2& renderSize, VkImageViewType imageViewType, VkFormat imageFormat, const tcu::IVec3& imageSize, @@ -377,9 +377,9 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, getCompatibleImageType(m_imageViewType), // VkImageType imageType; imageFormat, // VkFormat format; { // VkExtent3D extent; - m_imageSize.x(), - m_imageSize.y(), - m_imageSize.z() + (deUint32)m_imageSize.x(), + (deUint32)m_imageSize.y(), + (deUint32)m_imageSize.z() }, (deUint32)m_texture->getNumLevels(), // deUint32 mipLevels; (deUint32)m_layerCount, // deUint32 arrayLayers; @@ -458,7 +458,7 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, 0u, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y(), 1u }, // VkExtent3D extent; 1u, // deUint32 mipLevels; 1u, // deUint32 arrayLayers; VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; @@ -654,7 +654,7 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, 1.0f // float maxDepth; }; - const VkRect2D scissor = { { 0, 0 }, { m_renderSize.x(), m_renderSize.y() } }; + const VkRect2D scissor = { { 0, 0 }, { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } }; const VkPipelineViewportStateCreateInfo viewportStateParams = { @@ -845,12 +845,7 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -861,7 +856,10 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, DE_NULL, // const void* pNext; *m_renderPass, // VkRenderPass renderPass; *m_framebuffer, // VkFramebuffer framebuffer; - { { 0, 0 }, { m_renderSize.x(), m_renderSize.y() } }, // VkRect2D renderArea; + { + { 0, 0 }, + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } + }, // VkRect2D renderArea; 1, // deUint32 clearValueCount; &attachmentClearValue // const VkClearValue* pClearValues; }; @@ -911,6 +909,7 @@ tcu::TestStatus ImageSamplingInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp index 653c1ae..8b5eae6 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp @@ -53,7 +53,7 @@ class ImageSamplingInstance : public vkt::TestInstance { public: ImageSamplingInstance (Context& context, - const tcu::IVec2& renderSize, + const tcu::UVec2& renderSize, vk::VkImageViewType imageViewType, vk::VkFormat imageFormat, const tcu::IVec3& imageSize, @@ -87,7 +87,7 @@ private: vk::Move m_sampler; de::MovePtr m_texture; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const vk::VkFormat m_colorFormat; vk::Move m_descriptorPool; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp index 0958a7a..58f1a7f 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp @@ -154,16 +154,16 @@ void ImageTest::initPrograms (SourceCollections& sourceCollections) const TestInstance* ImageTest::createInstance (Context& context) const { - tcu::IVec2 renderSize; + tcu::UVec2 renderSize; if (m_imageViewType == VK_IMAGE_VIEW_TYPE_1D || m_imageViewType == VK_IMAGE_VIEW_TYPE_2D) { - renderSize = tcu::IVec2(m_imageSize.x(), m_imageSize.y()); + renderSize = tcu::UVec2((deUint32)m_imageSize.x(), (deUint32)m_imageSize.y()); } else { // Draw a 3x2 grid of texture layers - renderSize = tcu::IVec2(m_imageSize.x() * 3, m_imageSize.y() * 2); + renderSize = tcu::UVec2((deUint32)m_imageSize.x() * 3, (deUint32)m_imageSize.y() * 2); } const std::vector vertices = createTestQuadMosaic(m_imageViewType); @@ -189,6 +189,7 @@ TestInstance* ImageTest::createInstance (Context& context) const VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; 0.0f, // float mipLodBias; + VK_FALSE, // VkBool32 anisotropyEnable; 1.0f, // float maxAnisotropy; false, // VkBool32 compareEnable; VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp index 20f4194..6664d05 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp @@ -48,26 +48,38 @@ namespace pipeline using namespace vk; -/*! Gets the next multiple of M */ -template -static int getNextMultiple(deUint32 value) +/*! Gets the next multiple of a given divisor */ +static deUint32 getNextMultiple (deUint32 divisor, deUint32 value) { - if (value % M == 0) + if (value % divisor == 0) { return value; } - return value + M - (value % M); + return value + divisor - (value % divisor); } -static int getNextMultiple (deUint32 M, deUint32 value) +/*! Gets the next value that is multiple of all given divisors */ +static deUint32 getNextMultiple (const std::vector& divisors, deUint32 value) { - if (value % M == 0) + deUint32 nextMultiple = value; + bool nextMultipleFound = false; + + while (true) { - return value; + nextMultipleFound = true; + + for (size_t divNdx = 0; divNdx < divisors.size(); divNdx++) + nextMultipleFound = nextMultipleFound && (nextMultiple % divisors[divNdx] == 0); + + if (nextMultipleFound) + break; + + DE_ASSERT(nextMultiple < ~((deUint32)0u)); + nextMultiple = getNextMultiple(divisors[0], nextMultiple + 1); } - return value + M - (value % M); -} + return nextMultiple; +} bool isSupportedSamplableFormat (const InstanceInterface& instanceInterface, VkPhysicalDevice device, VkFormat format) { @@ -136,7 +148,7 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v vk::Allocator& allocator, vk::VkImage image, vk::VkFormat format, - const tcu::IVec2& renderSize) + const tcu::UVec2& renderSize) { Move buffer; de::MovePtr bufferAlloc; @@ -242,33 +254,25 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; - const void* const imageBarrierPtr = &imageBarrier; - const void* const bufferBarrierPtr = &bufferBarrier; - // Copy image to buffer const VkBufferImageCopy copyRegion = { - 0u, // VkDeviceSize bufferOffset; - (deUint32)renderSize.x(), // deUint32 bufferRowLength; - (deUint32)renderSize.y(), // deUint32 bufferImageHeight; - { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u }, // VkImageSubresourceLayers imageSubresource; - { 0, 0, 0 }, // VkOffset3D imageOffset; - { renderSize.x(), renderSize.y(), 1 } // VkExtent3D imageExtent; + 0u, // VkDeviceSize bufferOffset; + (deUint32)renderSize.x(), // deUint32 bufferRowLength; + (deUint32)renderSize.y(), // deUint32 bufferImageHeight; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u }, // VkImageSubresourceLayers imageSubresource; + { 0, 0, 0 }, // VkOffset3D imageOffset; + { renderSize.x(), renderSize.y(), 1u } // VkExtent3D imageExtent; }; VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier); vk.cmdCopyImageToBuffer(*cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1, ©Region); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); const VkSubmitInfo submitInfo = @@ -277,6 +281,7 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + DE_NULL, 1u, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -426,21 +431,9 @@ void uploadTestTexture (const DeviceInterface& vk, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; - const void* preCopyBarriers[2] = - { - &preBufferBarrier, - &preImageBarrier - }; - - const void* const postCopyBarrier = &postImageBarrier; const std::vector copyRegions = srcTexture.getBufferCopyRegions(); // Write buffer data @@ -449,9 +442,9 @@ void uploadTestTexture (const DeviceInterface& vk, // Copy buffer to image VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 2, preCopyBarriers); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &preBufferBarrier, 1, &preImageBarrier); vk.cmdCopyBufferToImage(*cmdBuffer, *buffer, destImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)copyRegions.size(), copyRegions.data()); - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &postCopyBarrier); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); @@ -461,6 +454,7 @@ void uploadTestTexture (const DeviceInterface& vk, DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + DE_NULL, 1u, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -527,14 +521,18 @@ TestTexture::~TestTexture (void) deUint32 TestTexture::getSize (void) const { - deUint32 textureSize = 0; + std::vector offsetMultiples; + deUint32 textureSize = 0; + + offsetMultiples.push_back(4); + offsetMultiples.push_back(getLevel(0, 0).getFormat().getPixelSize()); for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { const tcu::ConstPixelBufferAccess level = getLevel(levelNdx, layerNdx); - textureSize = getNextMultiple<4>(textureSize); + textureSize = getNextMultiple(offsetMultiples, textureSize); textureSize += level.getWidth() * level.getHeight() * level.getDepth() * level.getFormat().getPixelSize(); } } @@ -547,13 +545,17 @@ deUint32 TestTexture::getCompressedSize (void) const if (!isCompressed()) throw tcu::InternalError("Texture is not compressed"); - deUint32 textureSize = 0; + std::vector offsetMultiples; + deUint32 textureSize = 0; + + offsetMultiples.push_back(4); + offsetMultiples.push_back(tcu::getBlockSize(getCompressedLevel(0, 0).getFormat())); for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { - textureSize = getNextMultiple<4>(textureSize); + textureSize = getNextMultiple(offsetMultiples, textureSize); textureSize += getCompressedLevel(levelNdx, layerNdx).getDataSize(); } } @@ -579,18 +581,23 @@ const tcu::CompressedTexture& TestTexture::getCompressedLevel (int level, int la std::vector TestTexture::getBufferCopyRegions (void) const { + std::vector offsetMultiples; std::vector regions; deUint32 layerDataOffset = 0; + offsetMultiples.push_back(4); + if (isCompressed()) { + offsetMultiples.push_back(tcu::getBlockSize(getCompressedLevel(0, 0).getFormat())); + for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { const tcu::CompressedTexture& level = getCompressedLevel(levelNdx, layerNdx); tcu::IVec3 blockPixelSize = getBlockPixelSize(level.getFormat()); - layerDataOffset = getNextMultiple<4>(layerDataOffset); + layerDataOffset = getNextMultiple(offsetMultiples, layerDataOffset); const VkBufferImageCopy layerRegion = { @@ -605,9 +612,9 @@ std::vector TestTexture::getBufferCopyRegions (void) const }, { 0u, 0u, 0u }, // VkOffset3D imageOffset; { // VkExtent3D imageExtent; - level.getWidth(), - level.getHeight(), - level.getDepth() + (deUint32)level.getWidth(), + (deUint32)level.getHeight(), + (deUint32)level.getDepth() } }; @@ -618,13 +625,15 @@ std::vector TestTexture::getBufferCopyRegions (void) const } else { + offsetMultiples.push_back(getLevel(0, 0).getFormat().getPixelSize()); + for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { const tcu::ConstPixelBufferAccess level = getLevel(levelNdx, layerNdx); - layerDataOffset = getNextMultiple<4>(layerDataOffset); + layerDataOffset = getNextMultiple(offsetMultiples, layerDataOffset); const VkBufferImageCopy layerRegion = { @@ -639,9 +648,9 @@ std::vector TestTexture::getBufferCopyRegions (void) const }, { 0u, 0u, 0u }, // VkOffset3D imageOffset; { // VkExtent3D imageExtent; - level.getWidth(), - level.getHeight(), - level.getDepth() + (deUint32)level.getWidth(), + (deUint32)level.getHeight(), + (deUint32)level.getDepth() } }; @@ -656,15 +665,20 @@ std::vector TestTexture::getBufferCopyRegions (void) const void TestTexture::write (deUint8* destPtr) const { - deUint32 levelOffset = 0; + std::vector offsetMultiples; + deUint32 levelOffset = 0; + + offsetMultiples.push_back(4); if (isCompressed()) { + offsetMultiples.push_back(tcu::getBlockSize(getCompressedLevel(0, 0).getFormat())); + for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { - levelOffset = getNextMultiple<4>(levelOffset); + levelOffset = getNextMultiple(offsetMultiples, levelOffset); const tcu::CompressedTexture& compressedTex = getCompressedLevel(levelNdx, layerNdx); @@ -675,11 +689,13 @@ void TestTexture::write (deUint8* destPtr) const } else { + offsetMultiples.push_back(getLevel(0, 0).getFormat().getPixelSize()); + for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) { for (int layerNdx = 0; layerNdx < getArraySize(); layerNdx++) { - levelOffset = getNextMultiple<4>(levelOffset); + levelOffset = getNextMultiple(offsetMultiples, levelOffset); const tcu::ConstPixelBufferAccess srcAccess = getLevel(levelNdx, layerNdx); const tcu::PixelBufferAccess destAccess (srcAccess.getFormat(), srcAccess.getSize(), srcAccess.getPitch(), destPtr + levelOffset); @@ -716,7 +732,7 @@ void TestTexture::populateCompressedLevels (const tcu::CompressedTexFormat& form m_compressedLevels.push_back(compressedLevel); // Store decompressed data - compressedLevel->decompress(level); + compressedLevel->decompress(level, tcu::TexDecompressionParams::ASTCMODE_LDR); } } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp index ab6a214..e40d4c5 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp @@ -80,7 +80,7 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface vk::Allocator& allocator, vk::VkImage image, vk::VkFormat format, - const tcu::IVec2& renderSize); + const tcu::UVec2& renderSize); /*--------------------------------------------------------------------*//*! * Uploads data from a test texture to a destination VK image. diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp index 3a45949..8546796 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp @@ -75,13 +75,13 @@ public: virtual void initPrograms (SourceCollections& sourceCollections) const; virtual TestInstance* createInstance (Context& context) const; - static std::string getGlslSamplerType (const tcu::TextureFormat& format, + static std::string getGlslSamplerType (const tcu::TextureFormat& format, VkImageViewType type); - static tcu::IVec2 getRenderSize (VkImageViewType viewType); + static tcu::UVec2 getRenderSize (VkImageViewType viewType); static tcu::IVec3 getImageSize (VkImageViewType viewType); static int getArraySize (VkImageViewType viewType); static int getNumLevels (VkImageViewType viewType); - static tcu::Vec4 swizzle (tcu::Vec4 inputData, + static tcu::Vec4 swizzle (tcu::Vec4 inputData, VkComponentMapping componentMapping); private: VkImageViewType m_imageViewType; @@ -141,7 +141,7 @@ void ImageViewTest::initPrograms (SourceCollections& sourceCollections) const tcu::Vec4 swizzledScale = swizzle(formatInfo.lookupScale, m_componentMapping); tcu::Vec4 swizzledBias = swizzle(formatInfo.lookupBias, m_componentMapping); - + switch (m_imageViewType) { case VK_IMAGE_VIEW_TYPE_1D: @@ -199,7 +199,7 @@ void ImageViewTest::initPrograms (SourceCollections& sourceCollections) const TestInstance* ImageViewTest::createInstance (Context& context) const { - tcu::IVec2 renderSize = getRenderSize(m_imageViewType); + const tcu::UVec2 renderSize = getRenderSize(m_imageViewType); const tcu::IVec3 imageSize = getImageSize(m_imageViewType); const int arraySize = getArraySize(m_imageViewType); const std::vector vertices = createTestQuadMosaic(m_imageViewType); @@ -216,6 +216,7 @@ TestInstance* ImageViewTest::createInstance (Context& context) const VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; 0.0f, // float mipLodBias; + VK_FALSE, // VkBool32 anisotropyEnable; 1.0f, // float maxAnisotropy; false, // VkBool32 compareEnable; VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; @@ -275,12 +276,12 @@ std::string ImageViewTest::getGlslSamplerType (const tcu::TextureFormat& format, return samplerType.str(); } -tcu::IVec2 ImageViewTest::getRenderSize (VkImageViewType viewType) +tcu::UVec2 ImageViewTest::getRenderSize (VkImageViewType viewType) { if (viewType == VK_IMAGE_VIEW_TYPE_1D || viewType == VK_IMAGE_VIEW_TYPE_2D) - return tcu::IVec2(16, 16); + return tcu::UVec2(16u, 16u); else - return tcu::IVec2(16 * 3, 16 * 2); + return tcu::UVec2(16u * 3u, 16u * 2u); } tcu::IVec3 ImageViewTest::getImageSize (VkImageViewType viewType) diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAssemblyTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAssemblyTests.cpp index 4e7f358..e858cea 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAssemblyTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAssemblyTests.cpp @@ -170,7 +170,7 @@ private: std::vector m_indices; de::MovePtr m_indexBufferAlloc; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; VkImageCreateInfo m_colorImageCreateInfo; @@ -927,7 +927,7 @@ InputAssemblyInstance::InputAssemblyInstance (Context& context, , m_indexType (indexType) , m_vertices (vertexBufferData) , m_indices (indexBufferData) - , m_renderSize ((primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN) ? tcu::IVec2(32, 32) : tcu::IVec2(64, 16)) + , m_renderSize ((primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN) ? tcu::UVec2(32, 32) : tcu::UVec2(64, 16)) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) { const DeviceInterface& vk = context.getDeviceInterface(); @@ -1384,12 +1384,7 @@ InputAssemblyInstance::InputAssemblyInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -1449,6 +1444,7 @@ tcu::TestStatus InputAssemblyInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp index 7fac05e..ef3fddb 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp @@ -379,7 +379,7 @@ protected: const std::vector m_vertices; const VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; - const GeometryType m_geometryType; + const GeometryType m_geometryType; }; @@ -1307,7 +1307,7 @@ MultisampleRenderer::MultisampleRenderer (Context& context, 0u, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y(), 1u }, // VkExtent3D extent; 1u, // deUint32 mipLevels; 1u, // deUint32 arrayLayers; m_multisampleStateParams.rasterizationSamples, // VkSampleCountFlagBits samples; @@ -1335,7 +1335,7 @@ MultisampleRenderer::MultisampleRenderer (Context& context, 0u, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y(), 1u }, // VkExtent3D extent; 1u, // deUint32 mipLevels; 1u, // deUint32 arrayLayers; VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; @@ -1581,8 +1581,8 @@ MultisampleRenderer::MultisampleRenderer (Context& context, const VkRect2D scissor = { - { 0, 0 }, // VkOffset2D offset; - { m_renderSize.x(), m_renderSize.y() } // VkExtent2D extent; + { 0, 0 }, // VkOffset2D offset; + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } // VkExtent2D extent; }; const VkPipelineViewportStateCreateInfo viewportStateParams = @@ -1747,12 +1747,7 @@ MultisampleRenderer::MultisampleRenderer (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VkClearValue colorClearValue; @@ -1773,7 +1768,10 @@ MultisampleRenderer::MultisampleRenderer (Context& context, DE_NULL, // const void* pNext; *m_renderPass, // VkRenderPass renderPass; *m_framebuffer, // VkFramebuffer framebuffer; - { { 0, 0 }, { m_renderSize.x(), m_renderSize.y() } }, // VkRect2D renderArea; + { + { 0, 0 }, + { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y() } + }, // VkRect2D renderArea; 2, // deUint32 clearValueCount; clearValues // const VkClearValue* pClearValues; }; @@ -1824,6 +1822,7 @@ de::MovePtr MultisampleRenderer::render (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -1834,7 +1833,7 @@ de::MovePtr MultisampleRenderer::render (void) VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence)); VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity*/)); - return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_resolveImage, m_colorFormat, m_renderSize); + return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_resolveImage, m_colorFormat, m_renderSize.cast()); } } // anonymous diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp index e072732..1b9400d 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp @@ -140,7 +140,7 @@ private: tcu::TestStatus verifyImage (void); private: - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; const deUint32 m_rangeCount; PushConstantData m_pushConstantRange[MAX_RANGE_COUNT]; @@ -250,7 +250,7 @@ void PushConstantGraphicsTest::initPrograms (SourceCollections& sourceCollection case SIZE_CASE_16: vertexSrc << "vec4 color;\n" << "} matInst;\n" - << "layout(location = 0) uniform UniformBuf {\n" + << "layout(std140, binding = 0) uniform UniformBuf {\n" << "vec4 element;\n" << "} uniformBuf;\n"; break; @@ -902,7 +902,7 @@ PushConstantGraphicsTestInstance::PushConstantGraphicsTestInstance (Context& { VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 0u, // VkPipelineTesselationStateCreateFlags flags; + 0u, // VkPipelineTessellationStateCreateFlags flags; 3u, // uint32_t patchControlPoints; }; @@ -986,12 +986,7 @@ PushConstantGraphicsTestInstance::PushConstantGraphicsTestInstance (Context& VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValues[] = @@ -1084,6 +1079,7 @@ tcu::TestStatus PushConstantGraphicsTestInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -1388,12 +1384,7 @@ PushConstantComputeTestInstance::PushConstantComputeTestInstance (Context& c VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); @@ -1438,6 +1429,7 @@ tcu::TestStatus PushConstantComputeTestInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp index 6f385ff..2b2a94e 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp @@ -258,7 +258,7 @@ public: const tcu::Vec4 swizColor = swizzle(texColor, m_swizzle); const tcu::Vec4 normColor = swizColor * swizzle(m_textureFormatInfo.lookupScale, m_swizzle) + swizzle(m_textureFormatInfo.lookupBias, m_swizzle); const tcu::Vec4 color = (normColor - m_colorFormatInfo.lookupBias) / m_colorFormatInfo.lookupScale; - rr::writeFragmentOutput(context, packetNdx, fragNdx, 0, color); + rr::writeFragmentOutput(context, packetNdx, fragNdx, 0, color); } } } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp index 0f44620..f00844e 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp @@ -74,7 +74,7 @@ public: virtual void initPrograms (SourceCollections& sourceCollections) const; virtual TestInstance* createInstance (Context& context) const; - virtual tcu::IVec2 getRenderSize (VkImageViewType viewType) const; + virtual tcu::UVec2 getRenderSize (VkImageViewType viewType) const; virtual std::vector createVertices (void) const; virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; @@ -159,7 +159,7 @@ public: VkSamplerAddressMode addressW, VkBorderColor borderColor); virtual ~SamplerAddressModesTest (void) {} - virtual tcu::IVec2 getRenderSize (VkImageViewType viewType) const; + virtual tcu::UVec2 getRenderSize (VkImageViewType viewType) const; virtual std::vector createVertices (void) const; virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; @@ -254,7 +254,7 @@ void SamplerTest::initPrograms (SourceCollections& sourceCollections) const TestInstance* SamplerTest::createInstance (Context& context) const { - const tcu::IVec2 renderSize = getRenderSize(m_imageViewType); + const tcu::UVec2 renderSize = getRenderSize(m_imageViewType); const std::vector vertices = createVertices(); const VkSamplerCreateInfo samplerParams = getSamplerCreateInfo(); const VkComponentMapping componentMapping = getFormatComponentMapping(m_imageFormat); @@ -276,15 +276,15 @@ TestInstance* SamplerTest::createInstance (Context& context) const samplerParams, m_samplerLod,vertices); } -tcu::IVec2 SamplerTest::getRenderSize (VkImageViewType viewType) const +tcu::UVec2 SamplerTest::getRenderSize (VkImageViewType viewType) const { if (viewType == VK_IMAGE_VIEW_TYPE_1D || viewType == VK_IMAGE_VIEW_TYPE_2D) { - return tcu::IVec2(16, 16); + return tcu::UVec2(16u, 16u); } else { - return tcu::IVec2(16 * 3, 16 * 2); + return tcu::UVec2(16u * 3u, 16u * 2u); } } @@ -309,16 +309,17 @@ VkSamplerCreateInfo SamplerTest::getSamplerCreateInfo (void) const 0u, // VkSamplerCreateFlags flags; VK_FILTER_NEAREST, // VkFilter magFilter; VK_FILTER_NEAREST, // VkFilter minFilter; - VK_SAMPLER_MIPMAP_MODE_BASE, // VkSamplerMipmapMode mipmapMode; + VK_SAMPLER_MIPMAP_MODE_NEAREST, // VkSamplerMipmapMode mipmapMode; VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeU; VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; 0.0f, // float mipLodBias; + VK_FALSE, // VkBool32 anisotropyEnable; 1.0f, // float maxAnisotropy; false, // VkBool32 compareEnable; VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; 0.0f, // float minLod; - (float)deLog2Floor32(m_imageSize) + 1, // float maxLod; + 0.25f, // float maxLod; getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; false // VkBool32 unnormalizedCoordinates; }; @@ -509,9 +510,9 @@ SamplerAddressModesTest::SamplerAddressModesTest (tcu::TestContext& testContext { } -tcu::IVec2 SamplerAddressModesTest::getRenderSize (VkImageViewType viewType) const +tcu::UVec2 SamplerAddressModesTest::getRenderSize (VkImageViewType viewType) const { - return 4 * SamplerTest::getRenderSize(viewType); + return 4u * SamplerTest::getRenderSize(viewType); } std::vector SamplerAddressModesTest::createVertices (void) const diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp index 5b745fb..e8ff69a 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp @@ -151,7 +151,7 @@ private: VkStencilOpState m_stencilOpStateFront; VkStencilOpState m_stencilOpStateBack; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; const VkFormat m_stencilFormat; @@ -825,12 +825,7 @@ StencilTestInstance::StencilTestInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValues[2] = @@ -898,6 +893,7 @@ tcu::TestStatus StencilTestInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp index d2474d5..7071404 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp @@ -314,7 +314,7 @@ public: const char* source_name, const char* entry_name); void enableTessellationStage (deUint32 patchControlPoints); - Move buildPipeline (tcu::IVec2 renderSize, + Move buildPipeline (tcu::UVec2 renderSize, VkRenderPass renderPass); protected: enum @@ -376,7 +376,7 @@ void SimpleGraphicsPipelineBuilder::bindShaderStage(VkShaderStageFlagBits stage, m_shaderStageCount++; } -Move SimpleGraphicsPipelineBuilder::buildPipeline(tcu::IVec2 renderSize, VkRenderPass renderPass) +Move SimpleGraphicsPipelineBuilder::buildPipeline(tcu::UVec2 renderSize, VkRenderPass renderPass) { const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); @@ -573,7 +573,7 @@ Move SimpleGraphicsPipelineBuilder::buildPipeline(tcu::IVec2 renderS { VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 0u, // VkPipelineTesselationStateCreateFlags flags; + 0u, // VkPipelineTessellationStateCreateFlags flags; m_patchControlPoints, // deUint32 patchControlPoints; }; @@ -661,8 +661,8 @@ protected: VkBufferUsageFlags usage, de::MovePtr* pAlloc); Move createImage2DAndBindMemory (VkFormat format, - deInt32 width, - deInt32 height, + deUint32 width, + deUint32 height, VkBufferUsageFlags usage, VkSampleCountFlagBits sampleCount, de::MovePtr* pAlloc); @@ -784,12 +784,7 @@ void TimestampTestInstance::configCommandBuffer(void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); @@ -821,6 +816,7 @@ tcu::TestStatus TimestampTestInstance::iterate(void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; @@ -905,11 +901,11 @@ Move TimestampTestInstance::createBufferAndBindMemory(VkDeviceSize siz } Move TimestampTestInstance::createImage2DAndBindMemory(VkFormat format, - deInt32 width, - deInt32 height, - VkBufferUsageFlags usage, - VkSampleCountFlagBits sampleCount, - de::details::MovePtr* pAlloc) + deUint32 width, + deUint32 height, + VkBufferUsageFlags usage, + VkSampleCountFlagBits sampleCount, + de::details::MovePtr* pAlloc) { const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); @@ -977,11 +973,11 @@ protected: virtual void buildVertexBuffer (void); virtual void buildRenderPass (VkFormat colorFormat, VkFormat depthFormat); - virtual void buildFrameBuffer (tcu::IVec2 renderSize, + virtual void buildFrameBuffer (tcu::UVec2 renderSize, VkFormat colorFormat, VkFormat depthFormat); protected: - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; const VkFormat m_depthFormat; @@ -1129,7 +1125,7 @@ void BasicGraphicsTestInstance::buildRenderPass(VkFormat colorFormat, VkFormat d } -void BasicGraphicsTestInstance::buildFrameBuffer(tcu::IVec2 renderSize, VkFormat colorFormat, VkFormat depthFormat) +void BasicGraphicsTestInstance::buildFrameBuffer(tcu::UVec2 renderSize, VkFormat colorFormat, VkFormat depthFormat) { const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); @@ -1250,12 +1246,7 @@ void BasicGraphicsTestInstance::configCommandBuffer(void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValues[2] = @@ -1277,9 +1268,7 @@ void BasicGraphicsTestInstance::configCommandBuffer(void) VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - deUint32 stage_count = (deUint32)m_stages.size(); - - vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, stage_count); + vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT); vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -1503,12 +1492,7 @@ void AdvGraphicsTestInstance::configCommandBuffer(void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValues[2] = @@ -1530,9 +1514,7 @@ void AdvGraphicsTestInstance::configCommandBuffer(void) VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - deUint32 stage_count = (deUint32)m_stages.size(); - - vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, stage_count); + vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT); vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -1652,10 +1634,10 @@ BasicComputeTestInstance::BasicComputeTestInstance(Context& context } } flushMappedMemoryRange(vk, vkDevice, bufferAlloc->getMemory(), bufferAlloc->getOffset(), size); - + de::MovePtr dummyAlloc; m_outputBuf = createBufferAndBindMemory(size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, &dummyAlloc); - + std::vector descriptorInfos; descriptorInfos.push_back(makeDescriptorBufferInfo(*m_inputBuf, 0u, sizeof(tcu::Vec4) * 128u)); descriptorInfos.push_back(makeDescriptorBufferInfo(*m_outputBuf, 0u, sizeof(tcu::Vec4) * 128u)); @@ -1758,18 +1740,13 @@ void BasicComputeTestInstance::configCommandBuffer(void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, 1u); + vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT); vk.cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_computePipelines); vk.cmdBindDescriptorSets(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipelineLayout, 0u, 1u, &m_descriptorSet.get(), 0u, DE_NULL); @@ -1817,8 +1794,8 @@ protected: Move m_dstBuffer; VkFormat m_imageFormat; - deInt32 m_imageWidth; - deInt32 m_imageHeight; + deUint32 m_imageWidth; + deUint32 m_imageHeight; VkDeviceSize m_imageSize; Move m_srcImage; Move m_dstImage; @@ -1906,12 +1883,7 @@ void TransferTestInstance::configCommandBuffer(void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); @@ -1940,7 +1912,7 @@ void TransferTestInstance::configCommandBuffer(void) vk.cmdClearColorImage(*m_cmdBuffer, *m_dstImage, VK_IMAGE_LAYOUT_GENERAL, &dstClearValue, 1u, &subRange); - vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, 1u); + vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT); // Copy Operations const VkImageSubresourceLayers imgSubResCopy = @@ -1953,6 +1925,7 @@ void TransferTestInstance::configCommandBuffer(void) const VkOffset3D nullOffset = {0u, 0u, 0u}; const VkExtent3D imageExtent = {m_imageWidth, m_imageHeight, 1u}; + const VkOffset3D imageOffset = {(int)m_imageWidth, (int)m_imageHeight, 1}; switch(m_method) { case TRANSFER_METHOD_COPY_BUFFER: @@ -2013,11 +1986,15 @@ void TransferTestInstance::configCommandBuffer(void) const VkImageBlit imageBlt = { imgSubResCopy, // VkImageSubresourceCopy srcSubresource; - nullOffset, // VkOffset3D srcOffset; - imageExtent, // VkExtent3D srcExtent; + { + nullOffset, + imageOffset, + }, imgSubResCopy, // VkImageSubresourceCopy destSubresource; - nullOffset, // VkOffset3D destOffset; - imageExtent, // VkExtent3D destExtent; + { + nullOffset, + imageOffset, + } }; vk.cmdBlitImage(*m_cmdBuffer, *m_srcImage, VK_IMAGE_LAYOUT_GENERAL, *m_dstImage, VK_IMAGE_LAYOUT_GENERAL, 1u, &imageBlt, VK_FILTER_NEAREST); break; @@ -2055,6 +2032,7 @@ void TransferTestInstance::configCommandBuffer(void) { vk.cmdWriteTimestamp(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, *m_queryPool, 0u); vk.cmdCopyQueryPoolResults(*m_cmdBuffer, *m_queryPool, 0u, 1u, *m_dstBuffer, 0u, 8u, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT); + vk.cmdResetQueryPool(*m_cmdBuffer, *m_queryPool, 0u, 1u); break; } case TRANSFER_METHOD_RESOLVE_IMAGE: diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineVertexInputTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineVertexInputTests.cpp index 666844c..eb23eb9 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineVertexInputTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineVertexInputTests.cpp @@ -220,7 +220,7 @@ private: std::vector m_vertexBuffers; std::vector m_vertexBufferAllocs; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const VkFormat m_colorFormat; Move m_colorImage; @@ -431,7 +431,7 @@ std::string VertexInputTest::getGlslVertexCheck (void) const glslCode << " if (okCount == " << totalInputComponentCount << ")\n" " {\n" - " if (gl_InstanceID == 0)\n" + " if (gl_InstanceIndex == 0)\n" " vtxColor = vec4(1.0, 0.0, 0.0, 1.0);\n" " else\n" " vtxColor = vec4(0.0, 0.0, 1.0, 1.0);\n" @@ -440,20 +440,20 @@ std::string VertexInputTest::getGlslVertexCheck (void) const " {\n" " vtxColor = vec4(okCount / float(" << totalInputComponentCount << "), 0.0f, 0.0f, 1.0);\n" << " }\n\n" - " if (gl_InstanceID == 0)\n" + " if (gl_InstanceIndex == 0)\n" " {\n" - " if (gl_VertexID == 0) gl_Position = vec4(-1.0, -1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 1) gl_Position = vec4(0.0, -1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 2) gl_Position = vec4(-1.0, 1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 3) gl_Position = vec4(0.0, 1.0, 0.0, 1.0);\n" + " if (gl_VertexIndex == 0) gl_Position = vec4(-1.0, -1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 1) gl_Position = vec4(0.0, -1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 2) gl_Position = vec4(-1.0, 1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 3) gl_Position = vec4(0.0, 1.0, 0.0, 1.0);\n" " else gl_Position = vec4(0.0);\n" " }\n" " else\n" " {\n" - " if (gl_VertexID == 0) gl_Position = vec4(0.0, -1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 1) gl_Position = vec4(1.0, -1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 2) gl_Position = vec4(0.0, 1.0, 0.0, 1.0);\n" - " else if (gl_VertexID == 3) gl_Position = vec4(1.0, 1.0, 0.0, 1.0);\n" + " if (gl_VertexIndex == 0) gl_Position = vec4(0.0, -1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 1) gl_Position = vec4(1.0, -1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 2) gl_Position = vec4(0.0, 1.0, 0.0, 1.0);\n" + " else if (gl_VertexIndex == 3) gl_Position = vec4(1.0, 1.0, 0.0, 1.0);\n" " else gl_Position = vec4(0.0);\n" " }\n"; @@ -464,7 +464,7 @@ std::string VertexInputTest::getGlslAttributeConditions (const AttributeInfo& at { std::ostringstream glslCode; std::ostringstream attributeVar; - const std::string indexId = (attributeInfo.inputRate == VK_VERTEX_INPUT_RATE_VERTEX) ? "gl_VertexID" : "gl_InstanceID"; + const std::string indexId = (attributeInfo.inputRate == VK_VERTEX_INPUT_RATE_VERTEX) ? "gl_VertexIndex" : "gl_InstanceIndex"; const int componentCount = VertexInputTest::s_glslTypeDescriptions[attributeInfo.glslType].vertexInputComponentCount; const int vertexInputCount = VertexInputTest::s_glslTypeDescriptions[attributeInfo.glslType].vertexInputCount; const deUint32 totalComponentCount = componentCount * vertexInputCount; @@ -1009,12 +1009,7 @@ VertexInputInstance::VertexInputInstance (Context& context, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -1280,6 +1275,7 @@ tcu::TestStatus VertexInputInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolCreateInfoUtil.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolCreateInfoUtil.cpp index e619fcc..93f840e 100644 --- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolCreateInfoUtil.cpp +++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolCreateInfoUtil.cpp @@ -135,6 +135,7 @@ BufferViewCreateInfo::BufferViewCreateInfo (vk::VkBuffer _buffer, sType = vk::VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; pNext = DE_NULL; + flags = 0u; buffer = _buffer; format = _format; offset = _offset; @@ -472,21 +473,19 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind const vk::VkAttachmentReference* _resolveAttachments, vk::VkAttachmentReference depthStencilAttachment, deUint32 _preserveAttachmentCount, - const vk::VkAttachmentReference* _preserveAttachments) + const deUint32* _preserveAttachments) { m_inputAttachments = std::vector(_inputAttachments, _inputAttachments + _inputAttachmentCount); m_colorAttachments = std::vector(_colorAttachments, _colorAttachments + _colorAttachmentCount); if (_resolveAttachments) - { m_resolveAttachments = std::vector(_resolveAttachments, _resolveAttachments + _colorAttachmentCount); - } - m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); + m_preserveAttachments = std::vector(_preserveAttachments, _preserveAttachments + _preserveAttachmentCount); m_depthStencilAttachment = depthStencilAttachment; - flags = _flags; + flags = _flags; pipelineBindPoint = _pipelineBindPoint; inputAttachmentCount = _inputAttachmentCount; pInputAttachments = DE_NULL; @@ -497,25 +496,17 @@ SubpassDescription::SubpassDescription (vk::VkPipelineBindPoint _pipelineBind pPreserveAttachments = DE_NULL; preserveAttachmentCount = _preserveAttachmentCount; - if (m_inputAttachments.size()) - { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) - { + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) - { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } - if (m_preserveAttachments.size()) - { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) @@ -529,42 +520,31 @@ SubpassDescription::SubpassDescription (const vk::VkSubpassDescription& rhs) rhs.pColorAttachments, rhs.pColorAttachments + rhs.colorAttachmentCount); if (rhs.pResolveAttachments) - { m_resolveAttachments = std::vector( rhs.pResolveAttachments, rhs.pResolveAttachments + rhs.colorAttachmentCount); - } - m_preserveAttachments = std::vector( + + m_preserveAttachments = std::vector( rhs.pPreserveAttachments, rhs.pPreserveAttachments + rhs.preserveAttachmentCount); if (rhs.pDepthStencilAttachment) - { m_depthStencilAttachment = *rhs.pDepthStencilAttachment; - } - if (m_inputAttachments.size()) - { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) - { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) - { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) - { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } } -SubpassDescription::SubpassDescription (const SubpassDescription& rhs) -{ +SubpassDescription::SubpassDescription (const SubpassDescription& rhs) { *this = rhs; } @@ -578,26 +558,19 @@ SubpassDescription& SubpassDescription::operator= (const SubpassDescription& rhs m_preserveAttachments = rhs.m_preserveAttachments; m_depthStencilAttachment = rhs.m_depthStencilAttachment; - if (m_inputAttachments.size()) - { + if (!m_inputAttachments.empty()) pInputAttachments = &m_inputAttachments[0]; - } - if (m_colorAttachments.size()) - { + + if (!m_colorAttachments.empty()) pColorAttachments = &m_colorAttachments[0]; - } - if (m_resolveAttachments.size()) - { + if (!m_resolveAttachments.empty()) pResolveAttachments = &m_resolveAttachments[0]; - } pDepthStencilAttachment = &m_depthStencilAttachment; - if (m_preserveAttachments.size()) - { + if (!m_preserveAttachments.empty()) pPreserveAttachments = &m_preserveAttachments[0]; - } return *this; } @@ -632,35 +605,10 @@ SubpassDependency::SubpassDependency (const vk::VkSubpassDependency& rhs) CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags _flags) { - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = DE_NULL; - subpass = 0; - framebuffer = DE_NULL; - flags = _flags; - occlusionQueryEnable = false; - queryFlags = 0u; - pipelineStatistics = 0u; -} - -CmdBufferBeginInfo::CmdBufferBeginInfo (vk::VkRenderPass _renderPass, - deUint32 _subpass, - vk::VkFramebuffer _framebuffer, - vk::VkCommandBufferUsageFlags _flags, - bool _occlusionQueryEnable, - vk::VkQueryControlFlags _queryFlags, - vk::VkQueryPipelineStatisticFlags _pipelineStatistics) -{ - - sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - pNext = DE_NULL; - renderPass = _renderPass; - subpass = _subpass; - framebuffer = _framebuffer; - flags = _flags; - occlusionQueryEnable = _occlusionQueryEnable; - queryFlags = _queryFlags; - pipelineStatistics = _pipelineStatistics; + sType = vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + pNext = DE_NULL; + flags = _flags; + pInheritanceInfo = DE_NULL; } DescriptorPoolCreateInfo::DescriptorPoolCreateInfo (const std::vector& poolSizeCounts, @@ -693,7 +641,7 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo (deUint32 _bindingC pNext = DE_NULL; flags = 0; bindingCount = _bindingCount; - pBinding = _pBindings; + pBindings = _pBindings; } PipelineLayoutCreateInfo::PipelineLayoutCreateInfo (deUint32 _descriptorSetCount, @@ -709,6 +657,8 @@ PipelineLayoutCreateInfo::PipelineLayoutCreateInfo (deUint32 _descriptorSe sType = vk::VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; pNext = DE_NULL; + + flags = 0u; setLayoutCount = static_cast(m_setLayouts.size()); pSetLayouts = setLayoutCount > 0 ? &m_setLayouts[0] : DE_NULL; pushConstantRangeCount = static_cast(m_pushConstantRanges.size()); @@ -732,7 +682,8 @@ PipelineLayoutCreateInfo::PipelineLayoutCreateInfo (const std::vector(m_setLayouts.size()); + flags = 0u; + setLayoutCount = static_cast(m_setLayouts.size()); if (setLayoutCount) { @@ -789,11 +740,12 @@ PipelineCreateInfo::InputAssemblerState::InputAssemblerState (vk::VkPrimitiveTop primitiveRestartEnable = _primitiveRestartEnable; } -PipelineCreateInfo::TesselationState::TesselationState (deUint32 _patchControlPoints) +PipelineCreateInfo::TessellationState::TessellationState (deUint32 _patchControlPoints) { sType = vk::VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO; pNext = DE_NULL; - patchControlPoints = _patchControlPoints; + flags = 0u; + patchControlPoints = _patchControlPoints; } PipelineCreateInfo::ViewportState::ViewportState (deUint32 _viewportCount, @@ -834,6 +786,7 @@ PipelineCreateInfo::ViewportState::ViewportState (const ViewportState& other) { sType = other.sType; pNext = other.pNext; + flags = other.flags; viewportCount = other.viewportCount; scissorCount = other.scissorCount; @@ -848,6 +801,7 @@ PipelineCreateInfo::ViewportState& PipelineCreateInfo::ViewportState::operator= { sType = other.sType; pNext = other.pNext; + flags = other.flags; viewportCount = other.viewportCount; scissorCount = other.scissorCount; @@ -909,6 +863,7 @@ PipelineCreateInfo::MultiSampleState::MultiSampleState (const MultiSampleState& { sType = other.sType; pNext = other.pNext; + flags = other.flags; rasterizationSamples = other.rasterizationSamples; sampleShadingEnable = other.sampleShadingEnable; minSampleShading = other.minSampleShading; @@ -923,6 +878,7 @@ PipelineCreateInfo::MultiSampleState& PipelineCreateInfo::MultiSampleState::oper { sType = other.sType; pNext = other.pNext; + flags = other.flags; rasterizationSamples = other.rasterizationSamples; sampleShadingEnable = other.sampleShadingEnable; minSampleShading = other.minSampleShading; @@ -957,6 +913,7 @@ PipelineCreateInfo::ColorBlendState::ColorBlendState (deUint32 _attach { sType = vk::VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; pNext = DE_NULL; + flags = 0u; logicOpEnable = _logicOpEnable; logicOp = _logicOp; attachmentCount = static_cast(m_attachments.size()); @@ -968,6 +925,7 @@ PipelineCreateInfo::ColorBlendState::ColorBlendState (const vk::VkPipelineColorB { sType = createInfo.sType; pNext = createInfo.pNext; + flags = createInfo.flags; logicOpEnable = createInfo.logicOpEnable; logicOp = createInfo.logicOp; attachmentCount = static_cast(m_attachments.size()); @@ -979,6 +937,7 @@ PipelineCreateInfo::ColorBlendState::ColorBlendState (const ColorBlendState& cre { sType = createInfo.sType; pNext = createInfo.pNext; + flags = createInfo.flags; logicOpEnable = createInfo.logicOpEnable; logicOp = createInfo.logicOp; attachmentCount = static_cast(m_attachments.size()); @@ -1052,6 +1011,7 @@ PipelineCreateInfo::DynamicState::DynamicState (const std::vector m_inputAttachments; std::vector m_colorAttachments; std::vector m_resolveAttachments; - std::vector m_preserveAttachments; + std::vector m_preserveAttachments; vk::VkAttachmentReference m_depthStencilAttachment; }; @@ -261,13 +261,6 @@ class CmdBufferBeginInfo : public vk::VkCommandBufferBeginInfo { public: CmdBufferBeginInfo (vk::VkCommandBufferUsageFlags flags = 0); - CmdBufferBeginInfo (vk::VkRenderPass renderPass, - deUint32 subpass, - vk::VkFramebuffer framebuffer, - vk::VkCommandBufferUsageFlags flags = 0, - bool occlusionQueryEnable = false, - vk::VkQueryControlFlags queryFlags = 0u, - vk::VkQueryPipelineStatisticFlags pipelineStatistics = 0u); }; class DescriptorPoolSize : public vk::VkDescriptorPoolSize @@ -334,10 +327,10 @@ public: InputAssemblerState (vk::VkPrimitiveTopology topology, vk::VkBool32 primitiveRestartEnable = false); }; - class TesselationState : public vk::VkPipelineTessellationStateCreateInfo + class TessellationState : public vk::VkPipelineTessellationStateCreateInfo { public: - TesselationState (deUint32 patchControlPoints = 0); + TessellationState (deUint32 patchControlPoints = 0); }; class ViewportState : public vk::VkPipelineViewportStateCreateInfo @@ -511,6 +504,7 @@ public: vk::VkSamplerAddressMode addressV = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, vk::VkSamplerAddressMode addressW = vk::VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, float mipLodBias = 0.0f, + vk::VkBool32 anisotropyEnable = vk::VK_FALSE, float maxAnisotropy = 1.0f, vk::VkBool32 compareEnable = false, vk::VkCompareOp compareOp = vk::VK_COMPARE_OP_ALWAYS, diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolImageObjectUtil.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolImageObjectUtil.cpp index 5e49143..4967248 100644 --- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolImageObjectUtil.cpp +++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolImageObjectUtil.cpp @@ -353,10 +353,10 @@ void Image::readUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } const vk::VkBufferImageCopy region = @@ -364,7 +364,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyImageToBuffer(*copyCmdBuffer, object(), layout, stagingResource->object(), 1, ®ion); @@ -376,6 +376,7 @@ void Image::readUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -441,7 +442,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, { de::SharedPtr stagingResource; { - vk::VkExtent3D stagingExtent = {width, height, depth}; + vk::VkExtent3D stagingExtent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo(type, m_format, stagingExtent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_DST_BIT); @@ -468,7 +469,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); const vk::VkOffset3D zeroOffset = { 0, 0, 0 }; - vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {width, height, depth} }; + vk::VkImageCopy region = { {aspect, mipLevel, arrayElement, 1}, offset, {aspect, 0, 0, 1}, zeroOffset, {(deUint32)width, (deUint32)height, (deUint32)depth} }; m_vk.cmdCopyImage(*copyCmdBuffer, object(), layout, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, 1, ®ion); VK_CHECK(m_vk.endCommandBuffer(*copyCmdBuffer)); @@ -479,6 +480,7 @@ de::SharedPtr Image::copyToLinearImage (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -586,7 +588,7 @@ void Image::upload (vk::VkQueue queue, DE_ASSERT(layout == vk::VK_IMAGE_LAYOUT_GENERAL || layout == vk::VK_IMAGE_LAYOUT_UNDEFINED || layout == vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); de::SharedPtr stagingResource; - vk::VkExtent3D extent = {width, height, depth}; + vk::VkExtent3D extent = {(deUint32)width, (deUint32)height, (deUint32)depth}; ImageCreateInfo stagingResourceCreateInfo( type, m_format, extent, 1, 1, vk::VK_SAMPLE_COUNT_1_BIT, vk::VK_IMAGE_TILING_LINEAR, vk::VK_IMAGE_USAGE_TRANSFER_SRC_BIT); @@ -637,9 +639,10 @@ void Image::upload (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } transition2DImage(m_vk, *copyCmdBuffer, stagingResource->object(), aspect, vk::VK_IMAGE_LAYOUT_UNDEFINED, vk::VK_IMAGE_LAYOUT_GENERAL); @@ -648,7 +651,7 @@ void Image::upload (vk::VkQueue queue, zeroOffset, {aspect, mipLevel, arrayElement, 1}, offset, - {width, height, depth}}; + {(deUint32)width, (deUint32)height, (deUint32)depth}}; m_vk.cmdCopyImage(*copyCmdBuffer, stagingResource->object(), vk::VK_IMAGE_LAYOUT_GENERAL, object(), layout, 1, ®ion); @@ -660,6 +663,7 @@ void Image::upload (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -756,9 +760,10 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = m_layerCount; - void* barriers[] = { &barrier }; - - m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + m_vk.cmdPipelineBarrier(*copyCmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } vk::VkBufferImageCopy region = @@ -766,7 +771,7 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, 0, 0, 0, { aspect, mipLevel, arrayElement, 1 }, offset, - { width, height, depth } + { (deUint32)width, (deUint32)height, (deUint32)depth } }; m_vk.cmdCopyBufferToImage(*copyCmdBuffer, stagingResource->object(), @@ -779,6 +784,7 @@ void Image::uploadUsingBuffer (vk::VkQueue queue, DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; ©CmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -906,9 +912,10 @@ void transition2DImage (const vk::DeviceInterface& vk, barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = 1; - void* barriers[] = { &barrier }; - - vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &barrier); } void initialTransitionColor2DImage (const vk::DeviceInterface &vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout) diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp index 4968301..dbd6284 100644 --- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp +++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp @@ -377,7 +377,7 @@ tcu::TestStatus BasicOcclusionQueryTestInstance::iterate (void) 1u, // deUint32 bufferCount; }; vk::Unique cmdBuffer (vk::allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo)); - const CmdBufferBeginInfo beginInfo (DE_NULL, 0, DE_NULL, 0u, true, m_testVector.queryControlFlags); + const CmdBufferBeginInfo beginInfo (0u); vk.beginCommandBuffer(*cmdBuffer, &beginInfo); @@ -425,6 +425,7 @@ tcu::TestStatus BasicOcclusionQueryTestInstance::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -645,6 +646,7 @@ tcu::TestStatus OcclusionQueryTestInstance::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_renderCommandBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -670,6 +672,7 @@ tcu::TestStatus OcclusionQueryTestInstance::iterate (void) DE_NULL, // const void* pNext; 0, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const vk::VkPipelineStageFlags*)DE_NULL, 1, // deUint32 commandBufferCount; &m_copyResultsCommandBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0, // deUint32 signalSemaphoreCount; @@ -725,7 +728,7 @@ vk::Move OcclusionQueryTestInstance::recordRender (vk::VkCo 1u, // deUint32 bufferCount; }; vk::Move cmdBuffer (vk::allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo)); - CmdBufferBeginInfo beginInfo (DE_NULL, 0, DE_NULL, 0u, true, m_testVector.queryControlFlags); + CmdBufferBeginInfo beginInfo (0u); vk.beginCommandBuffer(*cmdBuffer, &beginInfo); @@ -806,7 +809,7 @@ vk::Move OcclusionQueryTestInstance::recordCopyResults (vk: 1u, // deUint32 bufferCount; }; vk::Move cmdBuffer (vk::allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo)); - const CmdBufferBeginInfo beginInfo (DE_NULL, 0, DE_NULL, 0u, true, m_testVector.queryControlFlags); + const CmdBufferBeginInfo beginInfo (0u); vk.beginCommandBuffer(*cmdBuffer, &beginInfo); vk.cmdCopyQueryPoolResults(*cmdBuffer, m_queryPool, 0, NUM_QUERIES_IN_POOL, m_queryPoolResultsBuffer->object(), /*dstOffset*/ 0, m_testVector.queryResultsStride, m_queryResultFlags); diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/CMakeLists.txt b/external/vulkancts/modules/vulkan/shaderexecutor/CMakeLists.txt index 75f08de..76d5709 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/CMakeLists.txt +++ b/external/vulkancts/modules/vulkan/shaderexecutor/CMakeLists.txt @@ -5,8 +5,6 @@ set(DEQP_VK_SHADEREXECUTOR_SRCS vktShaderExecutor.hpp vktShaderBuiltinTests.cpp vktShaderBuiltinTests.hpp - vktShaderBuiltinConstantTests.cpp - vktShaderBuiltinConstantTests.hpp vktShaderCommonFunctionTests.cpp vktShaderCommonFunctionTests.hpp vktShaderIntegerFunctionTests.cpp diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktOpaqueTypeIndexingTests.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktOpaqueTypeIndexingTests.cpp index ad318ce..8077972 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktOpaqueTypeIndexingTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktOpaqueTypeIndexingTests.cpp @@ -1041,10 +1041,13 @@ tcu::TestStatus AtomicCounterIndexingCaseInstance::iterate (void) std::vector outValues (numInvocations*numOps); deUint32 bindingLocation = getFirstFreeBindingLocation(m_shaderType); + + const deUint32 atomicCounterLocation = bindingLocation++; + { DE_ASSERT(numCounters <= 4); // Add the atomic counters' base value, all zero. - m_uniformSetup->addData(new UniformData(bindingLocation++, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, tcu::Mat4(0.0))); + m_uniformSetup->addData(new UniformData(atomicCounterLocation, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, tcu::Mat4(0.0))); if (m_indexExprType == INDEX_EXPR_TYPE_DYNAMIC_UNIFORM) { @@ -1080,6 +1083,13 @@ tcu::TestStatus AtomicCounterIndexingCaseInstance::iterate (void) for (int opNdx = 0; opNdx < numOps; opNdx++) numHits[m_opIndices[opNdx]] += 1; + // Read counter values + { + const void* mapPtr = m_executor.getBufferPtr(atomicCounterLocation); + DE_ASSERT(mapPtr != DE_NULL); + std::copy((const deUint32*)mapPtr, (const deUint32*)mapPtr + numCounters, &counterValues[0]); + } + // Verify counter values for (int counterNdx = 0; counterNdx < numCounters; counterNdx++) { diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.cpp deleted file mode 100644 index 5dfa16f..0000000 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.cpp +++ /dev/null @@ -1,382 +0,0 @@ -/*------------------------------------------------------------------------ - * Vulkan Conformance Tests - * ------------------------ - * - * Copyright (c) 2015 The Khronos Group Inc. - * Copyright (c) 2015 Samsung Electronics Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice(s) and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * The Materials are Confidential Information as defined by the - * Khronos Membership Agreement until designated non-confidential by Khronos, - * at which point this condition clause shall be removed. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - * - *//*! - * \file - * \brief Shader built-in constant tests. - *//*--------------------------------------------------------------------*/ - -#include "vktShaderBuiltinConstantTests.hpp" -#include "vktShaderExecutor.hpp" -#include "deUniquePtr.hpp" -#include "deStringUtil.hpp" -#include "tcuTestLog.hpp" - -using std::string; -using std::vector; -using tcu::TestLog; -using namespace vk; - -namespace vkt -{ -namespace shaderexecutor -{ - -namespace -{ - -static deUint32 getUint32 (deUint32 VkPhysicalDeviceLimits::* ptr, Context &ctx) -{ - VkPhysicalDeviceProperties properties; - ctx.getInstanceInterface().getPhysicalDeviceProperties(ctx.getPhysicalDevice(), &properties); - return properties.limits.*ptr; -} - -template -static deUint32 getUint32 (Context &ctx) -{ - return getUint32(ptr, ctx); -} - -#define GET_UINT32(name) getUint32<&VkPhysicalDeviceLimits::name> - -static deInt32 getInt32 (deInt32 VkPhysicalDeviceLimits::* ptr, Context &ctx) -{ - VkPhysicalDeviceProperties properties; - ctx.getInstanceInterface().getPhysicalDeviceProperties(ctx.getPhysicalDevice(), &properties); - return properties.limits.*ptr; -} - -template -static deInt32 getInt32 (Context &ctx) -{ - return getInt32(ptr, ctx); -} - -#define GET_INT32(name) getInt32<&VkPhysicalDeviceLimits::name> - -static tcu::UVec3 getUVec3 (deUint32 (VkPhysicalDeviceLimits::*ptr)[3], Context &ctx) -{ - VkPhysicalDeviceProperties properties; - ctx.getInstanceInterface().getPhysicalDeviceProperties(ctx.getPhysicalDevice(), &properties); - return tcu::UVec3((properties.limits.*ptr)[0], (properties.limits.*ptr)[1], (properties.limits.*ptr)[2]); -} - -template -static tcu::UVec3 getUVec3 (Context &ctx) -{ - return getUVec3(ptr, ctx); -} - -#define GET_UVEC3(name) getUVec3<&VkPhysicalDeviceLimits::name> - -static std::string makeCaseName (const std::string& varName, glu::ShaderType shaderType) -{ - DE_ASSERT(varName.length() > 3); - DE_ASSERT(varName.substr(0,3) == "gl_"); - - std::ostringstream name; - name << de::toLower(char(varName[3])); - - for (size_t ndx = 4; ndx < varName.length(); ndx++) - { - const char c = char(varName[ndx]); - if (de::isUpper(c)) - name << '_' << de::toLower(c); - else - name << c; - } - name << '_' << glu::getShaderTypeName(glu::ShaderType(shaderType)); - return name.str(); -} - -enum -{ - VS = (1< -class ShaderBuiltinConstantTestInstance; - -template -class ShaderBuiltinConstantCase : public TestCase -{ -public: - typedef DataType (*GetConstantValueFunc) (Context &); - - ShaderBuiltinConstantCase (tcu::TestContext& testCtx, const char* varName, glu::ShaderType shaderType, GetConstantValueFunc getValue, const char* requiredExt); - virtual ~ShaderBuiltinConstantCase (void) {}; - - virtual void initPrograms (vk::SourceCollections& programCollection) const - { - m_executor->setShaderSources(programCollection); - } - - virtual TestInstance* createInstance (Context& context) const { return new ShaderBuiltinConstantTestInstance(context, m_getValue, *m_executor, m_varName); }; - -private: - const std::string m_varName; - const GetConstantValueFunc m_getValue; - const std::string m_requiredExt; - ShaderExecutor* m_executor; - glu::ShaderType m_shaderType; - ShaderSpec m_spec; -}; - -template -struct GLConstantTypeForVKType {}; - -template<> -struct GLConstantTypeForVKType -{ - typedef tcu::IVec3 GLConstantType; -}; - -template<> -struct GLConstantTypeForVKType -{ - typedef deInt32 GLConstantType; -}; - -template<> -struct GLConstantTypeForVKType -{ - typedef deInt32 GLConstantType; -}; - -template -ShaderBuiltinConstantCase::ShaderBuiltinConstantCase (tcu::TestContext& testCtx, const char* varName, glu::ShaderType shaderType, GetConstantValueFunc getValue, const char* requiredExt) - : TestCase (testCtx, makeCaseName(varName, shaderType).c_str(), varName) - , m_varName (varName) - , m_getValue (getValue) - , m_requiredExt (requiredExt ? requiredExt : "") - , m_shaderType (shaderType) -{ - DE_ASSERT(!requiredExt == m_requiredExt.empty()); - - ShaderSpec shaderSpec; - shaderSpec.source = string("result = ") + m_varName + ";\n"; - shaderSpec.outputs.push_back(Symbol("result", glu::VarType(glu::dataTypeOf::GLConstantType>(), glu::PRECISION_HIGHP))); - - if (!m_requiredExt.empty()) - shaderSpec.globalDeclarations = "#extension " + m_requiredExt + " : require\n"; - - m_executor = createExecutor(shaderType, shaderSpec); -} - -template -static void logVarValue (tcu::TestLog& log, const std::string& varName, DataType value) -{ - log << TestLog::Message << varName << " = " << value << TestLog::EndMessage; -} - -template<> -void logVarValue (tcu::TestLog& log, const std::string& varName, int value) -{ - log << TestLog::Integer(varName, varName, "", QP_KEY_TAG_NONE, value); -} - -// ShaderBuiltinConstantTestInstance - -template -class ShaderBuiltinConstantTestInstance : public TestInstance -{ -public: - ShaderBuiltinConstantTestInstance (Context& ctx, typename ShaderBuiltinConstantCase::GetConstantValueFunc getValue, ShaderExecutor& executor, const std::string varName ) - : TestInstance (ctx) - , m_getValue (getValue) - , m_testCtx (ctx.getTestContext()) - , m_executor (executor) - , m_varName (varName) - {} - virtual tcu::TestStatus iterate (void); - -private: - const typename ShaderBuiltinConstantCase::GetConstantValueFunc m_getValue; - tcu::TestContext& m_testCtx; - ShaderExecutor& m_executor; - const std::string m_varName; - - typedef typename GLConstantTypeForVKType::GLConstantType GLConstantType; - GLConstantType getReference (void); -}; - -template -typename ShaderBuiltinConstantTestInstance::GLConstantType ShaderBuiltinConstantTestInstance::getReference (void) -{ - return m_getValue(m_context); -} - -template<> -typename ShaderBuiltinConstantTestInstance::GLConstantType ShaderBuiltinConstantTestInstance::getReference (void) -{ - return m_getValue(m_context).asInt(); -} - -template -tcu::TestStatus ShaderBuiltinConstantTestInstance::iterate (void) -{ - GLConstantType reference = getReference(); - GLConstantType result = GLConstantType(-1); - void* const outputs = &result; - - m_executor.execute(m_context, 1, DE_NULL, &outputs); - logVarValue(m_testCtx.getLog(), m_varName, result); - - if (result != reference) - { - m_testCtx.getLog() << TestLog::Message << "ERROR: Expected " << m_varName << " = " << reference << TestLog::EndMessage; - return tcu::TestStatus::fail("Invalid builtin constant value"); - } - else - return tcu::TestStatus::pass("Pass"); -} - -// createShaderBuiltinConstantCase - -template -void createShaderBuiltinConstantCase(tcu::TestCaseGroup* group, tcu::TestContext& testCtx, const char* varName, typename ShaderBuiltinConstantCase::GetConstantValueFunc getValue, const char* requiredExt) -{ - for (int shaderType = 0; shaderType < glu::SHADERTYPE_LAST; shaderType++) - { - if ((SHADER_TYPES & (1<addChild(new ShaderBuiltinConstantCase(testCtx, varName, static_cast(shaderType), getValue, requiredExt)); - } -} - -} // anonymous - -ShaderBuiltinConstantTests::ShaderBuiltinConstantTests (tcu::TestContext& testCtx) - : TestCaseGroup(testCtx, "constant", "Built-in Constant Tests") -{ -} - -ShaderBuiltinConstantTests::~ShaderBuiltinConstantTests (void) -{ -} - -void ShaderBuiltinConstantTests::init (void) -{ - // Core builtin constants - { - static const struct - { - const char* varName; - ShaderBuiltinConstantCase::GetConstantValueFunc getValue; - } uintConstants[] = - { - { "gl_MaxVertexAttribs", GET_UINT32(maxVertexInputAttributes) }, - { "gl_MaxVertexOutputVectors", GET_UINT32(maxVertexOutputComponents) }, - { "gl_MaxFragmentInputVectors", GET_UINT32(maxFragmentInputComponents) }, - { "gl_MaxDrawBuffers", GET_UINT32(maxColorAttachments) }, - { "gl_MaxProgramTexelOffset", GET_UINT32(maxTexelOffset) }, - }; - - static const struct - { - const char* varName; - ShaderBuiltinConstantCase::GetConstantValueFunc getValue; - } uvec3Constants[] = - { - { "gl_MaxComputeWorkGroupCount", GET_UVEC3(maxComputeWorkGroupCount) }, - { "gl_MaxComputeWorkGroupSize", GET_UVEC3(maxComputeWorkGroupSize) }, - }; - - tcu::TestCaseGroup* const coreGroup = new tcu::TestCaseGroup(m_testCtx, "core", "Core Specification"); - addChild(coreGroup); - - for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(uintConstants); ndx++) - createShaderBuiltinConstantCase(coreGroup, m_testCtx, uintConstants[ndx].varName, uintConstants[ndx].getValue, DE_NULL); - - createShaderBuiltinConstantCase(coreGroup, m_testCtx, "gl_MinProgramTexelOffset", GET_INT32(minTexelOffset), DE_NULL); - - for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(uvec3Constants); ndx++) - createShaderBuiltinConstantCase(coreGroup, m_testCtx, uvec3Constants[ndx].varName, uvec3Constants[ndx].getValue, DE_NULL); - } - - // EXT_geometry_shader - { - static const struct - { - const char* varName; - ShaderBuiltinConstantCase::GetConstantValueFunc getValue; - } uintConstants[] = - { - { "gl_MaxGeometryInputComponents", GET_UINT32(maxGeometryInputComponents) }, - { "gl_MaxGeometryOutputComponents", GET_UINT32(maxGeometryOutputComponents) }, - { "gl_MaxGeometryOutputVertices", GET_UINT32(maxGeometryOutputVertices) }, - { "gl_MaxGeometryTotalOutputComponents", GET_UINT32(maxGeometryTotalOutputComponents) }, - }; - - tcu::TestCaseGroup* const geomGroup = new tcu::TestCaseGroup(m_testCtx, "geometry_shader", "GL_EXT_geometry_shader"); - addChild(geomGroup); - - for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(uintConstants); ndx++) - createShaderBuiltinConstantCase(geomGroup, m_testCtx, uintConstants[ndx].varName, uintConstants[ndx].getValue, "GL_EXT_geometry_shader"); - } - - // EXT_tessellation_shader - { - static const struct - { - const char* varName; - ShaderBuiltinConstantCase::GetConstantValueFunc getValue; - } uintConstants[] = - { - { "gl_MaxTessControlInputComponents", GET_UINT32(maxTessellationControlPerVertexInputComponents) }, - { "gl_MaxTessControlOutputComponents", GET_UINT32(maxTessellationControlPerVertexOutputComponents) }, - { "gl_MaxTessControlTotalOutputComponents", GET_UINT32(maxTessellationControlTotalOutputComponents) }, - - { "gl_MaxTessEvaluationInputComponents", GET_UINT32(maxTessellationEvaluationInputComponents) }, - { "gl_MaxTessEvaluationOutputComponents", GET_UINT32(maxTessellationEvaluationOutputComponents) }, - - { "gl_MaxTessPatchComponents", GET_UINT32(maxTessellationControlPerPatchOutputComponents) }, - - { "gl_MaxPatchVertices", GET_UINT32(maxTessellationPatchSize) }, - { "gl_MaxTessGenLevel", GET_UINT32(maxTessellationGenerationLevel) }, - }; - - tcu::TestCaseGroup* const tessGroup = new tcu::TestCaseGroup(m_testCtx, "tessellation_shader", "GL_EXT_tessellation_shader"); - addChild(tessGroup); - - for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(uintConstants); ndx++) - createShaderBuiltinConstantCase(tessGroup, m_testCtx, uintConstants[ndx].varName, uintConstants[ndx].getValue, "GL_EXT_tessellation_shader"); - } -} - -} // shaderexecutor -} // vkt diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.hpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.hpp deleted file mode 100644 index bbe4fad..0000000 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinConstantTests.hpp +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef _VKTSHADERBUILTINCONSTANTTESTS_HPP -#define _VKTSHADERBUILTINCONSTANTTESTS_HPP -/*------------------------------------------------------------------------ - * Vulkan Conformance Tests - * ------------------------ - * - * Copyright (c) 2015 The Khronos Group Inc. - * Copyright (c) 2015 Samsung Electronics Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice(s) and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * The Materials are Confidential Information as defined by the - * Khronos Membership Agreement until designated non-confidential by Khronos, - * at which point this condition clause shall be removed. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - * - *//*! - * \file - * \brief Shader built-in constant tests. - *//*--------------------------------------------------------------------*/ - -#include "tcuTestCase.hpp" - -namespace vkt -{ -namespace shaderexecutor -{ - -class ShaderBuiltinConstantTests : public tcu::TestCaseGroup -{ -public: - ShaderBuiltinConstantTests (tcu::TestContext& testCtx); - virtual ~ShaderBuiltinConstantTests (void); - - virtual void init (void); - -private: - ShaderBuiltinConstantTests (const ShaderBuiltinConstantTests&); - ShaderBuiltinConstantTests& operator= (const ShaderBuiltinConstantTests&); -}; - -} // shaderexecutor -} // vkt - -#endif // _VKTSHADERBUILTINCONSTANTTESTS_HPP diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinTests.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinTests.cpp index 278b574..3b5c427 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinTests.cpp @@ -38,7 +38,6 @@ #include "deUniquePtr.hpp" #include "vktShaderBuiltinPrecisionTests.hpp" -#include "vktShaderBuiltinConstantTests.hpp" #include "vktShaderCommonFunctionTests.hpp" #include "vktShaderIntegerFunctionTests.hpp" #include "vktShaderPackingFunctionTests.hpp" @@ -58,7 +57,6 @@ tcu::TestCaseGroup* createBuiltinTests (tcu::TestContext& testCtx) builtinFunctionTests->addChild(new ShaderPackingFunctionTests(testCtx)); builtinTests->addChild(builtinFunctionTests.release()); - builtinTests->addChild(new ShaderBuiltinConstantTests(testCtx)); builtinTests->addChild(new BuiltinPrecisionTests(testCtx)); return builtinTests.release(); diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp index c0766d5..6de5626 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp +++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp @@ -722,9 +722,9 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void const deUint32 queueFamilyIndex = ctx.getUniversalQueueFamilyIndex(); Allocator& memAlloc = ctx.getDefaultAllocator(); - const deInt32 renderSizeX = de::min(static_cast(DEFAULT_RENDER_WIDTH), numValues); - const deInt32 renderSizeY = (numValues / renderSizeX) + ((numValues % renderSizeX != 0) ? 1 : 0); - const tcu::IVec2 renderSize (renderSizeX, renderSizeY); + const deUint32 renderSizeX = de::min(static_cast(DEFAULT_RENDER_WIDTH), (deUint32)numValues); + const deUint32 renderSizeY = ((deUint32)numValues / renderSizeX) + (((deUint32)numValues % renderSizeX != 0) ? 1u : 0u); + const tcu::UVec2 renderSize (renderSizeX, renderSizeY); std::vector positions; VkFormat colorFormat = VK_FORMAT_R32G32B32A32_SFLOAT; @@ -763,7 +763,7 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void clearRenderData(); // Compute positions - 1px points are used to drive fragment shading. - positions = computeVertexPositions(numValues, renderSize); + positions = computeVertexPositions(numValues, renderSize.cast()); // Bind attributes addAttribute(ctx, memAlloc, 0u, VK_FORMAT_R32G32_SFLOAT, sizeof(tcu::Vec2), (deUint32)positions.size(), &positions[0]); @@ -1231,12 +1231,7 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0u, //VkQueryControlFlags queryFlags; - (VkQueryPipelineStatisticFlags)0u //VkQueryPipelineStatisticFlags pipelineStatistics; + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkRenderPassBeginInfo renderPassBeginInfo = @@ -1254,16 +1249,11 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); - { - std::vector barriers(colorImagePreRenderBarriers.size()); - if (!barriers.empty()) - { - for (size_t i = 0; i < barriers.size(); ++i) - barriers[i] = &colorImagePreRenderBarriers[i]; - vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, (deUint32)barriers.size(), &barriers[0]); - } - } - + + vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)colorImagePreRenderBarriers.size(), colorImagePreRenderBarriers.empty() ? DE_NULL : &colorImagePreRenderBarriers[0]); vk.cmdBeginRenderPass(*cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *graphicsPipeline); @@ -1283,16 +1273,11 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void vk.cmdDraw(*cmdBuffer, (deUint32)positions.size(), 1u, 0u, 0u); vk.cmdEndRenderPass(*cmdBuffer); + vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)colorImagePostRenderBarriers.size(), colorImagePostRenderBarriers.empty() ? DE_NULL : &colorImagePostRenderBarriers[0]); - { - std::vector barriers(colorImagePostRenderBarriers.size()); - if (!barriers.empty()) - { - for (size_t i = 0; i < barriers.size(); ++i) - barriers[i] = &colorImagePostRenderBarriers[i]; - vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, (deUint32)barriers.size(), &barriers[0]); - } - } VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); } @@ -1317,6 +1302,7 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void DE_NULL, // pNext 0u, // waitSemaphoreCount DE_NULL, // pWaitSemaphores + (const VkPipelineStageFlags*)DE_NULL, 1u, // commandBufferCount &cmdBuffer.get(), // pCommandBuffers 0u, // signalSemaphoreCount @@ -1369,13 +1355,7 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0, // VkQueryControlFlags queryFlags; - (VkQueryPipelineStatisticFlags)0 // VkQueryPipelineStatisticFlags pipelineStatistics; - + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkBufferImageCopy copyParams = @@ -1424,6 +1404,7 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, ©CmdBuffer.get(), 0u, @@ -2023,13 +2004,7 @@ void ComputeShaderExecutor::execute (const Context& ctx, int numValues, const vo VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0, // VkQueryControlFlags queryFlags; - (VkQueryPipelineStatisticFlags)0 // VkQueryPipelineStatisticFlags pipelineStatistics; - + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; m_descriptorSetLayoutBuilder.addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT); @@ -2177,6 +2152,7 @@ void ComputeShaderExecutor::execute (const Context& ctx, int numValues, const vo DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuffer.get(), 0u, @@ -2199,7 +2175,7 @@ static std::string generateVertexShaderForTess (void) std::ostringstream src; src << "#version 310 es\n" << "void main (void)\n{\n" - << " gl_Position = vec4(gl_VertexID/2, gl_VertexID%2, 0.0, 1.0);\n" + << " gl_Position = vec4(gl_VertexIndex/2, gl_VertexIndex%2, 0.0, 1.0);\n" << "}\n"; return src.str(); @@ -2232,7 +2208,7 @@ void TessellationExecutor::renderTess (const Context& ctx, deUint32 vertexCount) const deUint32 queueFamilyIndex = ctx.getUniversalQueueFamilyIndex(); Allocator& memAlloc = ctx.getDefaultAllocator(); - const tcu::IVec2 renderSize (DEFAULT_RENDER_WIDTH, DEFAULT_RENDER_HEIGHT); + const tcu::UVec2 renderSize (DEFAULT_RENDER_WIDTH, DEFAULT_RENDER_HEIGHT); Move colorImage; de::MovePtr colorImageAlloc; @@ -2531,7 +2507,7 @@ void TessellationExecutor::renderTess (const Context& ctx, deUint32 vertexCount) { VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - (VkPipelineTesselationStateCreateFlags)0, // VkPipelineTessellationStateCreateFlags flags; + (VkPipelineTessellationStateCreateFlags)0, // VkPipelineTessellationStateCreateFlags flags; 1 // uint32_t patchControlPoints; }; @@ -2689,13 +2665,7 @@ void TessellationExecutor::renderTess (const Context& ctx, deUint32 vertexCount) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, //VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0u, // VkQueryControlFlags queryFlags; - (VkQueryPipelineStatisticFlags)0u // VkQueryPipelineStatisticFlags pipelineStatistics; - + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue clearValues[1] = @@ -2750,6 +2720,7 @@ void TessellationExecutor::renderTess (const Context& ctx, deUint32 vertexCount) DE_NULL, 0u, (const VkSemaphore*)0, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuffer.get(), 0u, @@ -3077,6 +3048,22 @@ void ShaderExecutor::setupSamplerData (const VkDevice& vkDevice, m_uniformInfos.push_back(UniformInfoSp(new de::UniquePtr(samplers))); } +const void* ShaderExecutor::getBufferPtr (const deUint32 bindingLocation) const +{ + std::vector::const_iterator it = m_uniformInfos.begin(); + for (; it != m_uniformInfos.end(); it++) + { + const UniformInfo* uniformInfo = it->get()->get(); + if (uniformInfo->isBufferUniform() && uniformInfo->location == bindingLocation) + { + const BufferUniform* bufferUniform = static_cast(uniformInfo); + return bufferUniform->alloc->getHostPtr(); + } + } + + return DE_NULL; +} + void ShaderExecutor::addUniforms (const VkDevice& vkDevice, const DeviceInterface& vk, const deUint32 queueFamilyIndex, Allocator& memAlloc) { if (!m_uniformSetup) @@ -3136,21 +3123,21 @@ Move ShaderExecutor::createCombinedImage (const VkDevice& vkDevice, const VkImageCreateInfo imageCreateInfo = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pnext; - flags, // VkImageCreateFlags flags; - imageType, // VkImageType imageType; - format, // VkFormat format; - { texSize.x(), texSize.y(), texSize.z() }, // VkExtend3D extent; - 1u, // deUint32 mipLevels; - arraySize, // deUint32 arraySize; - VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; - tiling, // VkImageTiling tiling; - usage, // VkImageUsageFlags usage; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deuint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pnext; + flags, // VkImageCreateFlags flags; + imageType, // VkImageType imageType; + format, // VkFormat format; + { (deUint32)texSize.x(), (deUint32)texSize.y(), (deUint32)texSize.z() }, // VkExtend3D extent; + 1u, // deUint32 mipLevels; + arraySize, // deUint32 arraySize; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + tiling, // VkImageTiling tiling; + usage, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deuint32 queueFamilyCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; Move vkTexture = createImage(vk, vkDevice, &imageCreateInfo); @@ -3214,28 +3201,7 @@ de::MovePtr ShaderExecutor::createSamplerUniform allocation = uploadImage(vkDevice, vk, memAlloc, texFormat, texSize, data, *vkTexture, aspectMask); // Create sampler - const bool compareEnabled = (refSampler.compare != tcu::Sampler::COMPAREMODE_NONE); - const VkSamplerCreateInfo samplerParams = - { - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VkSamplerCreateFlags(0u), // VkSamplerCreateFlags flags; - mapFilterMode(refSampler.magFilter), // VkTexFilter magFilter; - mapFilterMode(refSampler.minFilter), // VkTexFilter minFilter; - mapMipmapMode(refSampler.minFilter), // VkTexMipmapMode mipMode; - mapWrapMode(refSampler.wrapS), // VkTexAddressMode addressModeU; - mapWrapMode(refSampler.wrapT), // VkTexAddressMode addressModeV; - mapWrapMode(refSampler.wrapR), // VkTexAddressMode addressModeW; - refSampler.lodThreshold, // float mipLodBias; - 1, // float maxAnisotropy; - compareEnabled, // VkBool32 compareEnable; - mapCompareMode(refSampler.compare), // VkCompareOp compareOp; - 0.0f, // float minLod; - 0.0f, // float maxLod; - VK_BORDER_COLOR_INT_OPAQUE_WHITE, // VkBorderColor boderColor; - VK_FALSE, // VkBool32 unnormalizerdCoordinates; - }; - + const VkSamplerCreateInfo samplerParams = mapSampler(refSampler, texFormat); Move sampler = createSampler(vk, vkDevice, &samplerParams); const VkImageViewCreateInfo viewParams = diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.hpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.hpp index 36a2541..30c6f1e 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.hpp +++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.hpp @@ -146,6 +146,8 @@ public: VkImageViewType imageViewType, const void* data); + const void* getBufferPtr (const deUint32 bindingLocation) const; + protected: ShaderExecutor (const ShaderSpec& shaderSpec, glu::ShaderType shaderType); diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.cpp index cbf0b56..93562a9 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.cpp @@ -68,10 +68,10 @@ using namespace vk; namespace { -static const int s_gridSize = 2; -static const int s_maxRenderWidth = 128; -static const int s_maxRenderHeight = 128; -static const tcu::Vec4 s_defaultClearColor = tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f); +static const int GRID_SIZE = 2; +static const deUint32 MAX_RENDER_WIDTH = 128; +static const deUint32 MAX_RENDER_HEIGHT = 128; +static const tcu::Vec4 DEFAULT_CLEAR_COLOR = tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f); static bool isSupportedLinearTilingFormat (const InstanceInterface& instanceInterface, VkPhysicalDevice device, VkFormat format) { @@ -471,7 +471,7 @@ ShaderRenderCaseInstance::ShaderRenderCaseInstance (Context& context, const UniformSetup& uniformSetup, const AttributeSetupFunc attribFunc) : vkt::TestInstance (context) - , m_clearColor (s_defaultClearColor) + , m_clearColor (DEFAULT_CLEAR_COLOR) , m_memAlloc (context.getDefaultAllocator()) , m_isVertexCase (isVertexCase) , m_evaluator (evaluator) @@ -491,11 +491,11 @@ tcu::TestStatus ShaderRenderCaseInstance::iterate (void) setup(); // Create quad grid. - const tcu::IVec2 viewportSize = getViewportSize(); + const tcu::UVec2 viewportSize = getViewportSize(); const int width = viewportSize.x(); const int height = viewportSize.y(); - QuadGrid quadGrid (m_isVertexCase ? s_gridSize : 4, width, height, tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f), m_userAttribTransforms, m_textures); + QuadGrid quadGrid (m_isVertexCase ? GRID_SIZE : 4, width, height, tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f), m_userAttribTransforms, m_textures); // Render result. tcu::Surface resImage (width, height); @@ -747,10 +747,10 @@ void ShaderRenderCaseInstance::useUniform (deUint32 bindingLocation, BaseUniform #undef UNIFORM_CASE } -const tcu::IVec2 ShaderRenderCaseInstance::getViewportSize (void) const +const tcu::UVec2 ShaderRenderCaseInstance::getViewportSize (void) const { - return tcu::IVec2(de::min(m_renderSize.x(), s_maxRenderWidth), - de::min(m_renderSize.y(), s_maxRenderHeight)); + return tcu::UVec2(de::min(m_renderSize.x(), MAX_RENDER_WIDTH), + de::min(m_renderSize.y(), MAX_RENDER_HEIGHT)); } Move ShaderRenderCaseInstance::createImage2D (const tcu::Texture2D& texture, @@ -769,7 +769,11 @@ Move ShaderRenderCaseInstance::createImage2D (const tcu::Texture2D& tex 0, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; format, // VkFormat format; - { texture.getWidth(), texture.getHeight(), 1 }, // VkExtend3D extent; + { + (deUint32)texture.getWidth(), + (deUint32)texture.getHeight(), + 1u + }, // VkExtend3D extent; 1u, // deUint32 mipLevels; 1u, // deUint32 arraySize; VK_SAMPLE_COUNT_1_BIT, // deUint32 samples; @@ -816,8 +820,8 @@ de::MovePtr ShaderRenderCaseInstance::uploadImage2D (const tcu::Text void ShaderRenderCaseInstance::copyTilingImageToOptimal (const vk::VkImage& srcImage, const vk::VkImage& dstImage, - deInt32 width, - deInt32 height) + deUint32 width, + deUint32 height) { const VkDevice vkDevice = m_context.getDevice(); const DeviceInterface& vk = m_context.getDeviceInterface(); @@ -851,12 +855,7 @@ void ShaderRenderCaseInstance::copyTilingImageToOptimal (const vk::VkImage& srcI VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; usageFlags, // VkCommandBufferUsageFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; Move cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferParams); @@ -870,11 +869,10 @@ void ShaderRenderCaseInstance::copyTilingImageToOptimal (const vk::VkImage& srcI createImageMemoryBarrier(dstImage, (VkAccessFlags)0u, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) }; - for (deUint32 barrierNdx = 0; barrierNdx < DE_LENGTH_OF_ARRAY(layoutBarriers); barrierNdx++) - { - const VkImageMemoryBarrier* memoryBarrier = &layoutBarriers[barrierNdx]; - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, 1, (const void * const*)&memoryBarrier); - } + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + DE_LENGTH_OF_ARRAY(layoutBarriers), layoutBarriers); // Add image copy const VkImageCopy imageCopy = @@ -914,8 +912,10 @@ void ShaderRenderCaseInstance::copyTilingImageToOptimal (const vk::VkImage& srcI const VkImageMemoryBarrier dstBarrier = createImageMemoryBarrier(dstImage, VK_ACCESS_HOST_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT, 0u, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); - const void* const* barrier = (const void* const*)&dstBarrier; - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, 1, (const void* const*)&barrier); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + 1, &dstBarrier); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); @@ -932,6 +932,7 @@ void ShaderRenderCaseInstance::copyTilingImageToOptimal (const vk::VkImage& srcI DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuffer.get(), 0u, @@ -985,28 +986,7 @@ void ShaderRenderCaseInstance::useSampler2D (deUint32 bindingLocation, deUint32 } // Create sampler - const bool compareEnabled = (refSampler.compare != tcu::Sampler::COMPAREMODE_NONE); - const VkSamplerCreateInfo samplerParams = - { - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - (VkSamplerCreateFlags)0, - mapFilterMode(refSampler.magFilter), // VkTexFilter magFilter; - mapFilterMode(refSampler.minFilter), // VkTexFilter minFilter; - mapMipmapMode(refSampler.minFilter), // VkTexMipmapMode mipMode; - mapWrapMode(refSampler.wrapS), // VkTexAddressMode addressModeU; - mapWrapMode(refSampler.wrapT), // VkTexAddressMode addressModeV; - mapWrapMode(refSampler.wrapR), // VkTexAddressMode addressModeW; - refSampler.lodThreshold, // float mipLodBias; - 1, // float maxAnisotropy; - compareEnabled, // VkBool32 compareEnable; - mapCompareMode(refSampler.compare), // VkCompareOp compareOp; - 0.0f, // float minLod; - 0.0f, // float maxLod; - VK_BORDER_COLOR_INT_OPAQUE_WHITE, // VkBorderColor boderColor; - VK_FALSE, // VkBool32 unnormalizerdCoordinates; - }; - + const VkSamplerCreateInfo samplerParams = mapSampler(refSampler, refTexture.getFormat()); Move sampler = createSampler(vk, vkDevice, &samplerParams); const VkImageViewCreateInfo viewParams = @@ -1264,9 +1244,9 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua setupUniforms(quadGrid.getConstCoords()); m_descriptorSetLayout = m_descriptorSetLayoutBuilder.build(vk, vkDevice); - m_descriptorPool = m_descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u); - + if (!m_uniformInfos.empty()) { + m_descriptorPool = m_descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u); const VkDescriptorSetAllocateInfo allocInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, @@ -1555,12 +1535,7 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const VkClearValue clearValues = makeClearValueColorF32(m_clearColor.x(), @@ -1585,7 +1560,6 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua // Add texture barriers std::vector barriers; - std::vector barrierPtrs; for(deUint32 i = 0; i < m_uniformInfos.size(); i++) { @@ -1602,15 +1576,18 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua const VkImageMemoryBarrier textureBarrier = createImageMemoryBarrier(sampler->image->get(), outputMask, 0u, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); barriers.push_back(textureBarrier); - barrierPtrs.push_back((void*)&barriers.back()); } - vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, (deUint32)barrierPtrs.size(), (barrierPtrs.size() ? (const void * const*)&barrierPtrs[0] : DE_NULL)); + vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)barriers.size(), (barriers.empty() ? (const VkImageMemoryBarrier*)DE_NULL : &barriers[0])); vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); vk.cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_graphicsPipeline); - vk.cmdBindDescriptorSets(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1, &*m_descriptorSet, 0u, DE_NULL); + if (!m_uniformInfos.empty()) + vk.cmdBindDescriptorSets(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1, &*m_descriptorSet, 0u, DE_NULL); vk.cmdBindIndexBuffer(*m_cmdBuffer, *m_indiceBuffer, 0, VK_INDEX_TYPE_UINT16); const deUint32 numberOfVertexAttributes = (deUint32)m_vertexBuffers.size(); @@ -1648,6 +1625,7 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &m_cmdBuffer.get(), 0u, @@ -1693,12 +1671,7 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const Move cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferParams); @@ -1723,6 +1696,7 @@ void ShaderRenderCaseInstance::render (tcu::Surface& result, const QuadGrid& qua DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuffer.get(), 0u, diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.hpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.hpp index 3368fa3..3466066 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.hpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRender.hpp @@ -409,7 +409,7 @@ protected: virtual void setup (void); virtual void setupUniforms (const tcu::Vec4& constCoords); - const tcu::IVec2 getViewportSize (void) const; + const tcu::UVec2 getViewportSize (void) const; std::vector m_userAttribTransforms; const tcu::Vec4 m_clearColor; @@ -428,8 +428,8 @@ private: const vk::VkImageTiling tiling); void copyTilingImageToOptimal (const vk::VkImage& srcImage, const vk::VkImage& dstImage, - deInt32 width, - deInt32 height); + deUint32 width, + deUint32 height); void setupUniformData (deUint32 bindingLocation, size_t size, const void* dataPtr); void setupDefaultInputs (const QuadGrid& quadGrid); @@ -453,7 +453,7 @@ private: }; std::vector m_enabledBaseAttributes; - const tcu::IVec2 m_renderSize; + const tcu::UVec2 m_renderSize; const vk::VkFormat m_colorFormat; vk::Move m_colorImage; diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDiscardTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDiscardTests.cpp index 30e382f..fb983ab 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDiscardTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDiscardTests.cpp @@ -136,7 +136,7 @@ ShaderDiscardCase::ShaderDiscardCase (tcu::TestContext& testCtx, { m_fragShaderSource = shaderSource; m_vertShaderSource = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location=0) in highp vec4 a_position;\n" @@ -204,7 +204,7 @@ static ShaderEvalFunc getEvalFunc (DiscardMode mode) static const char* getTemplate (DiscardTemplate variant) { #define GLSL_SHADER_TEMPLATE_HEADER \ - "#version 140\n" \ + "#version 310 es\n" \ "#extension GL_ARB_separate_shader_objects : enable\n" \ "#extension GL_ARB_shading_language_420pack : enable\n" \ "layout(location = 0) in mediump vec4 v_color;\n" \ diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp index 17e4b8c..f2c633a 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp @@ -269,7 +269,7 @@ static de::MovePtr createVaryingArrayCase (tcu::TestContext& IndexAccessType fragAccess) { std::ostringstream vtx; - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; vtx << "layout(location = 0) in highp vec4 a_position;\n"; @@ -324,7 +324,7 @@ static de::MovePtr createVaryingArrayCase (tcu::TestContext& vtx << "}\n"; std::ostringstream frag; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; frag << "precision mediump int;\n"; @@ -406,10 +406,10 @@ static de::MovePtr createUniformArrayCase (tcu::TestContext& std::ostringstream frag; std::ostringstream& op = isVertexCase ? vtx : frag; - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; @@ -527,10 +527,10 @@ static de::MovePtr createTmpArrayCase (tcu::TestContext& con std::ostringstream frag; std::ostringstream& op = isVertexCase ? vtx : frag; - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; @@ -705,10 +705,10 @@ static de::MovePtr createVectorSubscriptCase (tcu::TestConte int vecLen = getDataTypeScalarSize(varType); const char* vecLenName = getIntUniformName(vecLen); - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; @@ -916,10 +916,10 @@ static de::MovePtr createMatrixSubscriptCase (tcu::TestConte const char* matSizeName = getIntUniformName(numCols); DataType vecType = getDataTypeFloatVec(numRows); - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderLoopTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderLoopTests.cpp index 025f582..1d331a0 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderLoopTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderLoopTests.cpp @@ -319,11 +319,11 @@ static de::MovePtr createGenericLoopCase (tcu::TestContext& test std::ostringstream frag; std::ostringstream& op = isVertexCase ? vtx : frag; - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; @@ -549,11 +549,11 @@ static de::MovePtr createSpecialLoopCase (tcu::TestContext& test std::vector uniformInformations; deUint32 locationCounter = 0; - vtx << "#version 140\n"; + vtx << "#version 310 es\n"; vtx << "#extension GL_ARB_separate_shader_objects : enable\n"; vtx << "#extension GL_ARB_shading_language_420pack : enable\n"; - frag << "#version 140\n"; + frag << "#version 310 es\n"; frag << "#extension GL_ARB_separate_shader_objects : enable\n"; frag << "#extension GL_ARB_shading_language_420pack : enable\n"; diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderOperatorTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderOperatorTests.cpp index c47b6d4..6430199 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderOperatorTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderOperatorTests.cpp @@ -690,7 +690,7 @@ void ShaderOperatorCase::setupShaderData (void) std::ostringstream& op = m_isVertexCase ? vtx : frag; std::string header = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n"; diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderReturnTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderReturnTests.cpp index 9174e03..43330b9 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderReturnTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderReturnTests.cpp @@ -100,7 +100,7 @@ ShaderReturnCase::ShaderReturnCase (tcu::TestContext& testCtx, { m_vertShaderSource = shaderSource; m_fragShaderSource = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_color;\n" @@ -114,7 +114,7 @@ ShaderReturnCase::ShaderReturnCase (tcu::TestContext& testCtx, { m_fragShaderSource = shaderSource; m_vertShaderSource = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -152,7 +152,7 @@ private: de::MovePtr makeConditionalReturnInFuncCase (tcu::TestContext& context, const std::string& name, const std::string& description, ReturnMode returnMode, bool isVertex) { tcu::StringTemplate tmpl( - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = ${COORDLOC}) in ${COORDPREC} vec4 ${COORDS};\n" @@ -196,7 +196,7 @@ de::MovePtr makeOutputWriteReturnCase (tcu::TestContext& conte tcu::StringTemplate tmpl( inFunction ? - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = ${COORDLOC}) in ${COORDPREC} vec4 ${COORDS};\n" @@ -214,7 +214,7 @@ de::MovePtr makeOutputWriteReturnCase (tcu::TestContext& conte " myfunc();\n" "}\n" : - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = ${COORDLOC}) in ${COORDPREC} vec4 ${COORDS};\n" @@ -253,7 +253,7 @@ de::MovePtr makeOutputWriteReturnCase (tcu::TestContext& conte de::MovePtr makeReturnInLoopCase (tcu::TestContext& context, const std::string& name, const std::string& description, bool isDynamicLoop, ReturnMode returnMode, bool isVertex) { tcu::StringTemplate tmpl( - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = ${COORDLOC}) in ${COORDPREC} vec4 ${COORDS};\n" @@ -349,7 +349,7 @@ ShaderReturnTests::~ShaderReturnTests (void) void ShaderReturnTests::init (void) { addChild(new ShaderReturnCase(m_testCtx, "single_return_vertex", "Single return statement in function", true, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -365,7 +365,7 @@ void ShaderReturnTests::init (void) " v_color = getColor();\n" "}\n", evalReturnAlways, DE_NULL)); addChild(new ShaderReturnCase(m_testCtx, "single_return_fragment", "Single return statement in function", false, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_coords;\n" @@ -393,7 +393,7 @@ void ShaderReturnTests::init (void) // Unconditional double return in function. addChild(new ShaderReturnCase(m_testCtx, "double_return_vertex", "Unconditional double return in function", true, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -410,7 +410,7 @@ void ShaderReturnTests::init (void) " v_color = getColor();\n" "}\n", evalReturnAlways, DE_NULL)); addChild(new ShaderReturnCase(m_testCtx, "double_return_fragment", "Unconditional double return in function", false, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_coords;\n" @@ -427,7 +427,7 @@ void ShaderReturnTests::init (void) // Last statement in main. addChild(new ShaderReturnCase(m_testCtx, "last_statement_in_main_vertex", "Return as a final statement in main()", true, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -440,7 +440,7 @@ void ShaderReturnTests::init (void) " return;\n" "}\n", evalReturnAlways, DE_NULL)); addChild(new ShaderReturnCase(m_testCtx, "last_statement_in_main_fragment", "Return as a final statement in main()", false, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_coords;\n" @@ -483,7 +483,7 @@ void ShaderReturnTests::init (void) // Unconditional return in infinite loop. addChild(new ShaderReturnCase(m_testCtx, "return_in_infinite_loop_vertex", "Return in infinite loop", true, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -503,7 +503,7 @@ void ShaderReturnTests::init (void) " return;\n" "}\n", evalReturnAlways, new ReturnTestUniformSetup(UI_ZERO))); addChild(new ShaderReturnCase(m_testCtx, "return_in_infinite_loop_fragment", "Return in infinite loop", false, - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_coords;\n" diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderStructTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderStructTests.cpp index 9d6b5c9..f02e576 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderStructTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderStructTests.cpp @@ -84,7 +84,7 @@ ShaderStructCase::~ShaderStructCase (void) static de::MovePtr createStructCase (tcu::TestContext& testCtx, const std::string& name, const std::string& description, bool isVertexCase, ShaderEvalFunc evalFunc, UniformSetupFunc uniformFunc, const LineStream& shaderSrc) { static std::string defaultVertSrc = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -96,7 +96,7 @@ static de::MovePtr createStructCase (tcu::TestContext& testCtx " gl_Position = a_position;\n" "}\n"; static std::string defaultFragSrc = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_color;\n" @@ -114,7 +114,7 @@ static de::MovePtr createStructCase (tcu::TestContext& testCtx if (isVertexCase) { spParams["HEADER"] = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in highp vec4 a_position;\n" @@ -130,7 +130,7 @@ static de::MovePtr createStructCase (tcu::TestContext& testCtx else { spParams["HEADER"] = - "#version 140\n" + "#version 310 es\n" "#extension GL_ARB_separate_shader_objects : enable\n" "#extension GL_ARB_shading_language_420pack : enable\n" "layout(location = 0) in mediump vec4 v_coords;\n" diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderSwitchTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderSwitchTests.cpp index eb56d42..1517375 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderSwitchTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderSwitchTests.cpp @@ -119,12 +119,12 @@ static de::MovePtr makeSwitchCase (tcu::TestContext& testCtx, std::ostringstream frag; std::ostringstream& op = isVertex ? vtx : frag; - vtx << "#version 140\n" + vtx << "#version 310 es\n" << "#extension GL_ARB_separate_shader_objects : enable\n" << "#extension GL_ARB_shading_language_420pack : enable\n" << "layout(location = 0) in highp vec4 a_position;\n" << "layout(location = 1) in highp vec4 a_coords;\n\n"; - frag << "#version 140\n" + frag << "#version 310 es\n" << "#extension GL_ARB_separate_shader_objects : enable\n" << "#extension GL_ARB_shading_language_420pack : enable\n" << "layout(location = 0) out mediump vec4 o_color;\n"; diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp index a317fa0..19cecc4 100644 --- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp +++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp @@ -374,12 +374,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void) VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, - (VkRenderPass)0u, // renderPass - 0u, // subpass - (VkFramebuffer)0u, // framebuffer - VK_FALSE, // occlusionQueryEnable - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; const tcu::IVec3& numWorkGroups = m_shaderSpec.numWorkGroups; @@ -406,6 +401,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void) DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuffer.get(), 0u, diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp index 9c83e84..ceb0ba0 100644 --- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp +++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp @@ -145,6 +145,7 @@ static const char* const s_CommonTypes = "%i32 = OpTypeInt 32 1\n" "%f32 = OpTypeFloat 32\n" "%uvec3 = OpTypeVector %u32 3\n" + "%fvec3 = OpTypeVector %f32 3\n" "%uvec3ptr = OpTypePointer Input %uvec3\n" "%f32ptr = OpTypePointer Uniform %f32\n" "%f32arr = OpTypeRuntimeArray %f32\n"; @@ -557,6 +558,7 @@ tcu::TestCaseGroup* createOpCopyMemoryGroup (tcu::TestContext& testCtx) "OpName %id \"gl_GlobalInvocationID\"\n" "OpDecorate %id BuiltIn GlobalInvocationId\n" + "OpDecorate %vec4arr ArrayStride 16\n" + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + @@ -616,6 +618,7 @@ tcu::TestCaseGroup* createOpCopyMemoryGroup (tcu::TestContext& testCtx) "OpName %id \"gl_GlobalInvocationID\"\n" "OpDecorate %id BuiltIn GlobalInvocationId\n" + "OpDecorate %f32arr100 ArrayStride 4\n" + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + @@ -657,7 +660,7 @@ tcu::TestCaseGroup* createOpCopyMemoryGroup (tcu::TestContext& testCtx) fillRandomScalars(rnd, -200.f, 200.f, &inputFloats3[0], 16); for (size_t ndx = 0; ndx < 16; ++ndx) - outputFloats3[ndx] = -inputFloats3[ndx]; + outputFloats3[ndx] = inputFloats3[ndx]; spec3.assembly = string(s_ShaderPreamble) + @@ -666,6 +669,14 @@ tcu::TestCaseGroup* createOpCopyMemoryGroup (tcu::TestContext& testCtx) "OpName %id \"gl_GlobalInvocationID\"\n" "OpDecorate %id BuiltIn GlobalInvocationId\n" + "OpMemberDecorate %inbuf 0 Offset 0\n" + "OpMemberDecorate %inbuf 1 Offset 16\n" + "OpMemberDecorate %inbuf 2 Offset 32\n" + "OpMemberDecorate %inbuf 3 Offset 48\n" + "OpMemberDecorate %outbuf 0 Offset 0\n" + "OpMemberDecorate %outbuf 1 Offset 16\n" + "OpMemberDecorate %outbuf 2 Offset 32\n" + "OpMemberDecorate %outbuf 3 Offset 48\n" + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + @@ -766,7 +777,6 @@ tcu::TestCaseGroup* createOpCopyObjectGroup (tcu::TestContext& testCtx) + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + - "%fvec3 = OpTypeVector %f32 3\n" "%fmat = OpTypeMatrix %fvec3 3\n" "%three = OpConstant %u32 3\n" "%farr = OpTypeArray %f32 %three\n" @@ -909,7 +919,8 @@ tcu::TestCaseGroup* createOpUnreachableGroup (tcu::TestContext& testCtx) "%inval = OpLoad %f32 %inloc\n" "%outloc = OpAccessChain %f32ptr %outdata %zero %x\n" "%ret_const5 = OpFunctionCall %u32 %func_const5\n" - "%ret_modulo4 = OpFunctionCall %u32 %func_modulo4 %thousand\n" + "%v_thousand = OpVariable %u32ptr Function %thousand\n" + "%ret_modulo4 = OpFunctionCall %u32 %func_modulo4 %v_thousand\n" "%cmp_gt = OpUGreaterThan %bool %ret_const5 %ret_modulo4\n" " OpSelectionMerge %if_end None\n" " OpBranchConditional %cmp_gt %if_true %if_false\n" @@ -1180,6 +1191,7 @@ tcu::TestCaseGroup* createSpecConstantGroup (tcu::TestContext& testCtx) "OpDecorate %id BuiltIn GlobalInvocationId\n" "OpDecorate %sc_0 SpecId 0\n" "OpDecorate %sc_1 SpecId 1\n" + "OpDecorate %i32arr ArrayStride 4\n" + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + @@ -1293,6 +1305,7 @@ tcu::TestCaseGroup* createSpecConstantGroup (tcu::TestContext& testCtx) "OpDecorate %sc_0 SpecId 0\n" "OpDecorate %sc_1 SpecId 1\n" "OpDecorate %sc_2 SpecId 2\n" + "OpDecorate %i32arr ArrayStride 4\n" + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + @@ -1712,23 +1725,24 @@ tcu::TestCaseGroup* createMultipleShaderGroup (tcu::TestContext& testCtx) "OpEntryPoint GLCompute %comp_main1 \"entrypoint1\" %id\n" "OpEntryPoint GLCompute %comp_main2 \"entrypoint2\" %id\n" // A module cannot have two OpEntryPoint instructions with the same Execution Model and the same Name string. - "OpEntryPoint Vertex %vert_main \"entrypoint2\" %vert_builtins %vertexID %instanceID\n" - "OpExecutionMode %vert_main LocalSize 1 1 1\n" + "OpEntryPoint Vertex %vert_main \"entrypoint2\" %vert_builtins %vertexIndex %instanceIndex\n" + "OpExecutionMode %comp_main1 LocalSize 1 1 1\n" + "OpExecutionMode %comp_main2 LocalSize 1 1 1\n" "OpName %comp_main1 \"entrypoint1\"\n" "OpName %comp_main2 \"entrypoint2\"\n" "OpName %vert_main \"entrypoint2\"\n" "OpName %id \"gl_GlobalInvocationID\"\n" "OpName %vert_builtin_st \"gl_PerVertex\"\n" - "OpName %vertexID \"gl_VertexID\"\n" - "OpName %instanceID \"gl_InstanceID\"\n" + "OpName %vertexIndex \"gl_VertexIndex\"\n" + "OpName %instanceIndex \"gl_InstanceIndex\"\n" "OpMemberName %vert_builtin_st 0 \"gl_Position\"\n" "OpMemberName %vert_builtin_st 1 \"gl_PointSize\"\n" "OpMemberName %vert_builtin_st 2 \"gl_ClipDistance\"\n" "OpDecorate %id BuiltIn GlobalInvocationId\n" - "OpDecorate %vertexID BuiltIn VertexId\n" - "OpDecorate %instanceID BuiltIn InstanceId\n" + "OpDecorate %vertexIndex BuiltIn VertexIndex\n" + "OpDecorate %instanceIndex BuiltIn InstanceIndex\n" "OpDecorate %vert_builtin_st Block\n" "OpMemberDecorate %vert_builtin_st 0 BuiltIn Position\n" "OpMemberDecorate %vert_builtin_st 1 BuiltIn PointSize\n" @@ -1736,6 +1750,10 @@ tcu::TestCaseGroup* createMultipleShaderGroup (tcu::TestContext& testCtx) + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + string(s_InputOutputBuffer) + + "%zero = OpConstant %i32 0\n" + "%one = OpConstant %u32 1\n" + "%c_f32_1 = OpConstant %f32 1\n" + "%i32ptr = OpTypePointer Input %i32\n" "%vec4 = OpTypeVector %f32 4\n" "%vec4ptr = OpTypePointer Output %vec4\n" @@ -1745,11 +1763,8 @@ tcu::TestCaseGroup* createMultipleShaderGroup (tcu::TestContext& testCtx) "%vert_builtins = OpVariable %vert_builtin_st_ptr Output\n" "%id = OpVariable %uvec3ptr Input\n" - "%vertexID = OpVariable %i32ptr Input\n" - "%instanceID = OpVariable %i32ptr Input\n" - "%zero = OpConstant %i32 0\n" - "%one = OpConstant %u32 1\n" - "%c_f32_1 = OpConstant %f32 1\n" + "%vertexIndex = OpVariable %i32ptr Input\n" + "%instanceIndex = OpVariable %i32ptr Input\n" "%c_vec4_1 = OpConstantComposite %vec4 %c_f32_1 %c_f32_1 %c_f32_1 %c_f32_1\n" // gl_Position = vec4(1.); @@ -2025,10 +2040,9 @@ tcu::TestCaseGroup* createOpConstantNullGroup (tcu::TestContext& testCtx) cases.push_back(CaseParameter("vec4float32", "%type = OpTypeVector %f32 4")); cases.push_back(CaseParameter("vec3bool", "%type = OpTypeVector %bool 3")); cases.push_back(CaseParameter("vec2uint32", "%type = OpTypeVector %u32 2")); - cases.push_back(CaseParameter("matrix", "%type = OpTypeMatrix %uvec3 3")); + cases.push_back(CaseParameter("matrix", "%type = OpTypeMatrix %fvec3 3")); cases.push_back(CaseParameter("array", "%100 = OpConstant %u32 100\n" "%type = OpTypeArray %i32 %100")); - cases.push_back(CaseParameter("runtimearray", "%type = OpTypeRuntimeArray %f32")); cases.push_back(CaseParameter("struct", "%type = OpTypeStruct %f32 %i32 %u32")); cases.push_back(CaseParameter("pointer", "%type = OpTypePointer Function %i32")); @@ -2093,11 +2107,11 @@ tcu::TestCaseGroup* createOpConstantCompositeGroup (tcu::TestContext& testCtx) cases.push_back(CaseParameter("vector", "%five = OpConstant %u32 5\n" "%const = OpConstantComposite %uvec3 %five %zero %five")); - cases.push_back(CaseParameter("matrix", "%m3uvec3 = OpTypeMatrix %uvec3 3\n" + cases.push_back(CaseParameter("matrix", "%m3uvec3 = OpTypeMatrix %fvec3 3\n" "%ten = OpConstant %u32 10\n" "%vec = OpConstantComposite %uvec3 %ten %zero %ten\n" "%mat = OpConstantComposite %m3uvec3 %vec %vec %vec")); - cases.push_back(CaseParameter("struct", "%m2vec3 = OpTypeMatrix %uvec3 2\n" + cases.push_back(CaseParameter("struct", "%m2vec3 = OpTypeMatrix %fvec3 2\n" "%struct = OpTypeStruct %u32 %f32 %uvec3 %m2vec3\n" "%one = OpConstant %u32 1\n" "%point5 = OpConstant %f32 0.5\n" @@ -2149,7 +2163,7 @@ float constructNormalizedFloat (deInt32 exponent, deUint32 significand) for (deInt32 idx = 0; idx < 23; ++idx) { - f += ((significand & 0x800000) == 0) ? 0.f : std::ldexp(1.0f, -idx); + f += ((significand & 0x800000) == 0) ? 0.f : std::ldexp(1.0f, -(idx + 1)); significand <<= 1; } @@ -2278,6 +2292,7 @@ tcu::TestCaseGroup* createOpQuantizeToF16Group (tcu::TestContext& testCtx) } } + spec.assembly = shader; spec.inputs.push_back(BufferSp(new Float32Buffer(infinities))); spec.outputs.push_back(BufferSp(new Float32Buffer(results))); spec.numWorkGroups = IVec3(numElements, 1, 1); @@ -2305,6 +2320,7 @@ tcu::TestCaseGroup* createOpQuantizeToF16Group (tcu::TestContext& testCtx) } } + spec.assembly = shader; spec.inputs.push_back(BufferSp(new Float32Buffer(nans))); spec.outputs.push_back(BufferSp(new Float32Buffer(nans))); spec.numWorkGroups = IVec3(numElements, 1, 1); @@ -2354,6 +2370,7 @@ tcu::TestCaseGroup* createOpQuantizeToF16Group (tcu::TestContext& testCtx) } } + spec.assembly = shader; spec.inputs.push_back(BufferSp(new Float32Buffer(small))); spec.outputs.push_back(BufferSp(new Float32Buffer(zeros))); spec.numWorkGroups = IVec3(numElements, 1, 1); @@ -2372,6 +2389,7 @@ tcu::TestCaseGroup* createOpQuantizeToF16Group (tcu::TestContext& testCtx) for (size_t idx = 0; idx < numElements; ++idx) exact.push_back(static_cast(idx - 100)); + spec.assembly = shader; spec.inputs.push_back(BufferSp(new Float32Buffer(exact))); spec.outputs.push_back(BufferSp(new Float32Buffer(exact))); spec.numWorkGroups = IVec3(numElements, 1, 1); @@ -2390,6 +2408,7 @@ tcu::TestCaseGroup* createOpQuantizeToF16Group (tcu::TestContext& testCtx) inputs.push_back(constructNormalizedFloat(2, 0x01E000)); inputs.push_back(constructNormalizedFloat(1, 0xFFE000)); + spec.assembly = shader; spec.verifyIO = &compareOpQuantizeF16ComputeExactCase; spec.inputs.push_back(BufferSp(new Float32Buffer(inputs))); spec.outputs.push_back(BufferSp(new Float32Buffer(inputs))); @@ -2644,7 +2663,6 @@ tcu::TestCaseGroup* createOpConstantUsageGroup (tcu::TestContext& testCtx) + string(s_InputOutputBufferTraits) + string(s_CommonTypes) + - "%fvec3 = OpTypeVector %f32 3\n" "%fmat = OpTypeMatrix %fvec3 3\n" "%ten = OpConstant %u32 10\n" "%f32arr10 = OpTypeArray %f32 %ten\n" @@ -3106,7 +3124,7 @@ tcu::TestCaseGroup* createOpUndefGroup (tcu::TestContext& testCtx) cases.push_back(CaseParameter("float32", "%type = OpTypeFloat 32")); cases.push_back(CaseParameter("vec4float32", "%type = OpTypeVector %f32 4")); cases.push_back(CaseParameter("vec2uint32", "%type = OpTypeVector %u32 2")); - cases.push_back(CaseParameter("matrix", "%type = OpTypeMatrix %uvec3 3")); + cases.push_back(CaseParameter("matrix", "%type = OpTypeMatrix %fvec3 3")); cases.push_back(CaseParameter("image", "%type = OpTypeImage %f32 2D 0 0 0 0 Unknown")); cases.push_back(CaseParameter("sampler", "%type = OpTypeSampler")); cases.push_back(CaseParameter("sampledimage", "%img = OpTypeImage %f32 2D 0 0 0 0 Unknown\n" @@ -3370,7 +3388,7 @@ string makeVertexShaderAssembly(const map& fragments) static const char vertexShaderBoilerplate[] = "OpCapability Shader\n" "OpMemoryModel Logical GLSL450\n" - "OpEntryPoint Vertex %main \"main\" %BP_stream %BP_position %BP_vtx_color %BP_color %BP_gl_VertexID %BP_gl_InstanceID\n" + "OpEntryPoint Vertex %main \"main\" %BP_stream %BP_position %BP_vtx_color %BP_color %BP_gl_VertexIndex %BP_gl_InstanceIndex\n" "${debug:opt}\n" "OpName %main \"main\"\n" "OpName %BP_gl_PerVertex \"gl_PerVertex\"\n" @@ -3383,8 +3401,8 @@ string makeVertexShaderAssembly(const map& fragments) "OpName %BP_position \"position\"\n" "OpName %BP_vtx_color \"vtxColor\"\n" "OpName %BP_color \"color\"\n" - "OpName %BP_gl_VertexID \"gl_VertexID\"\n" - "OpName %BP_gl_InstanceID \"gl_InstanceID\"\n" + "OpName %BP_gl_VertexIndex \"gl_VertexIndex\"\n" + "OpName %BP_gl_InstanceIndex \"gl_InstanceIndex\"\n" "OpMemberDecorate %BP_gl_PerVertex 0 BuiltIn Position\n" "OpMemberDecorate %BP_gl_PerVertex 1 BuiltIn PointSize\n" "OpMemberDecorate %BP_gl_PerVertex 2 BuiltIn ClipDistance\n" @@ -3393,8 +3411,8 @@ string makeVertexShaderAssembly(const map& fragments) "OpDecorate %BP_position Location 0\n" "OpDecorate %BP_vtx_color Location 1\n" "OpDecorate %BP_color Location 1\n" - "OpDecorate %BP_gl_VertexID BuiltIn VertexId\n" - "OpDecorate %BP_gl_InstanceID BuiltIn InstanceId\n" + "OpDecorate %BP_gl_VertexIndex BuiltIn VertexIndex\n" + "OpDecorate %BP_gl_InstanceIndex BuiltIn InstanceIndex\n" "${decoration:opt}\n" SPIRV_ASSEMBLY_TYPES SPIRV_ASSEMBLY_CONSTANTS @@ -3405,8 +3423,8 @@ string makeVertexShaderAssembly(const map& fragments) "%BP_position = OpVariable %ip_v4f32 Input\n" "%BP_vtx_color = OpVariable %op_v4f32 Output\n" "%BP_color = OpVariable %ip_v4f32 Input\n" - "%BP_gl_VertexID = OpVariable %ip_i32 Input\n" - "%BP_gl_InstanceID = OpVariable %ip_i32 Input\n" + "%BP_gl_VertexIndex = OpVariable %ip_i32 Input\n" + "%BP_gl_InstanceIndex = OpVariable %ip_i32 Input\n" "${pre_main:opt}\n" "%main = OpFunction %void None %fun\n" "%BP_label = OpLabel\n" @@ -3932,14 +3950,14 @@ void createCombinedModule(vk::SourceCollections& dst, InstanceContext) "OpName %vert_Position \"position\"\n" "OpName %vert_vtxColor \"vtxColor\"\n" "OpName %vert_color \"color\"\n" - "OpName %vert_vertex_id \"gl_VertexID\"\n" - "OpName %vert_instance_id \"gl_InstanceID\"\n" + "OpName %vert_vertex_id \"gl_VertexIndex\"\n" + "OpName %vert_instance_id \"gl_InstanceIndex\"\n" "OpDecorate %vert_vtxPosition Location 2\n" "OpDecorate %vert_Position Location 0\n" "OpDecorate %vert_vtxColor Location 1\n" "OpDecorate %vert_color Location 1\n" - "OpDecorate %vert_vertex_id BuiltIn VertexId\n" - "OpDecorate %vert_instance_id BuiltIn InstanceId\n" + "OpDecorate %vert_vertex_id BuiltIn VertexIndex\n" + "OpDecorate %vert_instance_id BuiltIn InstanceIndex\n" "; Geometry decorations\n" "OpName %geom_main \"main\"\n" @@ -4177,21 +4195,21 @@ void createMultipleEntries(vk::SourceCollections& dst, InstanceContext) "OpEntryPoint Vertex %main \"vert1\" %Position %vtxColor %color %vtxPosition %vertex_id %instance_id\n" "OpEntryPoint Vertex %main2 \"vert2\" %Position %vtxColor %color %vtxPosition %vertex_id %instance_id\n" - "OpName %main \"frag1\"\n" - "OpName %main2 \"frag2\"\n" + "OpName %main \"vert1\"\n" + "OpName %main2 \"vert2\"\n" "OpName %vtxPosition \"vtxPosition\"\n" "OpName %Position \"position\"\n" "OpName %vtxColor \"vtxColor\"\n" "OpName %color \"color\"\n" - "OpName %vertex_id \"gl_VertexID\"\n" - "OpName %instance_id \"gl_InstanceID\"\n" + "OpName %vertex_id \"gl_VertexIndex\"\n" + "OpName %instance_id \"gl_InstanceIndex\"\n" "OpDecorate %vtxPosition Location 2\n" "OpDecorate %Position Location 0\n" "OpDecorate %vtxColor Location 1\n" "OpDecorate %color Location 1\n" - "OpDecorate %vertex_id BuiltIn VertexId\n" - "OpDecorate %instance_id BuiltIn InstanceId\n" + "OpDecorate %vertex_id BuiltIn VertexIndex\n" + "OpDecorate %instance_id BuiltIn InstanceIndex\n" SPIRV_ASSEMBLY_TYPES SPIRV_ASSEMBLY_CONSTANTS SPIRV_ASSEMBLY_ARRAYS @@ -4580,7 +4598,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan const DeviceInterface& vk = context.getDeviceInterface(); const VkQueue queue = context.getUniversalQueue(); const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); - const tcu::IVec2 renderSize (256, 256); + const tcu::UVec2 renderSize (256, 256); vector modules; map moduleByStage; const int testSpecificSeed = 31354125; @@ -4590,8 +4608,8 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan bool hasTessellation = false; const VkPhysicalDeviceFeatures& features = context.getDeviceFeatures(); - supportsGeometry = features.geometryShader; - supportsTessellation = features.tessellationShader; + supportsGeometry = features.geometryShader == VK_TRUE; + supportsTessellation = features.tessellationShader == VK_TRUE; hasTessellation = (instance.requiredStages & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) || (instance.requiredStages & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT); @@ -4985,7 +5003,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan { VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, DE_NULL, - (VkPipelineTesselationStateCreateFlags)0, + (VkPipelineTessellationStateCreateFlags)0, 3u }; @@ -5055,12 +5073,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; (VkCommandBufferUsageFlags)0, - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL, // VkFramebuffer framebuffer; - VK_FALSE, // VkBool32 occlusionQueryEnable; - (VkQueryControlFlags)0, - (VkQueryPipelineStatisticFlags)0, + (const VkCommandBufferInheritanceInfo*)DE_NULL, }; // Record commands @@ -5093,8 +5106,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan 1u, // deUint32 arraySize; } // VkImageSubresourceRange subresourceRange; }; - const void* barriers[] = { &vertFlushBarrier, &colorAttBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, (VkDependencyFlags)0, 1, &vertFlushBarrier, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &colorAttBarrier); } { @@ -5140,8 +5152,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan 1u, // deUint32 arraySize; } // VkImageSubresourceRange subresourceRange; }; - const void* barriers[] = { &renderFinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &renderFinishBarrier); } { @@ -5175,8 +5186,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan 0u, // VkDeviceSize offset; imageSizeBytes // VkDeviceSize size; }; - const void* barriers[] = { ©FinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, ©FinishBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vk.endCommandBuffer(*cmdBuf)); @@ -5212,6 +5222,7 @@ TestStatus runAndVerifyDefaultPipeline (Context& context, InstanceContext instan DE_NULL, 0u, (const VkSemaphore*)DE_NULL, + (const VkPipelineStageFlags*)DE_NULL, 1u, &cmdBuf.get(), 0u, @@ -5658,9 +5669,9 @@ tcu::TestCaseGroup* createOpConstantCompositeTests(tcu::TestContext& testCtx) "%v = OpVariable %fp_stype Function %cval\n" "%vec_ptr = OpAccessChain %fp_v4f32 %v %c_u32_0\n" - "%f32_ptr = OpAccessChain %fp_v4f32 %v %c_u32_1\n" + "%f32_ptr = OpAccessChain %fp_f32 %v %c_u32_1\n" "%vec_val = OpLoad %v4f32 %vec_ptr\n" - "%f32_val = OpLoad %v4f32 %f32_ptr\n" + "%f32_val = OpLoad %f32 %f32_ptr\n" "%tmp1 = OpVectorTimesScalar %v4f32 %c_v4f32_1_1_1_1 %f32_val\n" // vec4(-1) "%tmp2 = OpFAdd %v4f32 %tmp1 %param1\n" // param1 + vec4(-1) "%transformed_param = OpFAdd %v4f32 %tmp2 %vec_val\n" // param1 + vec4(-1) + vec4(1.5, 1.5, 1.5, 1.0) @@ -6163,7 +6174,7 @@ tcu::TestCaseGroup* createSpecConstantTests (tcu::TestContext& testCtx) cases.push_back(SpecConstantTwoIntGraphicsCase("umod", " %i32 0", " %i32 0", "%i32", "UMod %sc_0 %sc_1", 1001, 500, addZeroToSc, outputColors2)); cases.push_back(SpecConstantTwoIntGraphicsCase("bitwiseand", " %i32 0", " %i32 0", "%i32", "BitwiseAnd %sc_0 %sc_1", 0x33, 0x0d, addZeroToSc, outputColors2)); cases.push_back(SpecConstantTwoIntGraphicsCase("bitwiseor", " %i32 0", " %i32 0", "%i32", "BitwiseOr %sc_0 %sc_1", 0, 1, addZeroToSc, outputColors2)); - cases.push_back(SpecConstantTwoIntGraphicsCase("bitwisexor", " %i32 0", " %i32 0", "%i32", "BitwiseAnd %sc_0 %sc_1", 0x2e, 0x2f, addZeroToSc, outputColors2)); + cases.push_back(SpecConstantTwoIntGraphicsCase("bitwisexor", " %i32 0", " %i32 0", "%i32", "BitwiseXor %sc_0 %sc_1", 0x2e, 0x2f, addZeroToSc, outputColors2)); cases.push_back(SpecConstantTwoIntGraphicsCase("shiftrightlogical", " %i32 0", " %i32 0", "%i32", "ShiftRightLogical %sc_0 %sc_1", 2, 1, addZeroToSc, outputColors2)); cases.push_back(SpecConstantTwoIntGraphicsCase("shiftrightarithmetic", " %i32 0", " %i32 0", "%i32", "ShiftRightArithmetic %sc_0 %sc_1", -4, 2, addZeroToSc, outputColors0)); cases.push_back(SpecConstantTwoIntGraphicsCase("shiftleftlogical", " %i32 0", " %i32 0", "%i32", "ShiftLeftLogical %sc_0 %sc_1", 1, 0, addZeroToSc, outputColors2)); @@ -6947,21 +6958,21 @@ void createOpQuantizeTwoPossibilityTests(tcu::TestCaseGroup* testCtx) { "negative_round_up_or_round_down", "-0x1.6008p-7", - -constructNormalizedFloat(8, 0x600800), + -constructNormalizedFloat(-7, 0x600800), "-0x1.6p-7", "-0x1.604p-7" }, { "carry_bit", "0x1.01ep2", - constructNormalizedFloat(8, 0x01e000), + constructNormalizedFloat(2, 0x01e000), "0x1.01cp2", "0x1.02p2" }, { "carry_to_exponent", - "0x1.feep1", - constructNormalizedFloat(8, 0xfee000), + "0x1.ffep1", + constructNormalizedFloat(1, 0xffe000), "0x1.ffcp1", "0x1.0p2" }, @@ -7318,7 +7329,6 @@ void addTessCtrlTest(tcu::TestCaseGroup* group, const char* name, const map createBuffer (Context& context, VkDeviceSize bufferSize, vk::VkBu return vk::createBuffer(vk, vkDevice, &bufferInfo); } -Move createImage2D (Context& context, int width, int height, vk::VkFormat format, vk::VkImageTiling tiling, vk::VkImageUsageFlags usageFlags) +Move createImage2D (Context& context, deUint32 width, deUint32 height, vk::VkFormat format, vk::VkImageTiling tiling, vk::VkImageUsageFlags usageFlags) { const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); const vk::VkImageCreateInfo params = @@ -1165,7 +1165,7 @@ Move createImage2D (Context& context, int width, int height, vk::Vk 0u, // VkImageCreateFlags flags vk::VK_IMAGE_TYPE_2D, // VkImageType imageType format, // VkFormat format - { width, height, 1 }, // VkExtent3D extent + { width, height, 1u }, // VkExtent3D extent 1u, // deUint32 mipLevels 1u, // deUint32 arrayLayers VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples @@ -1456,12 +1456,7 @@ tcu::TestStatus UniformBlockCaseInstance::iterate (void) vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; 0u, // VkCommandBufferUsageFlags flags; - (vk::VkRenderPass)0, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - (vk::VkFramebuffer)0, // VkFramebuffer framebuffer; - false, // VkBool32 occlusionQueryEnable; - 0u, // VkQueryControlFlags queryFlags; - 0u // VkQueryPipelineStatisticFlags pipelineStatistics; + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &beginInfo)); @@ -1510,9 +1505,11 @@ tcu::TestStatus UniformBlockCaseInstance::iterate (void) 1u, // deUint32 arraySize; } // VkImageSubresourceRange subresourceRange }; - const void* const barriers[] = { &renderFinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &renderFinishBarrier); } // Add Image->Buffer copy command @@ -1549,9 +1546,11 @@ tcu::TestStatus UniformBlockCaseInstance::iterate (void) 0u, // VkDeviceSize offset; (vk::VkDeviceSize)(RENDER_WIDTH * RENDER_HEIGHT * 4)// VkDeviceSize size; }; - const void* const barriers[] = { ©FinishBarrier }; - vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vk.cmdPipelineBarrier(*cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, ©FinishBarrier, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); @@ -1572,6 +1571,7 @@ tcu::TestStatus UniformBlockCaseInstance::iterate (void) DE_NULL, // const void* pNext; 0u, // deUint32 waitSemaphoreCount; DE_NULL, // const VkSemaphore* pWaitSemaphores; + (const VkPipelineStageFlags*)DE_NULL, 1u, // deUint32 commandBufferCount; &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; 0u, // deUint32 signalSemaphoreCount; diff --git a/external/vulkancts/modules/vulkan/vktRenderPassTests.cpp b/external/vulkancts/modules/vulkan/vktRenderPassTests.cpp index 213d89f..07a1aaa 100644 --- a/external/vulkancts/modules/vulkan/vktRenderPassTests.cpp +++ b/external/vulkancts/modules/vulkan/vktRenderPassTests.cpp @@ -283,24 +283,30 @@ Move allocateCommandBuffer (const DeviceInterface& vk, void beginCommandBuffer (const DeviceInterface& vk, VkCommandBuffer cmdBuffer, VkCommandBufferUsageFlags pBeginInfo_flags, - VkRenderPass pBeginInfo_renderPass, - deUint32 pBeginInfo_subpass, - VkFramebuffer pBeginInfo_framebuffer, - VkBool32 pBeginInfo_occlusionQueryEnable, - VkQueryControlFlags pBeginInfo_queryFlags, - VkQueryPipelineStatisticFlags pBeginInfo_pipelineStatistics) + VkRenderPass pInheritanceInfo_renderPass, + deUint32 pInheritanceInfo_subpass, + VkFramebuffer pInheritanceInfo_framebuffer, + VkBool32 pInheritanceInfo_occlusionQueryEnable, + VkQueryControlFlags pInheritanceInfo_queryFlags, + VkQueryPipelineStatisticFlags pInheritanceInfo_pipelineStatistics) { - const VkCommandBufferBeginInfo pBeginInfo = + const VkCommandBufferInheritanceInfo pInheritanceInfo = + { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + DE_NULL, + pInheritanceInfo_renderPass, + pInheritanceInfo_subpass, + pInheritanceInfo_framebuffer, + pInheritanceInfo_occlusionQueryEnable, + pInheritanceInfo_queryFlags, + pInheritanceInfo_pipelineStatistics, + }; + const VkCommandBufferBeginInfo pBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, DE_NULL, pBeginInfo_flags, - pBeginInfo_renderPass, - pBeginInfo_subpass, - pBeginInfo_framebuffer, - pBeginInfo_occlusionQueryEnable, - pBeginInfo_queryFlags, - pBeginInfo_pipelineStatistics, + &pInheritanceInfo, }; VK_CHECK(vk.beginCommandBuffer(cmdBuffer, &pBeginInfo)); } @@ -318,6 +324,7 @@ void queueSubmit (const DeviceInterface& vk, VkQueue queue, deUint32 cmdBufferCo DE_NULL, 0u, // waitSemaphoreCount (const VkSemaphore*)DE_NULL, // pWaitSemaphores + (const VkPipelineStageFlags*)DE_NULL, cmdBufferCount, // commandBufferCount pCmdBuffers, 0u, // signalSemaphoreCount @@ -958,13 +965,13 @@ VkAttachmentReference createAttachmentReference (const AttachmentReference& refe } VkSubpassDescription createSubpassDescription (const Subpass& subpass, - vector* attachmentReferenceLists) + vector* attachmentReferenceLists, + vector* preserveAttachmentReferences) { vector& inputAttachmentReferences = attachmentReferenceLists[0]; vector& colorAttachmentReferences = attachmentReferenceLists[1]; vector& resolveAttachmentReferences = attachmentReferenceLists[2]; vector& depthStencilAttachmentReferences = attachmentReferenceLists[3]; - vector& preserveAttachmentReferences = attachmentReferenceLists[4]; for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++) colorAttachmentReferences.push_back(createAttachmentReference(subpass.getColorAttachments()[attachmentNdx])); @@ -978,26 +985,26 @@ VkSubpassDescription createSubpassDescription (const Subpass& subpass, depthStencilAttachmentReferences.push_back(createAttachmentReference(subpass.getDepthStencilAttachment())); for (size_t attachmentNdx = 0; attachmentNdx < subpass.getPreserveAttachments().size(); attachmentNdx++) - preserveAttachmentReferences.push_back(createAttachmentReference(subpass.getPreserveAttachments()[attachmentNdx])); + preserveAttachmentReferences->push_back(subpass.getPreserveAttachments()[attachmentNdx].getAttachment()); DE_ASSERT(resolveAttachmentReferences.empty() || colorAttachmentReferences.size() == resolveAttachmentReferences.size()); { const VkSubpassDescription subpassDescription = { - subpass.getFlags(), // flags; - subpass.getPipelineBindPoint(), // pipelineBindPoint; + subpass.getFlags(), // flags; + subpass.getPipelineBindPoint(), // pipelineBindPoint; - (deUint32)inputAttachmentReferences.size(), // inputCount; - inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0], // inputAttachments; + (deUint32)inputAttachmentReferences.size(), // inputCount; + inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0], // inputAttachments; - (deUint32)colorAttachmentReferences.size(), // colorCount; - colorAttachmentReferences.empty() ? DE_NULL : &colorAttachmentReferences[0], // colorAttachments; - resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0], // resolveAttachments; + (deUint32)colorAttachmentReferences.size(), // colorCount; + colorAttachmentReferences.empty() ? DE_NULL : &colorAttachmentReferences[0], // colorAttachments; + resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0], // resolveAttachments; - &depthStencilAttachmentReferences[0], // pDepthStencilAttachment; - (deUint32)preserveAttachmentReferences.size(), // preserveCount; - preserveAttachmentReferences.empty() ? DE_NULL : &preserveAttachmentReferences[0] // preserveAttachments; + &depthStencilAttachmentReferences[0], // pDepthStencilAttachment; + (deUint32)preserveAttachmentReferences->size(), // preserveCount; + preserveAttachmentReferences->empty() ? DE_NULL : &(*preserveAttachmentReferences)[0] // preserveAttachments; }; return subpassDescription; @@ -1027,17 +1034,18 @@ Move createRenderPass (const DeviceInterface& vk, VkDevice device, const RenderPass& renderPassInfo) { - const size_t perSubpassAttachmentReferenceLists = 5; + const size_t perSubpassAttachmentReferenceLists = 4; vector attachments; vector subpasses; vector dependencies; vector > attachmentReferenceLists(renderPassInfo.getSubpasses().size() * perSubpassAttachmentReferenceLists); + vector > preserveAttachments(renderPassInfo.getSubpasses().size()); for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++) attachments.push_back(createAttachmentDescription(renderPassInfo.getAttachments()[attachmentNdx])); for (size_t subpassNdx = 0; subpassNdx < renderPassInfo.getSubpasses().size(); subpassNdx++) - subpasses.push_back(createSubpassDescription(renderPassInfo.getSubpasses()[subpassNdx], &(attachmentReferenceLists[subpassNdx * perSubpassAttachmentReferenceLists]))); + subpasses.push_back(createSubpassDescription(renderPassInfo.getSubpasses()[subpassNdx], &(attachmentReferenceLists[subpassNdx * perSubpassAttachmentReferenceLists]), &preserveAttachments[subpassNdx])); for (size_t depNdx = 0; depNdx < renderPassInfo.getDependencies().size(); depNdx++) dependencies.push_back(createSubpassDependency(renderPassInfo.getDependencies()[depNdx])); @@ -1078,7 +1086,7 @@ Move createAttachmentImage (const DeviceInterface& vk, VkImageUsageFlags usageFlags, VkImageLayout layout) { - const VkExtent3D size_ = { (deInt32)size.x(), (deInt32)size.y(), 1 }; + const VkExtent3D size_ = { size.x(), size.y(), 1u }; VkImageUsageFlags targetUsageFlags = 0; const tcu::TextureFormat textureFormat = mapVkFormat(format); @@ -1592,7 +1600,7 @@ Move createSubpassPipeline (const DeviceInterface& vk, const VkRect2D scissor = { { (deInt32)renderInfo.getViewportOffset().x(), (deInt32)renderInfo.getViewportOffset().y() }, - { (deInt32)renderInfo.getViewportSize().x(), (deInt32)renderInfo.getViewportSize().y() } + { renderInfo.getViewportSize().x(), renderInfo.getViewportSize().y() } }; const VkPipelineViewportStateCreateInfo viewportState = { @@ -1795,7 +1803,7 @@ public: { { { (deInt32)colorClear.getOffset().x(), (deInt32)colorClear.getOffset().y() }, - { (deInt32)colorClear.getSize().x(), (deInt32)colorClear.getSize().y() } + { colorClear.getSize().x(), colorClear.getSize().y() } }, // rect 0u, // baseArrayLayer 1u, // layerCount @@ -1821,7 +1829,7 @@ public: { { { (deInt32)depthStencilClear.getOffset().x(), (deInt32)depthStencilClear.getOffset().y() }, - { (deInt32)depthStencilClear.getSize().x(), (deInt32)depthStencilClear.getSize().y() } + { depthStencilClear.getSize().x(), depthStencilClear.getSize().y() } }, // rect 0u, // baseArrayLayer 1u, // layerCount @@ -1898,14 +1906,10 @@ void pushImageInitializationCommands (const DeviceInterface& vk, } if (!initializeLayouts.empty()) - { - vector initializeLayoutPtrs; - - for (size_t ndx = 0; ndx < initializeLayouts.size(); ndx++) - initializeLayoutPtrs.push_back(&initializeLayouts[ndx]); - - vk.cmdPipelineBarrier(commandBuffer, 0, 0, VK_FALSE, (deUint32)initializeLayouts.size(), (const void* const*)&initializeLayoutPtrs[0]); - } + vk.cmdPipelineBarrier(commandBuffer, (VkPipelineStageFlags)0, (VkPipelineStageFlags)0, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)initializeLayouts.size(), &initializeLayouts[0]); } for (size_t attachmentNdx = 0; attachmentNdx < attachmentInfo.size(); attachmentNdx++) @@ -1989,14 +1993,10 @@ void pushImageInitializationCommands (const DeviceInterface& vk, } if (!renderPassLayouts.empty()) - { - vector renderPassLayoutPtrs; - - for (size_t ndx = 0; ndx < renderPassLayouts.size(); ndx++) - renderPassLayoutPtrs.push_back(&renderPassLayouts[ndx]); - - vk.cmdPipelineBarrier(commandBuffer, 0, 0, VK_FALSE, (deUint32)renderPassLayouts.size(), (const void* const*)&renderPassLayoutPtrs[0]); - } + vk.cmdPipelineBarrier(commandBuffer, 0, 0, (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)renderPassLayouts.size(), &renderPassLayouts[0]); } } @@ -2024,8 +2024,8 @@ void pushRenderPassCommands (const DeviceInterface& vk, { const VkRect2D renderArea = { - { (deInt32)renderPos.x(), (deInt32)renderPos.y() }, - { (deInt32)renderSize.x(), (deInt32)renderSize.y() } + { (deInt32)renderPos.x(), (deInt32)renderPos.y() }, + { renderSize.x(), renderSize.y() } }; for (size_t subpassNdx = 0; subpassNdx < subpassRenderers.size(); subpassNdx++) @@ -2103,16 +2103,13 @@ void pushReadImagesToBuffers (const DeviceInterface& vk, } if (!imageBarriers.empty()) - { - vector clearLayoutPtrs; - - for (size_t ndx = 0; ndx < imageBarriers.size(); ndx++) - clearLayoutPtrs.push_back(&imageBarriers[ndx]); - - vk.cmdPipelineBarrier(commandBuffer, getAllPipelineStageFlags(), - getAllPipelineStageFlags(), - VK_FALSE, (deUint32)imageBarriers.size(), (const void* const*)&clearLayoutPtrs[0]); - } + vk.cmdPipelineBarrier(commandBuffer, + getAllPipelineStageFlags(), + getAllPipelineStageFlags(), + (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + (deUint32)imageBarriers.size(), &imageBarriers[0]); } for (size_t attachmentNdx = 0; attachmentNdx < attachmentInfo.size(); attachmentNdx++) @@ -2133,7 +2130,7 @@ void pushReadImagesToBuffers (const DeviceInterface& vk, 1 // arraySize }, { 0, 0, 0 }, // imageOffset - { (deInt32)targetSize.x(), (deInt32)targetSize.y(), 1 } // imageExtent + { targetSize.x(), targetSize.y(), 1u } // imageExtent }; vk.cmdCopyImageToBuffer(commandBuffer, attachmentResources[attachmentNdx]->getImage(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, attachmentResources[attachmentNdx]->getBuffer(), 1, &rect); @@ -2152,7 +2149,7 @@ void pushReadImagesToBuffers (const DeviceInterface& vk, 1 // arraySize }, { 0, 0, 0 }, // imageOffset - { (deInt32)targetSize.x(), (deInt32)targetSize.y(), 1 } // imageExtent + { targetSize.x(), targetSize.y(), 1u } // imageExtent }; vk.cmdCopyImageToBuffer(commandBuffer, attachmentResources[attachmentNdx]->getImage(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, attachmentResources[attachmentNdx]->getSecondaryBuffer(), 1, &stencilRect); @@ -2211,16 +2208,13 @@ void pushReadImagesToBuffers (const DeviceInterface& vk, } if (!bufferBarriers.empty()) - { - vector clearLayoutPtrs; - - for (size_t ndx = 0; ndx < bufferBarriers.size(); ndx++) - clearLayoutPtrs.push_back(&bufferBarriers[ndx]); - - vk.cmdPipelineBarrier(commandBuffer, getAllPipelineStageFlags(), - getAllPipelineStageFlags(), - VK_FALSE, (deUint32)bufferBarriers.size(), (const void* const*)&clearLayoutPtrs[0]); - } + vk.cmdPipelineBarrier(commandBuffer, + getAllPipelineStageFlags(), + getAllPipelineStageFlags(), + (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + (deUint32)bufferBarriers.size(), &bufferBarriers[0], + 0, (const VkImageMemoryBarrier*)DE_NULL); } } @@ -2811,6 +2805,7 @@ void checkColorRenderQuad (const ConstPixelBufferAccess& result, if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED) { + const Vec4 minDiff = Vec4(1.0f) / (IVec4(1) << tcu::getTextureFormatMantissaBitDepth(format)).cast(); const Vec4 minUvs = computeUvs(posA, posB, IVec2(x-1, y-1)); const Vec4 maxUvs = computeUvs(posA, posB, IVec2(x+1, y+1)); const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1 @@ -2818,10 +2813,22 @@ void checkColorRenderQuad (const ConstPixelBufferAccess& result, const Vec4 resColor (result.getPixel(x, y)); - const Vec4 minRefColor = srgb ? tcu::linearToSRGB(valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs)) - : valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs) - threshold; - const Vec4 maxRefColor = srgb ? tcu::linearToSRGB(valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs)) - : valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs) + threshold; + Vec4 minRefColor = srgb ? tcu::linearToSRGB(valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs)) + : valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs) - threshold; + Vec4 maxRefColor = srgb ? tcu::linearToSRGB(valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs)) + : valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs) + threshold; + + // Take into account rounding and quantization + if (channelClass == tcu::TEXTURECHANNELCLASS_FLOATING_POINT) + { + minRefColor = tcu::min(minRefColor * (Vec4(1.0f) - minDiff), minRefColor * (Vec4(1.0f) + minDiff)); + maxRefColor = tcu::max(maxRefColor * (Vec4(1.0f) - minDiff), maxRefColor * (Vec4(1.0f) + minDiff)); + } + else + { + minRefColor = minRefColor - minDiff; + maxRefColor = maxRefColor + minDiff; + } DE_ASSERT(minRefColor[0] <= maxRefColor[0]); DE_ASSERT(minRefColor[1] <= maxRefColor[1]); @@ -3709,6 +3716,18 @@ tcu::TestStatus renderPassTest (Context& context, TestConfig config) checkTextureFormatSupport(log, context.getInstanceInterface(), context.getPhysicalDevice(), config.renderPass.getAttachments()); { + const vk::VkPhysicalDeviceProperties properties = vk::getPhysicalDeviceProperties(context.getInstanceInterface(), context.getPhysicalDevice()); + + log << TestLog::Message << "Max color attachments: " << properties.limits.maxColorAttachments << TestLog::EndMessage; + + for (size_t subpassNdx = 0; subpassNdx < renderPassInfo.getSubpasses().size(); subpassNdx++) + { + if (renderPassInfo.getSubpasses()[subpassNdx].getColorAttachments().size() > (size_t)properties.limits.maxColorAttachments) + TCU_THROW(NotSupportedError, "Subpass uses more than maxColorAttachments."); + } + } + + { const VkDevice device = context.getDevice(); const DeviceInterface& vk = context.getDeviceInterface(); const VkQueue queue = context.getUniversalQueue(); @@ -3836,7 +3855,7 @@ static const VkFormat s_coreDepthStencilFormats[] = de::MovePtr createAttachmentTestCaseGroup (tcu::TestContext& testCtx) { - const deUint32 attachmentCounts[] = { 1, 3, 8 }; + const deUint32 attachmentCounts[] = { 1, 3, 4, 8 }; const VkAttachmentLoadOp loadOps[] = { VK_ATTACHMENT_LOAD_OP_LOAD, @@ -4011,12 +4030,10 @@ de::MovePtr createAttachmentAllocationTestGroup (tcu::TestCo VK_ATTACHMENT_STORE_OP_DONT_CARE }; - const VkImageLayout initialAndFinalLayouts[] = + const VkImageLayout initialAndFinalColorLayouts[] = { VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL @@ -4118,8 +4135,8 @@ de::MovePtr createAttachmentAllocationTestGroup (tcu::TestCo const VkAttachmentLoadOp loadOp = rng.choose(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps)); const VkAttachmentStoreOp storeOp = rng.choose(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps)); - const VkImageLayout initialLayout = rng.choose(DE_ARRAY_BEGIN(initialAndFinalLayouts), DE_ARRAY_END(initialAndFinalLayouts)); - const VkImageLayout finalizeLayout = rng.choose(DE_ARRAY_BEGIN(initialAndFinalLayouts), DE_ARRAY_END(initialAndFinalLayouts)); + const VkImageLayout initialLayout = rng.choose(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts)); + const VkImageLayout finalizeLayout = rng.choose(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts)); const VkAttachmentLoadOp stencilLoadOp = rng.choose(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps)); const VkAttachmentStoreOp stencilStoreOp = rng.choose(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps)); diff --git a/external/vulkancts/modules/vulkan/vktShaderLibrary.cpp b/external/vulkancts/modules/vulkan/vktShaderLibrary.cpp index 4faa29e..b828933 100644 --- a/external/vulkancts/modules/vulkan/vktShaderLibrary.cpp +++ b/external/vulkancts/modules/vulkan/vktShaderLibrary.cpp @@ -786,7 +786,7 @@ Move createBuffer (Context& context, vk::VkDeviceSize size, vk::Vk return vk::createBuffer(context.getDeviceInterface(), context.getDevice(), ¶ms); } -Move createImage2D (Context& context, int width, int height, vk::VkFormat format, vk::VkImageTiling tiling, vk::VkImageUsageFlags usageFlags) +Move createImage2D (Context& context, deUint32 width, deUint32 height, vk::VkFormat format, vk::VkImageTiling tiling, vk::VkImageUsageFlags usageFlags) { const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); const vk::VkImageCreateInfo params = @@ -796,7 +796,7 @@ Move createImage2D (Context& context, int width, int height, vk::Vk 0u, // flags vk::VK_IMAGE_TYPE_2D, // imageType format, // format - { width, height, 1 }, // extent + { width, height, 1u }, // extent 1u, // mipLevels 1u, // arraySize vk::VK_SAMPLE_COUNT_1_BIT, // samples @@ -996,7 +996,7 @@ Move createPipeline (Context& context, const PipelineProgram& program, vk::VkRenderPass renderPass, vk::VkPipelineLayout pipelineLayout, - tcu::IVec2 renderSize) + tcu::UVec2 renderSize) { const vector shaderStageParams (getPipelineShaderStageCreateInfo(program)); const vector vertexAttribParams (getVertexAttributeDescriptions(inputValues, inputLayout)); @@ -1365,7 +1365,7 @@ ShaderCaseInstance::ShaderCaseInstance (Context& context, const ShaderCaseSpecif , m_program (context, spec) , m_descriptorSetLayout (createDescriptorSetLayout(context, m_program.getStages())) , m_pipelineLayout (createPipelineLayout(context, *m_descriptorSetLayout)) - , m_pipeline (createPipeline(context, spec.values.inputs, m_inputLayout, m_program, *m_renderPass, *m_pipelineLayout, tcu::IVec2(RENDER_WIDTH, RENDER_HEIGHT))) + , m_pipeline (createPipeline(context, spec.values.inputs, m_inputLayout, m_program, *m_renderPass, *m_pipelineLayout, tcu::UVec2(RENDER_WIDTH, RENDER_HEIGHT))) , m_descriptorPool (createDescriptorPool(context)) , m_descriptorSet (allocateDescriptorSet(context, *m_descriptorPool, *m_descriptorSetLayout)) @@ -1439,12 +1439,7 @@ ShaderCaseInstance::ShaderCaseInstance (Context& context, const ShaderCaseSpecif vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType DE_NULL, // pNext 0u, // flags - (vk::VkRenderPass)0, // renderPass - 0u, // subpass - (vk::VkFramebuffer)0, // framebuffer - vk::VK_FALSE, // occlusionQueryEnable - (vk::VkQueryControlFlags)0, - (vk::VkQueryPipelineStatisticFlags)0 + (const vk::VkCommandBufferInheritanceInfo*)DE_NULL, }; VK_CHECK(vkd.beginCommandBuffer(*m_cmdBuffer, &beginInfo)); @@ -1477,10 +1472,11 @@ ShaderCaseInstance::ShaderCaseInstance (Context& context, const ShaderCaseSpecif 1u, // arraySize } // subresourceRange }; - const void* const barriers[] = { &vertFlushBarrier, &colorAttBarrier }; - vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, - DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_HOST_BIT, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, (vk::VkDependencyFlags)0, + 1, &vertFlushBarrier, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &colorAttBarrier); } { @@ -1533,10 +1529,11 @@ ShaderCaseInstance::ShaderCaseInstance (Context& context, const ShaderCaseSpecif 1u, // arraySize } // subresourceRange }; - const void* const barriers[] = { &renderFinishBarrier }; - vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, - DE_FALSE, DE_LENGTH_OF_ARRAY(barriers), barriers); + vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 0, (const vk::VkBufferMemoryBarrier*)DE_NULL, + 1, &renderFinishBarrier); } { @@ -1571,10 +1568,11 @@ ShaderCaseInstance::ShaderCaseInstance (Context& context, const ShaderCaseSpecif 0u, // offset (vk::VkDeviceSize)(RENDER_WIDTH*RENDER_HEIGHT*4) // size }; - const void* const barriers[] = { ©FinishBarrier }; - vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, - DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers); + vkd.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_HOST_BIT, (vk::VkDependencyFlags)0, + 0, (const vk::VkMemoryBarrier*)DE_NULL, + 1, ©FinishBarrier, + 0, (const vk::VkImageMemoryBarrier*)DE_NULL); } VK_CHECK(vkd.endCommandBuffer(*m_cmdBuffer)); @@ -1632,6 +1630,7 @@ TestStatus ShaderCaseInstance::iterate (void) DE_NULL, 0u, // waitSemaphoreCount (const vk::VkSemaphore*)0, // pWaitSemaphores + (const vk::VkPipelineStageFlags*)DE_NULL, 1u, &m_cmdBuffer.get(), 0u, // signalSemaphoreCount diff --git a/external/vulkancts/modules/vulkan/vktTestCase.cpp b/external/vulkancts/modules/vulkan/vktTestCase.cpp index 1e6a659..657d640 100644 --- a/external/vulkancts/modules/vulkan/vktTestCase.cpp +++ b/external/vulkancts/modules/vulkan/vktTestCase.cpp @@ -84,9 +84,9 @@ Move createDefaultDevice (const InstanceInterface& vki, VkPhysicalDevi deviceInfo.pNext = DE_NULL; deviceInfo.queueCreateInfoCount = 1u; deviceInfo.pQueueCreateInfos = &queueInfo; - deviceInfo.enabledExtensionNameCount = 0u; + deviceInfo.enabledExtensionCount = 0u; deviceInfo.ppEnabledExtensionNames = DE_NULL; - deviceInfo.enabledLayerNameCount = 0u; + deviceInfo.enabledLayerCount = 0u; deviceInfo.ppEnabledLayerNames = DE_NULL; deviceInfo.pEnabledFeatures = &enabledFeatures; @@ -96,33 +96,33 @@ Move createDefaultDevice (const InstanceInterface& vki, VkPhysicalDevi class DefaultDevice { public: - DefaultDevice (const PlatformInterface& vkPlatform, const tcu::CommandLine& cmdLine); - ~DefaultDevice (void); + DefaultDevice (const PlatformInterface& vkPlatform, const tcu::CommandLine& cmdLine); + ~DefaultDevice (void); - VkInstance getInstance (void) const { return *m_instance; } - const InstanceInterface& getInstanceInterface (void) const { return m_instanceInterface; } + VkInstance getInstance (void) const { return *m_instance; } + const InstanceInterface& getInstanceInterface (void) const { return m_instanceInterface; } - VkPhysicalDevice getPhysicalDevice (void) const { return m_physicalDevice; } - const VkPhysicalDeviceFeatures& getDeviceFeatures (void) const { return m_deviceFeatures; } - VkDevice getDevice (void) const { return *m_device; } - const DeviceInterface& getDeviceInterface (void) const { return m_deviceInterface; } - const VkPhysicalDeviceProperties& getDeviceProperties (void) const { return m_deviceProperties; } + VkPhysicalDevice getPhysicalDevice (void) const { return m_physicalDevice; } + const VkPhysicalDeviceFeatures& getDeviceFeatures (void) const { return m_deviceFeatures; } + VkDevice getDevice (void) const { return *m_device; } + const DeviceInterface& getDeviceInterface (void) const { return m_deviceInterface; } + const VkPhysicalDeviceProperties& getDeviceProperties (void) const { return m_deviceProperties; } - deUint32 getUniversalQueueFamilyIndex (void) const { return m_universalQueueFamilyIndex; } - VkQueue getUniversalQueue (void) const; + deUint32 getUniversalQueueFamilyIndex (void) const { return m_universalQueueFamilyIndex; } + VkQueue getUniversalQueue (void) const; private: - const Unique m_instance; - const InstanceDriver m_instanceInterface; + const Unique m_instance; + const InstanceDriver m_instanceInterface; - const VkPhysicalDevice m_physicalDevice; + const VkPhysicalDevice m_physicalDevice; - const deUint32 m_universalQueueFamilyIndex; - const VkPhysicalDeviceFeatures m_deviceFeatures; + const deUint32 m_universalQueueFamilyIndex; + const VkPhysicalDeviceFeatures m_deviceFeatures; const VkPhysicalDeviceProperties m_deviceProperties; - const Unique m_device; - const DeviceDriver m_deviceInterface; + const Unique m_device; + const DeviceDriver m_deviceInterface; }; DefaultDevice::DefaultDevice (const PlatformInterface& vkPlatform, const tcu::CommandLine& cmdLine) diff --git a/external/vulkancts/mustpass/1.0.0/.gitignore b/external/vulkancts/mustpass/1.0.0/.gitignore new file mode 100644 index 0000000..893edd4 --- /dev/null +++ b/external/vulkancts/mustpass/1.0.0/.gitignore @@ -0,0 +1,3 @@ +vk-default.txt +com.drawelements.deqp.vk.xml +mustpass.xml diff --git a/external/vulkancts/mustpass/1.0.0/src/excluded-tests.txt b/external/vulkancts/mustpass/1.0.0/src/excluded-tests.txt new file mode 100644 index 0000000..e69de29 diff --git a/external/vulkancts/mustpass/1.0.0/src/master.txt b/external/vulkancts/mustpass/1.0.0/src/master.txt new file mode 100644 index 0000000..6db63aa --- /dev/null +++ b/external/vulkancts/mustpass/1.0.0/src/master.txt @@ -0,0 +1 @@ +dEQP-VK.* diff --git a/external/vulkancts/mustpass/1.0.0/src/test-issues.txt b/external/vulkancts/mustpass/1.0.0/src/test-issues.txt new file mode 100644 index 0000000..e69de29 diff --git a/framework/platform/win32/tcuWin32Platform.cpp b/framework/platform/win32/tcuWin32Platform.cpp index 93e4541..d5a1625 100644 --- a/framework/platform/win32/tcuWin32Platform.cpp +++ b/framework/platform/win32/tcuWin32Platform.cpp @@ -37,7 +37,7 @@ class VulkanLibrary : public vk::Library { public: VulkanLibrary (void) - : m_library ("vulkan-0.dll") + : m_library ("vulkan-1.dll") , m_driver (m_library) { } diff --git a/modules/gles2/functional/es2fFboRenderTest.cpp b/modules/gles2/functional/es2fFboRenderTest.cpp index f573947..c517d68 100644 --- a/modules/gles2/functional/es2fFboRenderTest.cpp +++ b/modules/gles2/functional/es2fFboRenderTest.cpp @@ -625,7 +625,7 @@ TestCase::IterateResult FboRenderCase::iterate (void) } // Compare images - const float threshold = 0.02f; + const float threshold = 0.03f; bool imagesOk = tcu::fuzzyCompare(log, "ComparisonResult", "Image comparison result", refFrame, gles2Frame, threshold, tcu::COMPARE_LOG_RESULT); if (!imagesOk && !failReason) diff --git a/scripts/build_android_mustpass.py b/scripts/build_android_mustpass.py index 3c87553..69245eb 100644 --- a/scripts/build_android_mustpass.py +++ b/scripts/build_android_mustpass.py @@ -20,18 +20,12 @@ # #------------------------------------------------------------------------- -from build.common import * +from build.common import DEQP_DIR from build.config import ANY_GENERATOR -from build.build import build -from build_caselists import Module, getBuildConfig, genCaseList, getCaseListPath, DEFAULT_BUILD_DIR, DEFAULT_TARGET -from fnmatch import fnmatch -from copy import copy +from build_caselists import Module, getModuleByName, getBuildConfig, DEFAULT_BUILD_DIR, DEFAULT_TARGET +from mustpass import Project, Package, Mustpass, Configuration, include, exclude, genMustpassLists -import xml.etree.cElementTree as ElementTree -import xml.dom.minidom as minidom - -CTS_DATA_DIR = os.path.join(DEQP_DIR, "android", "cts") -APK_NAME = "com.drawelements.deqp.apk" +import os COPYRIGHT_DECLARATION = """ Copyright (C) 2015 The Android Open Source Project @@ -49,388 +43,15 @@ COPYRIGHT_DECLARATION = """ limitations under the License. """ -GENERATED_FILE_WARNING = """ - This file has been automatically generated. Edit with caution. - """ - -class Configuration: - def __init__ (self, name, glconfig, rotation, surfacetype, filters): - self.name = name - self.glconfig = glconfig - self.rotation = rotation - self.surfacetype = surfacetype - self.filters = filters - -class Package: - def __init__ (self, module, configurations): - self.module = module - self.configurations = configurations - -class Mustpass: - def __init__ (self, version, packages): - self.version = version - self.packages = packages - -class Filter: - TYPE_INCLUDE = 0 - TYPE_EXCLUDE = 1 - - def __init__ (self, type, filename): - self.type = type - self.filename = filename - -class TestRoot: - def __init__ (self): - self.children = [] - -class TestGroup: - def __init__ (self, name): - self.name = name - self.children = [] - -class TestCase: - def __init__ (self, name): - self.name = name - self.configurations = [] - -class GLESVersion: - def __init__(self, major, minor): - self.major = major - self.minor = minor - - def encode (self): - return (self.major << 16) | (self.minor) - -def getModuleGLESVersion (module): - versions = { - 'dEQP-EGL': GLESVersion(2,0), - 'dEQP-GLES2': GLESVersion(2,0), - 'dEQP-GLES3': GLESVersion(3,0), - 'dEQP-GLES31': GLESVersion(3,1) - } - return versions[module.name] - -def getSrcDir (mustpass): - return os.path.join(CTS_DATA_DIR, mustpass.version, "src") - -def getTmpDir (mustpass): - return os.path.join(CTS_DATA_DIR, mustpass.version, "tmp") - -def getModuleShorthand (module): - assert module.name[:5] == "dEQP-" - return module.name[5:].lower() - -def getCaseListFileName (package, configuration): - return "%s-%s.txt" % (getModuleShorthand(package.module), configuration.name) - -def getDstCaseListPath (mustpass, package, configuration): - return os.path.join(CTS_DATA_DIR, mustpass.version, getCaseListFileName(package, configuration)) - -def getCTSPackageName (package): - return "com.drawelements.deqp." + getModuleShorthand(package.module) - -def getCommandLine (config): - return "--deqp-gl-config-name=%s --deqp-screen-rotation=%s --deqp-surface-type=%s --deqp-watchdog=enable" % (config.glconfig, config.rotation, config.surfacetype) - -def readCaseList (filename): - cases = [] - with open(filename, 'rb') as f: - for line in f: - if line[:6] == "TEST: ": - cases.append(line[6:].strip()) - return cases - -def getCaseList (buildCfg, generator, module): - build(buildCfg, generator, [module.binName]) - genCaseList(buildCfg, generator, module, "txt") - return readCaseList(getCaseListPath(buildCfg, module, "txt")) - -def readPatternList (filename): - ptrns = [] - with open(filename, 'rb') as f: - for line in f: - line = line.strip() - if len(line) > 0 and line[0] != '#': - ptrns.append(line) - return ptrns - -def applyPatterns (caseList, patterns, filename, op): - matched = set() - errors = [] - curList = copy(caseList) - trivialPtrns = [p for p in patterns if p.find('*') < 0] - regularPtrns = [p for p in patterns if p.find('*') >= 0] - - # Apply trivial (just case paths) - allCasesSet = set(caseList) - for path in trivialPtrns: - if path in allCasesSet: - if path in matched: - errors.append((path, "Same case specified more than once")) - matched.add(path) - else: - errors.append((path, "Test case not found")) - - curList = [c for c in curList if c not in matched] - - for pattern in regularPtrns: - matchedThisPtrn = set() - - for case in curList: - if fnmatch(case, pattern): - matchedThisPtrn.add(case) - - if len(matchedThisPtrn) == 0: - errors.append((pattern, "Pattern didn't match any cases")) - - matched = matched | matchedThisPtrn - curList = [c for c in curList if c not in matched] - - for pattern, reason in errors: - print "ERROR: %s: %s" % (reason, pattern) - - if len(errors) > 0: - die("Found %s invalid patterns while processing file %s" % (len(errors), filename)) - - return [c for c in caseList if op(c in matched)] - -def applyInclude (caseList, patterns, filename): - return applyPatterns(caseList, patterns, filename, lambda b: b) - -def applyExclude (caseList, patterns, filename): - return applyPatterns(caseList, patterns, filename, lambda b: not b) - -def readPatternLists (mustpass): - lists = {} - for package in mustpass.packages: - for cfg in package.configurations: - for filter in cfg.filters: - if not filter.filename in lists: - lists[filter.filename] = readPatternList(os.path.join(getSrcDir(mustpass), filter.filename)) - return lists - -def applyFilters (caseList, patternLists, filters): - res = copy(caseList) - for filter in filters: - ptrnList = patternLists[filter.filename] - if filter.type == Filter.TYPE_INCLUDE: - res = applyInclude(res, ptrnList, filter.filename) - else: - assert filter.type == Filter.TYPE_EXCLUDE - res = applyExclude(res, ptrnList, filter.filename) - return res - -def appendToHierarchy (root, casePath): - def findChild (node, name): - for child in node.children: - if child.name == name: - return child - return None - - curNode = root - components = casePath.split('.') - - for component in components[:-1]: - nextNode = findChild(curNode, component) - if not nextNode: - nextNode = TestGroup(component) - curNode.children.append(nextNode) - curNode = nextNode - - if not findChild(curNode, components[-1]): - curNode.children.append(TestCase(components[-1])) - -def buildTestHierachy (caseList): - root = TestRoot() - for case in caseList: - appendToHierarchy(root, case) - return root - -def buildTestCaseMap (root): - caseMap = {} - - def recursiveBuild (curNode, prefix): - curPath = prefix + curNode.name - if isinstance(curNode, TestCase): - caseMap[curPath] = curNode - else: - for child in curNode.children: - recursiveBuild(child, curPath + '.') - - for child in root.children: - recursiveBuild(child, '') - - return caseMap - -def include (filename): - return Filter(Filter.TYPE_INCLUDE, filename) - -def exclude (filename): - return Filter(Filter.TYPE_EXCLUDE, filename) - -def prettifyXML (doc): - doc.insert(0, ElementTree.Comment(COPYRIGHT_DECLARATION)) - doc.insert(1, ElementTree.Comment(GENERATED_FILE_WARNING)) - uglyString = ElementTree.tostring(doc, 'utf-8') - reparsed = minidom.parseString(uglyString) - return reparsed.toprettyxml(indent='\t', encoding='utf-8') - -def genCTSPackageXML (package, root): - def isLeafGroup (testGroup): - numGroups = 0 - numTests = 0 - - for child in testGroup.children: - if isinstance(child, TestCase): - numTests += 1 - else: - numGroups += 1 - - assert numGroups + numTests > 0 - - if numGroups > 0 and numTests > 0: - die("Mixed groups and cases in %s" % testGroup.name) - - return numGroups == 0 - - def makeConfiguration (parentElem, configuration): - return ElementTree.SubElement(parentElem, "TestInstance", glconfig=configuration.glconfig, rotation=configuration.rotation, surfacetype=configuration.surfacetype) - - def makeTestCase (parentElem, testCase): - caseElem = ElementTree.SubElement(parentElem, "Test", name=testCase.name) - for config in testCase.configurations: - makeConfiguration(caseElem, config) - return caseElem - - def makeTestGroup (parentElem, testGroup): - groupElem = ElementTree.SubElement(parentElem, "TestCase" if isLeafGroup(testGroup) else "TestSuite", name=testGroup.name) - for child in testGroup.children: - if isinstance(child, TestCase): - makeTestCase(groupElem, child) - else: - makeTestGroup(groupElem, child) - return groupElem - - pkgElem = ElementTree.Element("TestPackage", - name = package.module.name, - appPackageName = getCTSPackageName(package), - testType = "deqpTest") - - pkgElem.set("xmlns:deqp", "http://drawelements.com/deqp") - pkgElem.set("deqp:glesVersion", str(getModuleGLESVersion(package.module).encode())) - - for child in root.children: - makeTestGroup(pkgElem, child) - - return pkgElem - -def genSpecXML (mustpass): - mustpassElem = ElementTree.Element("Mustpass", version = mustpass.version) - - for package in mustpass.packages: - packageElem = ElementTree.SubElement(mustpassElem, "TestPackage", name = package.module.name) - - for config in package.configurations: - configElem = ElementTree.SubElement(packageElem, "Configuration", - name = config.name, - caseListFile = getCaseListFileName(package, config), - commandLine = getCommandLine(config)) - - return mustpassElem - -def addOptionElement (parent, optionName, optionValue): - ElementTree.SubElement(parent, "option", name=optionName, value=optionValue) - -def genAndroidTestXml (mustpass): - INSTALLER_CLASS = "com.android.compatibility.common.tradefed.targetprep.ApkInstaller" - RUNNER_CLASS = "com.drawelements.deqp.runner.DeqpTestRunner" - configElement = ElementTree.Element("configuration") - preparerElement = ElementTree.SubElement(configElement, "target_preparer") - preparerElement.set("class", INSTALLER_CLASS) - addOptionElement(preparerElement, "cleanup-apks", "true") - addOptionElement(preparerElement, "test-file-name", APK_NAME) - - for package in mustpass.packages: - for config in package.configurations: - testElement = ElementTree.SubElement(configElement, "test") - testElement.set("class", RUNNER_CLASS) - addOptionElement(testElement, "deqp-package", package.module.name) - addOptionElement(testElement, "deqp-caselist-file", getCaseListFileName(package,config)) - # \todo [2015-10-16 kalle]: Replace with just command line? - requires simplifications in the runner/tests as well. - addOptionElement(testElement, "deqp-gl-config-name", config.glconfig) - addOptionElement(testElement, "deqp-surface-type", config.surfacetype) - addOptionElement(testElement, "deqp-screen-rotation", config.rotation) - - return configElement - - -def genMustpass (mustpass, moduleCaseLists): - print "Generating mustpass '%s'" % mustpass.version - - patternLists = readPatternLists(mustpass) - - for package in mustpass.packages: - allCasesInPkg = moduleCaseLists[package.module] - matchingByConfig = {} - allMatchingSet = set() +CTS_DATA_DIR = os.path.join(DEQP_DIR, "android", "cts") - for config in package.configurations: - filtered = applyFilters(allCasesInPkg, patternLists, config.filters) - dstFile = getDstCaseListPath(mustpass, package, config) +CTS_PROJECT = Project(path = CTS_DATA_DIR, copyright = COPYRIGHT_DECLARATION) - print " Writing deqp caselist: " + dstFile - writeFile(dstFile, "\n".join(filtered) + "\n") - - matchingByConfig[config] = filtered - allMatchingSet = allMatchingSet | set(filtered) - - allMatchingCases = [c for c in allCasesInPkg if c in allMatchingSet] # To preserve ordering - root = buildTestHierachy(allMatchingCases) - testCaseMap = buildTestCaseMap(root) - - for config in package.configurations: - for case in matchingByConfig[config]: - testCaseMap[case].configurations.append(config) - - # NOTE: CTS v2 does not need package XML files. Remove when transition is complete. - packageXml = genCTSPackageXML(package, root) - xmlFilename = os.path.join(CTS_DATA_DIR, mustpass.version, getCTSPackageName(package) + ".xml") - - print " Writing CTS caselist: " + xmlFilename - writeFile(xmlFilename, prettifyXML(packageXml)) - - specXML = genSpecXML(mustpass) - specFilename = os.path.join(CTS_DATA_DIR, mustpass.version, "mustpass.xml") - - print " Writing spec: " + specFilename - writeFile(specFilename, prettifyXML(specXML)) - - # TODO: Which is the best selector mechanism? - if (mustpass.version == "mnc"): - androidTestXML = genAndroidTestXml(mustpass) - androidTestFilename = os.path.join(CTS_DATA_DIR, "AndroidTest.xml") - - print " Writing AndroidTest.xml: " + androidTestFilename - writeFile(androidTestFilename, prettifyXML(androidTestXML)) - - print "Done!" - -def genMustpassLists (mustpassLists, generator, buildCfg): - moduleCaseLists = {} - - # Getting case lists involves invoking build, so we want to cache the results - for mustpass in mustpassLists: - for package in mustpass.packages: - if not package.module in moduleCaseLists: - moduleCaseLists[package.module] = getCaseList(buildCfg, generator, package.module) - - for mustpass in mustpassLists: - genMustpass(mustpass, moduleCaseLists) - -EGL_MODULE = Module(name = "dEQP-EGL", dirName = "egl", binName = "deqp-egl") -GLES2_MODULE = Module(name = "dEQP-GLES2", dirName = "gles2", binName = "deqp-gles2") -GLES3_MODULE = Module(name = "dEQP-GLES3", dirName = "gles3", binName = "deqp-gles3") -GLES31_MODULE = Module(name = "dEQP-GLES31", dirName = "gles31", binName = "deqp-gles31") +EGL_MODULE = getModuleByName("dEQP-EGL") +GLES2_MODULE = getModuleByName("dEQP-GLES2") +GLES3_MODULE = getModuleByName("dEQP-GLES3") +GLES31_MODULE = getModuleByName("dEQP-GLES31") +VULKAN_MODULE = getModuleByName("dEQP-VK") # Lollipop @@ -708,11 +329,13 @@ MASTER_GLES31_PKG = Package(module = GLES31_MODULE, configurations = [ ]) MUSTPASS_LISTS = [ - Mustpass(version = "lmp", packages = [LMP_GLES3_PKG, LMP_GLES31_PKG]), - Mustpass(version = "lmp-mr1", packages = [LMP_MR1_GLES3_PKG, LMP_MR1_GLES31_PKG]), - Mustpass(version = "mnc", packages = [MNC_EGL_PKG, MNC_GLES2_PKG, MNC_GLES3_PKG, MNC_GLES31_PKG]), - Mustpass(version = "master", packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG]) + Mustpass(project = CTS_PROJECT, version = "lmp", packages = [LMP_GLES3_PKG, LMP_GLES31_PKG]), + Mustpass(project = CTS_PROJECT, version = "lmp-mr1", packages = [LMP_MR1_GLES3_PKG, LMP_MR1_GLES31_PKG]), + Mustpass(project = CTS_PROJECT, version = "mnc", packages = [MNC_EGL_PKG, MNC_GLES2_PKG, MNC_GLES3_PKG, MNC_GLES31_PKG]), + Mustpass(project = CTS_PROJECT, version = "master", packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG]) ] +BUILD_CONFIG = getBuildConfig(DEFAULT_BUILD_DIR, DEFAULT_TARGET, "Debug") + if __name__ == "__main__": - genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, getBuildConfig(DEFAULT_BUILD_DIR, DEFAULT_TARGET, "Debug")) + genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, BUILD_CONFIG) diff --git a/scripts/mustpass.py b/scripts/mustpass.py new file mode 100644 index 0000000..328e663 --- /dev/null +++ b/scripts/mustpass.py @@ -0,0 +1,456 @@ +# -*- coding: utf-8 -*- + +#------------------------------------------------------------------------- +# drawElements Quality Program utilities +# -------------------------------------- +# +# Copyright 2016 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +#------------------------------------------------------------------------- + +from build.common import * +from build.config import ANY_GENERATOR +from build.build import build +from build_caselists import Module, getModuleByName, getBuildConfig, genCaseList, getCaseListPath, DEFAULT_BUILD_DIR, DEFAULT_TARGET +from fnmatch import fnmatch +from copy import copy + +import xml.etree.cElementTree as ElementTree +import xml.dom.minidom as minidom + +APK_NAME = "com.drawelements.deqp.apk" + +GENERATED_FILE_WARNING = """ + This file has been automatically generated. Edit with caution. + """ + +class Project: + def __init__ (self, path, copyright = None): + self.path = path + self.copyright = copyright + +class Configuration: + def __init__ (self, name, filters, glconfig = None, rotation = None, surfacetype = None): + self.name = name + self.glconfig = glconfig + self.rotation = rotation + self.surfacetype = surfacetype + self.filters = filters + +class Package: + def __init__ (self, module, configurations): + self.module = module + self.configurations = configurations + +class Mustpass: + def __init__ (self, project, version, packages): + self.project = project + self.version = version + self.packages = packages + +class Filter: + TYPE_INCLUDE = 0 + TYPE_EXCLUDE = 1 + + def __init__ (self, type, filename): + self.type = type + self.filename = filename + +class TestRoot: + def __init__ (self): + self.children = [] + +class TestGroup: + def __init__ (self, name): + self.name = name + self.children = [] + +class TestCase: + def __init__ (self, name): + self.name = name + self.configurations = [] + +class GLESVersion: + def __init__(self, major, minor): + self.major = major + self.minor = minor + + def encode (self): + return (self.major << 16) | (self.minor) + +def getModuleGLESVersion (module): + versions = { + 'dEQP-EGL': GLESVersion(2,0), + 'dEQP-GLES2': GLESVersion(2,0), + 'dEQP-GLES3': GLESVersion(3,0), + 'dEQP-GLES31': GLESVersion(3,1) + } + return versions[module.name] if module.name in versions else None + +def getSrcDir (mustpass): + return os.path.join(mustpass.project.path, mustpass.version, "src") + +def getTmpDir (mustpass): + return os.path.join(mustpass.project.path, mustpass.version, "tmp") + +def getModuleShorthand (module): + assert module.name[:5] == "dEQP-" + return module.name[5:].lower() + +def getCaseListFileName (package, configuration): + return "%s-%s.txt" % (getModuleShorthand(package.module), configuration.name) + +def getDstCaseListPath (mustpass, package, configuration): + return os.path.join(mustpass.project.path, mustpass.version, getCaseListFileName(package, configuration)) + +def getCTSPackageName (package): + return "com.drawelements.deqp." + getModuleShorthand(package.module) + +def getCommandLine (config): + cmdLine = "" + + if config.glconfig != None: + cmdLine += "--deqp-gl-config-name=%s " % config.glconfig + + if config.rotation != None: + cmdLine += "--deqp-screen-rotation=%s " % config.rotation + + if config.surfacetype != None: + cmdLine += "--deqp-surface-type=%s " % config.surfacetype + + cmdLine += "--deqp-watchdog=enable" + + return cmdLine + +def readCaseList (filename): + cases = [] + with open(filename, 'rb') as f: + for line in f: + if line[:6] == "TEST: ": + cases.append(line[6:].strip()) + return cases + +def getCaseList (buildCfg, generator, module): + build(buildCfg, generator, [module.binName]) + genCaseList(buildCfg, generator, module, "txt") + return readCaseList(getCaseListPath(buildCfg, module, "txt")) + +def readPatternList (filename): + ptrns = [] + with open(filename, 'rb') as f: + for line in f: + line = line.strip() + if len(line) > 0 and line[0] != '#': + ptrns.append(line) + return ptrns + +def applyPatterns (caseList, patterns, filename, op): + matched = set() + errors = [] + curList = copy(caseList) + trivialPtrns = [p for p in patterns if p.find('*') < 0] + regularPtrns = [p for p in patterns if p.find('*') >= 0] + + # Apply trivial (just case paths) + allCasesSet = set(caseList) + for path in trivialPtrns: + if path in allCasesSet: + if path in matched: + errors.append((path, "Same case specified more than once")) + matched.add(path) + else: + errors.append((path, "Test case not found")) + + curList = [c for c in curList if c not in matched] + + for pattern in regularPtrns: + matchedThisPtrn = set() + + for case in curList: + if fnmatch(case, pattern): + matchedThisPtrn.add(case) + + if len(matchedThisPtrn) == 0: + errors.append((pattern, "Pattern didn't match any cases")) + + matched = matched | matchedThisPtrn + curList = [c for c in curList if c not in matched] + + for pattern, reason in errors: + print "ERROR: %s: %s" % (reason, pattern) + + if len(errors) > 0: + die("Found %s invalid patterns while processing file %s" % (len(errors), filename)) + + return [c for c in caseList if op(c in matched)] + +def applyInclude (caseList, patterns, filename): + return applyPatterns(caseList, patterns, filename, lambda b: b) + +def applyExclude (caseList, patterns, filename): + return applyPatterns(caseList, patterns, filename, lambda b: not b) + +def readPatternLists (mustpass): + lists = {} + for package in mustpass.packages: + for cfg in package.configurations: + for filter in cfg.filters: + if not filter.filename in lists: + lists[filter.filename] = readPatternList(os.path.join(getSrcDir(mustpass), filter.filename)) + return lists + +def applyFilters (caseList, patternLists, filters): + res = copy(caseList) + for filter in filters: + ptrnList = patternLists[filter.filename] + if filter.type == Filter.TYPE_INCLUDE: + res = applyInclude(res, ptrnList, filter.filename) + else: + assert filter.type == Filter.TYPE_EXCLUDE + res = applyExclude(res, ptrnList, filter.filename) + return res + +def appendToHierarchy (root, casePath): + def findChild (node, name): + for child in node.children: + if child.name == name: + return child + return None + + curNode = root + components = casePath.split('.') + + for component in components[:-1]: + nextNode = findChild(curNode, component) + if not nextNode: + nextNode = TestGroup(component) + curNode.children.append(nextNode) + curNode = nextNode + + if not findChild(curNode, components[-1]): + curNode.children.append(TestCase(components[-1])) + +def buildTestHierachy (caseList): + root = TestRoot() + for case in caseList: + appendToHierarchy(root, case) + return root + +def buildTestCaseMap (root): + caseMap = {} + + def recursiveBuild (curNode, prefix): + curPath = prefix + curNode.name + if isinstance(curNode, TestCase): + caseMap[curPath] = curNode + else: + for child in curNode.children: + recursiveBuild(child, curPath + '.') + + for child in root.children: + recursiveBuild(child, '') + + return caseMap + +def include (filename): + return Filter(Filter.TYPE_INCLUDE, filename) + +def exclude (filename): + return Filter(Filter.TYPE_EXCLUDE, filename) + +def insertXMLHeaders (mustpass, doc): + if mustpass.project.copyright != None: + doc.insert(0, ElementTree.Comment(mustpass.project.copyright)) + doc.insert(1, ElementTree.Comment(GENERATED_FILE_WARNING)) + +def prettifyXML (doc): + uglyString = ElementTree.tostring(doc, 'utf-8') + reparsed = minidom.parseString(uglyString) + return reparsed.toprettyxml(indent='\t', encoding='utf-8') + +def genCTSPackageXML (mustpass, package, root): + def isLeafGroup (testGroup): + numGroups = 0 + numTests = 0 + + for child in testGroup.children: + if isinstance(child, TestCase): + numTests += 1 + else: + numGroups += 1 + + assert numGroups + numTests > 0 + + if numGroups > 0 and numTests > 0: + die("Mixed groups and cases in %s" % testGroup.name) + + return numGroups == 0 + + def makeConfiguration (parentElem, config): + attributes = {} + + if config.glconfig != None: + attributes['glconfig'] = config.glconfig + + if config.rotation != None: + attributes['rotation'] = config.rotation + + if config.surfacetype != None: + attributes['surfacetype'] = config.surfacetype + + return ElementTree.SubElement(parentElem, "TestInstance", attributes) + + def makeTestCase (parentElem, testCase): + caseElem = ElementTree.SubElement(parentElem, "Test", name=testCase.name) + for config in testCase.configurations: + makeConfiguration(caseElem, config) + return caseElem + + def makeTestGroup (parentElem, testGroup): + groupElem = ElementTree.SubElement(parentElem, "TestCase" if isLeafGroup(testGroup) else "TestSuite", name=testGroup.name) + for child in testGroup.children: + if isinstance(child, TestCase): + makeTestCase(groupElem, child) + else: + makeTestGroup(groupElem, child) + return groupElem + + pkgElem = ElementTree.Element("TestPackage", + name = package.module.name, + appPackageName = getCTSPackageName(package), + testType = "deqpTest") + + pkgElem.set("xmlns:deqp", "http://drawelements.com/deqp") + insertXMLHeaders(mustpass, pkgElem) + + glesVersion = getModuleGLESVersion(package.module) + + if glesVersion != None: + pkgElem.set("deqp:glesVersion", str(glesVersion.encode())) + + for child in root.children: + makeTestGroup(pkgElem, child) + + return pkgElem + +def genSpecXML (mustpass): + mustpassElem = ElementTree.Element("Mustpass", version = mustpass.version) + insertXMLHeaders(mustpass, mustpassElem) + + for package in mustpass.packages: + packageElem = ElementTree.SubElement(mustpassElem, "TestPackage", name = package.module.name) + + for config in package.configurations: + configElem = ElementTree.SubElement(packageElem, "Configuration", + name = config.name, + caseListFile = getCaseListFileName(package, config), + commandLine = getCommandLine(config)) + + return mustpassElem + +def addOptionElement (parent, optionName, optionValue): + ElementTree.SubElement(parent, "option", name=optionName, value=optionValue) + +def genAndroidTestXml (mustpass): + INSTALLER_CLASS = "com.android.compatibility.common.tradefed.targetprep.ApkInstaller" + RUNNER_CLASS = "com.drawelements.deqp.runner.DeqpTestRunner" + configElement = ElementTree.Element("configuration") + preparerElement = ElementTree.SubElement(configElement, "target_preparer") + preparerElement.set("class", INSTALLER_CLASS) + addOptionElement(preparerElement, "cleanup-apks", "true") + addOptionElement(preparerElement, "test-file-name", APK_NAME) + + for package in mustpass.packages: + for config in package.configurations: + testElement = ElementTree.SubElement(configElement, "test") + testElement.set("class", RUNNER_CLASS) + addOptionElement(testElement, "deqp-package", package.module.name) + addOptionElement(testElement, "deqp-caselist-file", getCaseListFileName(package,config)) + # \todo [2015-10-16 kalle]: Replace with just command line? - requires simplifications in the runner/tests as well. + if config.glconfig != None: + addOptionElement(testElement, "deqp-gl-config-name", config.glconfig) + + if config.surfacetype != None: + addOptionElement(testElement, "deqp-surface-type", config.surfacetype) + + if config.rotation != None: + addOptionElement(testElement, "deqp-screen-rotation", config.rotation) + + insertXMLHeaders(mustpass, configElement) + + return configElement + +def genMustpass (mustpass, moduleCaseLists): + print "Generating mustpass '%s'" % mustpass.version + + patternLists = readPatternLists(mustpass) + + for package in mustpass.packages: + allCasesInPkg = moduleCaseLists[package.module] + matchingByConfig = {} + allMatchingSet = set() + + for config in package.configurations: + filtered = applyFilters(allCasesInPkg, patternLists, config.filters) + dstFile = getDstCaseListPath(mustpass, package, config) + + print " Writing deqp caselist: " + dstFile + writeFile(dstFile, "\n".join(filtered) + "\n") + + matchingByConfig[config] = filtered + allMatchingSet = allMatchingSet | set(filtered) + + allMatchingCases = [c for c in allCasesInPkg if c in allMatchingSet] # To preserve ordering + root = buildTestHierachy(allMatchingCases) + testCaseMap = buildTestCaseMap(root) + + for config in package.configurations: + for case in matchingByConfig[config]: + testCaseMap[case].configurations.append(config) + + # NOTE: CTS v2 does not need package XML files. Remove when transition is complete. + packageXml = genCTSPackageXML(mustpass, package, root) + xmlFilename = os.path.join(mustpass.project.path, mustpass.version, getCTSPackageName(package) + ".xml") + + print " Writing CTS caselist: " + xmlFilename + writeFile(xmlFilename, prettifyXML(packageXml)) + + specXML = genSpecXML(mustpass) + specFilename = os.path.join(mustpass.project.path, mustpass.version, "mustpass.xml") + + print " Writing spec: " + specFilename + writeFile(specFilename, prettifyXML(specXML)) + + # TODO: Which is the best selector mechanism? + if (mustpass.version == "mnc"): + androidTestXML = genAndroidTestXml(mustpass) + androidTestFilename = os.path.join(mustpass.project.path, "AndroidTest.xml") + + print " Writing AndroidTest.xml: " + androidTestFilename + writeFile(androidTestFilename, prettifyXML(androidTestXML)) + + print "Done!" + +def genMustpassLists (mustpassLists, generator, buildCfg): + moduleCaseLists = {} + + # Getting case lists involves invoking build, so we want to cache the results + for mustpass in mustpassLists: + for package in mustpass.packages: + if not package.module in moduleCaseLists: + moduleCaseLists[package.module] = getCaseList(buildCfg, generator, package.module) + + for mustpass in mustpassLists: + genMustpass(mustpass, moduleCaseLists)