Jump to content
  • Advertisement

Search the Community

Showing results for tags 'Vulkan'.

The search index is currently processing. Current results may not be complete.


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Dev Loadout
  • Game Dev Unchained

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Art Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum
  • Unreal Engine Users's Unreal Engine Group Forum
  • Unity Developers's Forum
  • Unity Developers's Asset Share

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 188 results

  1. So I've spent my spare time the last couple of months finalising small3d framework's migration to Vulkan and also making sure the framework runs on iOS and Android. I got my "Avoid the Bug" game running on my mobile phone and my iPad (in addition to the desktop OSes where it has already been working for a long time). I thought that I wouldn't have any time left for the fall 2019 challenge. Nonetheless, I managed to put a little something together. The game is called Gloom. It must be the ugliest game I have ever made, but hey, it runs on Vulkan and it has taken my little small3d framework to where it has never been before. I have a player moving through a map (which is read from a text file) while eliminating enemies. All of this runs on the standard small3d version 1.8 with no modification of the framework itself whatsoever. So anyway, I am not saying I hope you like the game (you probably won't) but I do hope it is good enough to fulfill the challenge requirements :)
  2. The latest release of Diligent Engine combines a number of recent updates (Vulkan on iOS, GLTF2.0 support, shadows), significantly improves performance of OpenGL backend, updates API, adds integration with Dear Imgui and implements new samples and tutorials. Some of the new features in this release: GLTF2.0 support (loader, PBR renderer and sample viewer) Shadowing Component and Shadows Sample Integration with Dear Imgui library and Dear Imgui demo Tutorial13 - Shadow Map Tutorial14 - Compute Shader Tutorial15 - Multiple Windows Check it out on GitHub.
  3. hello I try to use uint as vertex attribute. like layout(location = 0) in vec3 a_Vertex; layout(location = 1) in uint a_Color; layout(location = 0) out vec4 color; void main() { vec4 col = unpackUnorm4x8(a_Color); color = col; //cb.color; *** sending on draw for line just 2 vertex with struct { vec3 position; uint32 color }; Drawing just line. The strange situation is next. color is always red or gradation of red. looks like extracts only red color. I thought it may related to data align, but my data is too small.vertex is 16 byte, 32byte is line data. does anyone have/had similar problem? or any suggestion? GPU is GTX 750ti. OS win 8.1, Ubuntu 18.04 lts. thanks.
  4. Hi, I am writing my own engine on C# using .Net core 3 and I wrapped macOS window to output my triangle demo there and it actually render, BUT.... I receive only ~140 FPS. I investigate a little and found out that calls to vkCmdEndRenderPass(), vkEndCommandBuffer() and vkQueueSubmit() takes toooo long and I have no idea why, but this is not the end. Most interesting thing start when I swipe to another virtual screen on my mac and right after that FPS becomes ~5000 (which is actually it should be always) And when I come back to screen where my window renders, FPS again becomes 120-140. I use MoltenVK and Vulkan SDK version 1.1.121 and I dont have such strange behaviour on windows. Obviously this is not normal. Does somebody knows why this can happen and how to fix that?
  5. Diligent Engine now implements some shadow rendering BKMs: - Cascaded shadow maps with cascade stabilization - PCF - Variance shadow maps - Two and four-component exponential variance shadow maps - Optimized fixed-size or world-sized filter kernels - Best cascade search based on projection into light space - Filtering across cascades - Various artifact removal techniques The main goal is to create a plug-and-play shadowing component that can be easily integrated into applications. The component consists of a shadow map manager and few shader functions. A Shadows sample demonstrates how to integrate Diligent shadows into an application. Check it out on GitHub: https://github.com/DiligentGraphics/DiligentEngine#high-level-rendering-components-1 I am planning to add exponential shadow maps and moment shadow maps later. Are there any state-of-the-art shadowing techniques that I should also take a look at? Credits: Variance Shadow Maps Shadow sample update by MJP Shadow Explorer sample from Intel Cascaded Shadow Maps technical article by Microsoft
  6. Hello, I am trying to find out how to download Vulkan SDK 1.1.110. Maybe I don't understand it correctly but Khronos released Vulkan headers for version 1.1.115 but latest SDK on LunarG is 1.1.108 which was released last month. But there are some programs like the Vulkan caps viewer by Sascha Willems which use Vulkan header 1.1.110. Vulkan headers GitHub repo: https://github.com/KhronosGroup/Vulkan-Headers So does this mean that the headers for version 1.1.110 will only work when LunarG releases Vulkan SDK 1.1.110 or am I missing something?
  7. Anyone had success in naming their vulkan objects via the extension VK_EXT_debug_utils? The extension is reported successfully, but when I have a call to vkSetDebugUtilsObjectNameEXT() function, the build cannot find the symbol for it. There is absolutely no documentation about whether I need to do anything specific for this: https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetDebugUtilsObjectNameEXT.html
  8. I cannot seem to eliminate some Vulkan debug layer errors regarding to incorrect texture layout (but the textures seem to work fine in practice). The debug layer is complaining that textures should be in VK_IMAGE_LAYOUT_GENERAL, but they are in VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL I am uploading texture data via vkCmdCopyBufferToImage using the copy queue, but later in the frame I will use those textures on the graphics queue. The textures are created with VK_IMAGE_LAYOUT_UNDEFINED initial layout, so before issuing vkCmdCopyBufferToImage , I transition them to VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, by inserting a barrier like this: VkImageMemoryBarrier barrier = {}; barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; barrier.image = (VkImage)pTexture2D->resource; barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; barrier.subresourceRange.baseArrayLayer = 0; barrier.subresourceRange.layerCount = pDesc->ArraySize; barrier.subresourceRange.baseMipLevel = 0; barrier.subresourceRange.levelCount = pDesc->MipLevels; barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; barrier.srcAccessMask = 0; barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vkCmdPipelineBarrier( copyCommandBuffer, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, 1, &barrier ); The src and dst queue families are ignored, because The following command using the texture is still executed on the copy queue: vkCmdCopyBufferToImage(copyCommandBuffer, textureUploader->resource, (VkImage)pTexture2D->resource, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (uint32_t)copyRegions.size(), copyRegions.data()); Then I want to transition the texture from transferrable resource to VK_IMAGE_LAYOUT_GENERAL, to be used by the graphics pipeline, so I want to also transfer ownership to the graphics queue family with the barrier: barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; barrier.newLayout = VK_IMAGE_LAYOUT_GENERAL; barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; barrier.srcQueueFamilyIndex = queueIndices.copyFamily; barrier.dstQueueFamilyIndex = queueIndices.graphicsFamily; vkCmdPipelineBarrier( copyCommandBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &barrier ); The texture that I create like this will be either sampled by shaders, or used as read-write texture from compute shaders. Did I miss something, or can I not transfer image layout like this between queues?
  9. I have 10 samplers as an uniform array in a fragment shader. When rendering, I only used 3 of them. So the descriptor set layout and descriptor set only have 3 combined image samplers. That's why I am getting this validation layer warning: validation layer: Shader expects at least 10 descriptors for binding 0.1 but only 3 provided Is there any way to get rid of this other than changing layout(set = 0, binding = 1) uniform sampler2D lightTextureArray[10]; to layout(set = 0, binding = 1) uniform sampler2D lightTextureArray[3]; If I fill up remaining descriptors with default image info (use null handle for view and sampler), the validation layer will complain about invalid combined image sampler/view or something like that. The only way I can think of now is to repeat the existing descriptors. Is there any other way to get around this? What is the standard way to solve this problem?
  10. This video gives an overview of differing features an OpenGL ES developer would encounter when starting to develop with the Vulkan API.
  11. Hi, I am trying out Vulkan ray tracing extensions and I am at the point where I need to compile shaders. I usually use DXC to compile my shaders to Spir-V but I am having trouble understanding how to create a lib_6_3 shader. This is the shader I am trying to compile: struct Payload { float4 color; }; [shader("miss")] void main(inout Payload payload : SV_RayPayload) { payload.color = float4(0, 0, 0, 1); } I was trying to use the following command to compile it but it simply does not produce any output: dxc.exe -spirv -T lib_6_3 -fspv-target-env=vulkan1.1 miss_rt.hlsl -Fo miss.spv I a clearly missing some key detail here... Well, 3 mins after writing this post, I updated my version of DXC and now it works... False alarm! Cheers!
  12. Hi All, I have problem on Adreno 506. vkCreateComputePipelines has returned VK_INCOMPLETE. I have no error message from Vulkan debug layers, but i see an error message from Adreno Driver(Android Studio/logcat): 31569-31637/com.qualcomm.vulkan.compute.d I/Adreno: Shader compilation failed for shaderType: 5 Sample code: vkPipelineLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; vkPipelineLayoutCreateInfo.setLayoutCount = 1; vkPipelineLayoutCreateInfo.pSetLayouts = &vkDescriptorSetLayout; res = vkCreatePipelineLayout(mDevice, &vkPipelineLayoutCreateInfo, NULL, &vkPipelineLayout); VkComputePipelineCreateInfo vkComputePipelineCreateInfo = {}; VkPipelineShaderStageCreateInfo& vkPipelineShaderStageCreateInfo = vkComputePipelineCreateInfo.stage; vkPipelineShaderStageCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; vkPipelineShaderStageCreateInfo.flags = 0; vkPipelineShaderStageCreateInfo.pNext = NULL; vkPipelineShaderStageCreateInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT; vkPipelineShaderStageCreateInfo.module = CreateShaderModuleFromAsset("shaders/spirv.spv"); vkPipelineShaderStageCreateInfo.pName = "CullObjects"; vkPipelineShaderStageCreateInfo.pSpecializationInfo = NULL; vkComputePipelineCreateInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO; vkComputePipelineCreateInfo.layout = vkPipelineLayout; VkPipeline vkComputePipeline = VK_NULL_HANDLE; res = vkCreateComputePipelines(mDevice, NULL, 1, &vkComputePipelineCreateInfo, NULL, &vkComputePipeline); } Original Shader was compiled using glslang tool(https://github.com/KhronosGroup/glslang) Simple project(Android Studio) are based on Vulkan-Compute sample from Adreno Vulkan SDK: Test Project are based on VulkanCompute from Adreno Vulkan SDK. See Sample.cpp, line 634, method void VkSample::Test. I added original shader CSShaderGPUInstanceCulling.hlsl, Spir-v shader spirv.spv, and logcat.log to archive. I have no problem on Mali G71, G76, AMD(Windows/Linux), nVidia(Windows), Intel(Windows) What do you think about it ? Thank you for advance.
  13. Hi. I am studying Vulkan tutorials and go to the vertex buffer creation. I an using my own C# bindings for Vulkan and everything was working fine until I created Vertex buffer. After that - no triangle stopped rendering and there are no messages from validation layer at all. So, I have no errors, but no rendering too. And my question is how to debug Vulkan app in such cases? Is there some technique? EDIT: or maybe I need to enable some specific validation layer? Please, help
  14. Folks, I tried to google Vulcan and sdl2 but they did not help so well. I only found stand-alone or GLFW tutorials. Does anyone have good tutorial about Vulkan with SDL2? Thanks
  15. Hi, I have C++ Vulkan based project using Qt framework. QVulkanInstance and QVulkanWindow does lot of things for me like validation etc. but I can't figure out due Vulkan low level API how to troubleshoot Vulkan errors. I am trying to render terrain using tessellation shaders. I am learning from SaschaWillems tutorial for tessellation rendering. I think I am setting some value for rendering pass wrong in MapTile.cpp but unable to find which cause I dont know how to troubleshoot it. Whats the problem? App freezes on second end draw call Why? QVulkanWindow: Device lost Validation layers debug qt.vulkan: Vulkan init (vulkan-1.dll) qt.vulkan: Supported Vulkan instance layers: QVector(QVulkanLayer("VK_LAYER_NV_optimus" 1 1.1.84 "NVIDIA Optimus layer"), QVulkanLayer("VK_LAYER_RENDERDOC_Capture" 0 1.0.0 "Debugging capture layer for RenderDoc"), QVulkanLayer("VK_LAYER_VALVE_steam_overlay" 1 1.1.73 "Steam Overlay Layer"), QVulkanLayer("VK_LAYER_LUNARG_standard_validation" 1 1.0.82 "LunarG Standard Validation Layer")) qt.vulkan: Supported Vulkan instance extensions: QVector(QVulkanExtension("VK_KHR_device_group_creation" 1), QVulkanExtension("VK_KHR_external_fence_capabilities" 1), QVulkanExtension("VK_KHR_external_memory_capabilities" 1), QVulkanExtension("VK_KHR_external_semaphore_capabilities" 1), QVulkanExtension("VK_KHR_get_physical_device_properties2" 1), QVulkanExtension("VK_KHR_get_surface_capabilities2" 1), QVulkanExtension("VK_KHR_surface" 25), QVulkanExtension("VK_KHR_win32_surface" 6), QVulkanExtension("VK_EXT_debug_report" 9), QVulkanExtension("VK_EXT_swapchain_colorspace" 3), QVulkanExtension("VK_NV_external_memory_capabilities" 1), QVulkanExtension("VK_EXT_debug_utils" 1)) qt.vulkan: Enabling Vulkan instance layers: ("VK_LAYER_LUNARG_standard_validation") qt.vulkan: Enabling Vulkan instance extensions: ("VK_EXT_debug_report", "VK_KHR_surface", "VK_KHR_win32_surface") qt.vulkan: QVulkanWindow init qt.vulkan: 1 physical devices qt.vulkan: Physical device [0]: name 'GeForce GT 650M' version 416.64.0 qt.vulkan: Using physical device [0] qt.vulkan: queue family 0: flags=0xf count=16 supportsPresent=1 qt.vulkan: queue family 1: flags=0x4 count=1 supportsPresent=0 qt.vulkan: Using queue families: graphics = 0 present = 0 qt.vulkan: Supported device extensions: QVector(QVulkanExtension("VK_KHR_8bit_storage" 1), QVulkanExtension("VK_KHR_16bit_storage" 1), QVulkanExtension("VK_KHR_bind_memory2" 1), QVulkanExtension("VK_KHR_create_renderpass2" 1), QVulkanExtension("VK_KHR_dedicated_allocation" 3), QVulkanExtension("VK_KHR_descriptor_update_template" 1), QVulkanExtension("VK_KHR_device_group" 3), QVulkanExtension("VK_KHR_draw_indirect_count" 1), QVulkanExtension("VK_KHR_driver_properties" 1), QVulkanExtension("VK_KHR_external_fence" 1), QVulkanExtension("VK_KHR_external_fence_win32" 1), QVulkanExtension("VK_KHR_external_memory" 1), QVulkanExtension("VK_KHR_external_memory_win32" 1), QVulkanExtension("VK_KHR_external_semaphore" 1), QVulkanExtension("VK_KHR_external_semaphore_win32" 1), QVulkanExtension("VK_KHR_get_memory_requirements2" 1), QVulkanExtension("VK_KHR_image_format_list" 1), QVulkanExtension("VK_KHR_maintenance1" 2), QVulkanExtension("VK_KHR_maintenance2" 1), QVulkanExtension("VK_KHR_maintenance3" 1), QVulkanExtension("VK_KHR_multiview" 1), QVulkanExtension("VK_KHR_push_descriptor" 2), QVulkanExtension("VK_KHR_relaxed_block_layout" 1), QVulkanExtension("VK_KHR_sampler_mirror_clamp_to_edge" 1), QVulkanExtension("VK_KHR_sampler_ycbcr_conversion" 1), QVulkanExtension("VK_KHR_shader_draw_parameters" 1), QVulkanExtension("VK_KHR_storage_buffer_storage_class" 1), QVulkanExtension("VK_KHR_swapchain" 70), QVulkanExtension("VK_KHR_variable_pointers" 1), QVulkanExtension("VK_KHR_win32_keyed_mutex" 1), QVulkanExtension("VK_EXT_conditional_rendering" 1), QVulkanExtension("VK_EXT_depth_range_unrestricted" 1), QVulkanExtension("VK_EXT_descriptor_indexing" 2), QVulkanExtension("VK_EXT_discard_rectangles" 1), QVulkanExtension("VK_EXT_hdr_metadata" 1), QVulkanExtension("VK_EXT_inline_uniform_block" 1), QVulkanExtension("VK_EXT_shader_subgroup_ballot" 1), QVulkanExtension("VK_EXT_shader_subgroup_vote" 1), QVulkanExtension("VK_EXT_vertex_attribute_divisor" 3), QVulkanExtension("VK_NV_dedicated_allocation" 1), QVulkanExtension("VK_NV_device_diagnostic_checkpoints" 2), QVulkanExtension("VK_NV_external_memory" 1), QVulkanExtension("VK_NV_external_memory_win32" 1), QVulkanExtension("VK_NV_shader_subgroup_partitioned" 1), QVulkanExtension("VK_NV_win32_keyed_mutex" 1), QVulkanExtension("VK_NVX_device_generated_commands" 3), QVulkanExtension("VK_NVX_multiview_per_view_attributes" 1)) qt.vulkan: Enabling device extensions: QVector(VK_KHR_swapchain) qt.vulkan: memtype 0: flags=0x0 qt.vulkan: memtype 1: flags=0x0 qt.vulkan: memtype 2: flags=0x0 qt.vulkan: memtype 3: flags=0x0 qt.vulkan: memtype 4: flags=0x0 qt.vulkan: memtype 5: flags=0x0 qt.vulkan: memtype 6: flags=0x0 qt.vulkan: memtype 7: flags=0x1 qt.vulkan: memtype 8: flags=0x1 qt.vulkan: memtype 9: flags=0x6 qt.vulkan: memtype 10: flags=0xe qt.vulkan: Picked memtype 10 for host visible memory qt.vulkan: Picked memtype 7 for device local memory qt.vulkan: Color format: 44 Depth-stencil format: 129 qt.vulkan: Creating new swap chain of 2 buffers, size 600x370 qt.vulkan: Actual swap chain buffer count: 2 (supportsReadback=1) qt.vulkan: Allocating 1027072 bytes for transient image (memtype 8) qt.vulkan: Creating new swap chain of 2 buffers, size 600x368 qt.vulkan: Releasing swapchain qt.vulkan: Actual swap chain buffer count: 2 (supportsReadback=1) qt.vulkan: Allocating 1027072 bytes for transient image (memtype 8) QVulkanWindow: Device lost qt.vulkan: Releasing all resources due to device lost qt.vulkan: Releasing swapchain I am not so sure if this debug helps somehow :(( I dont want you to debug it for me. I just want to learn how I should debug it and find where problem is located. Could you give me guide please? Source code Source code rendering just few vertices (working) Difference between links are: Moved from Qt math libraries to glm Moved from QImage to gli for Texture class Added tessellation shaders Disabled window sampling Rendering terrain using heightmap and texturearray (Added normals and UV) Thanks
  16. khawk

    Vulkan 1.1 Spec Released

    The Khronos™ Group, an open consortium of leading hardware and software companies creating advanced acceleration standards, announces the release of the Vulkan® 1.1 and SPIR-V™ 1.3 specifications. Version 1.1 expands Vulkan’s core functionality with developer-requested features, such as subgroup operations, while integrating a wide range of proven extensions from Vulkan 1.0. Khronos will also release full Vulkan 1.1 conformance tests into open source and AMD, Arm, Imagination, Intel Corporation, NVIDIA and Qualcomm have implemented conformant Vulkan 1.1 drivers. Find more information on the Vulkan 1.1 specification and associated tests and tools at Khronos’s Vulkan Resource Page. “With enhanced developer tools, rigorous conformance testing and the public Vulkan Ecosystem Forum, Khronos is delivering on its goal to develop a complete and vibrant Vulkan ecosystem,” said Tom Olson, distinguished engineer at Arm, and Vulkan Working Group chair. “Vulkan 1.1 is a response to prioritized industry requests and shows our commitment to delivering a functional roadmap driven by developer needs.” Vulkan 1.1 will drive increased industry momentum for this new-generation, cross-platform standard for explicit control over GPU acceleration. Vulkan now ships natively on almost all GPU-enabled platforms, including Windows 7, 8.X, 10, Android 7.0+ and Linux, plus Khronos recently announced open source tools to enable Vulkan 1.0 applications to be ported to macOS and iOS. Vulkan has widespread support in leading games engines including Unreal, Unity, Source 2 from Valve, id Tech, CroTeam’s Serious Engine, CryEngine, and Xenko. Vulkan is being used in over 30 cutting-edge games on diverse desktop and mobile platforms, including Doom, Quake, Roblox, The Talos Principle, Dota 2, and is the exclusive API used in AAA titles such as Wolfenstein II and Doom VFR. New functionality in Vulkan 1.1 includes Subgroup Operations that enable highly-efficient sharing and manipulation of data between multiple tasks running in parallel on a GPU. Vulkan 1.1 also enables applications to perform rendering and display operations using resources that they cannot access or copy - for secure playback and display of protected multimedia content. In addition, a wide range of Vulkan 1.0 extensions have been integrated, bringing significant proven functionality into core Vulkan 1.1, including: simultaneous rendering of multiple image views, use of multiple GPUs in a single system, and cross-process API interoperability for advanced rendering and compositing operations often used in demanding applications such as Virtual Reality. These core functionalities also include advanced compute with 16-bit memory access, and support for HLSL memory layouts, and display, processing and compositing of video streams, through direct sampling of YCbCr color formatted textures produced by many video codecs. Integral to the release of Vulkan 1.1 is the new SPIR-V 1.3 specification that expands the capabilities of the Vulkan shader intermediate representation to support subgroup operations and enable enhanced compiler optimizations. The SPIR-V tools ecosystem continues to gain significant momentum with front-end compilers for both GLSL and HLSL, and to expand low-level tooling support from the open source SPIRV-Tools project. “We are excited to see the progress developers have made with the SPIR-V standardized IR. Developers are using the shader language of their choice and a variety of open source compilers to ship their games and applications. The Vulkan tools and ecosystem is evolving rapidly.” said David Neto, Shader compiler team lead at Google. Open source Vulkan development tools continue to evolve alongside the specification. For example, the LunarG Vulkan SDK and tools layers have been upgraded to support Vulkan 1.1, including the Vulkan Layer Factory (VLF) to enable rapid layer development, the Device Simulation Layer to simulate target device capabilities, without requiring actual physical hardware and the new Assistant Layer to guide developers to best practices and to highlight potential application problems. In addition, the RenderDoc frame capture and introspection debugging tool has added full native Vulkan support on Android with help from Khronos members, and improved support for displaying SPIR-V disassembly using SPIRV-Tools and high-level languages through the SPIRV-Cross cross compiler. RenderDoc has also been upgraded to expose native disassembly and profiling information for vendors who support it, and to support the external memory features that now form a core part of Vulkan 1.1. To encourage the collaborative evolution of the Vulkan ecosystem, Khronos has created the public Vulkan Ecosystem Forum to share issues and opportunities, and to coordinate cooperative solutions. The aim of the Forum is to respond to developer feedback and foster cross-functional discussions and engagement between users, tools developers and API designers. Join the conversation at Vulkan Ecosystem on GitHub. Industry Support for Vulkan 1.1 “AMD is very excited about the release of the Vulkan 1.1 specifications. This new iteration of the industry standard builds on its strong foundations and expands its reach by making the API more accessible to developers. New Vulkan 1.1 features such as subgroup access in compute shaders enable console-like optimizations that will empower developers to exert more control on the GPU than ever before,” said Andrej Zdravkovic, corporate vice president of software, AMD. “Vulkan also enriches its connectivity with other APIs by supporting interop operations, and finally enables first-class support for multi-GPU and VR systems. AMD believes that this major upgrade to the API will delight the existing Vulkan community and continue to broaden the user base.” “The new additions in Vulkan 1.1 are a game changer for Vulkan,” said Andrew Richards, CEO of Codeplay Software. “In particular the new subgroup functionality will make a huge difference to our low power, high performance deep learning work.” “Continental is delighted to see how Vulkan continues to move graphics technology forward,” said Dr. Ulrich Kabatek, principal expert graphic systems & 3D visualization at Continental. “We appreciate the improvements it offers for more integrated automotive systems and latency critical applications like augmented automotive clusters.” “As a major contributor to the Vulkan API, Imagination is pleased to see the next evolution of the API in Vulkan 1.1. The new specification offers new ways to exploit GPU parallelism and support for protected content - enabling advanced video processing in Vulkan for things like VR Cinema,” said Graham Deacon, vice president of PowerVR Marketing at Imagination. “We are amongst the first vendors to have a conformant Vulkan implementation, with all of our existing Vulkan-capable GPU IP able to support the new 1.1 standard. The new subgroup and protected content features are fully available in many of our newer cores.” “Intel is committed to open source driver advances for high performance graphics. Vulkan 1.1 is certified on the latest four generations of Intel® Core™ processors, further developing support for virtual and mixed reality,” said Imad Sousou, corporate vice president and general manager of the Open Source Technology Center at Intel Corporation. “Vulkan is vital to NVIDIA’s business as it enables developers to get the best from our GPUs across a wide range of platforms,” said Dwight Diercks, senior vice president of software engineering, NVIDIA. “Our Vulkan 1.1 drivers, with full subgroup functionality, are available for Windows, Linux, and Android on the day of the specification launch. We will continue to take a leadership role within Khronos to ensure Vulkan evolves to meet the needs of developers and the wider industry.” “Vulkan is enabling high fidelity games to make the most out of the capability in mobile, with great titles like Honor of Kings from Tencent running across many Galaxy devices” said Taeyong Kim, VP of Graphics at Samsung Electronics. “Vulkan 1.1 builds on this, adding functionality for VR gaming and 360 video that will enable immersive content on mobile products and VR headsets.” “In our non-gaming business, Vulkan 1.1 is a key factor for our success,” said Norbert Nopper, founder of UX3D, “The possibility to utilize simultaneous rendering and multiple GPUs by default does help us to further optimize our engine.” "VeriSilicon has adopted the latest industry standard low-level GPU API Vulkan 1.1 and is committed to support Vulkan 1.1 across our OpenGL ES 3.1/3.2 class GPUs," said Wei-Jin Dai, executive vice president of VeriSilicon and general manager of VeriSilicon's IP Division. "We are glad to see the new functionalities of Vulkan 1.1 API, the multi-GPU support, the premium content protection, and the advanced compute functionality, etc. to unleash the tremendous potential for a new generation of Vulkan applications. We are particularly excited about the opportunities the Vulkan 1.1 brings to the automotive customers to have fine-grained control over graphics quality of service and highly desired security levels and features.” "Vulkan 1.1 and SPIR-V 1.3 are another step in providing better support for compute, as it adds subgroups, 16-bit numbers and a restricted form of pointers", said Vincent Hindriksen, managing director of StreamHPC. "Adding this to the strong industry support for Vulkan and the recently launched portab