Quantcast
Jump to content

New Vulkan Extensions for Mobile: Legacy Support Extensions


Recommended Posts

2021-06-21-01-banner.jpg

The Samsung Developers team works with many companies in the mobile and gaming ecosystems. We're excited to support our partner, Arm, as they bring timely and relevant content to developers looking to build games and high-performance experiences. This Vulkan Extensions series will help developers get the most out of the new and game-changing Vulkan extensions on Samsung mobile devices.

Android is enabling a host of useful new Vulkan extensions for mobile. These new extensions are set to improve the state of graphics APIs for modern applications, enabling new use cases and changing how developers can design graphics renderers going forward. I have already provided information about ‘maintenance extensions’. However, another important extension that I explore in this blog is ‘legacy support extensions’.

Vulkan is increasingly being used as a portable “HAL”. The power and flexibility of the API allows for great layered implementations. There is a lot of effort spent in the ecosystem enabling legacy graphics APIs to run efficiently on top of Vulkan. The bright future for driver developers is a world where GPU drivers only implement Vulkan, and where legacy APIs can be implemented on top of that driver.

To that end, there are several features which are generally considered backwards today. They should not be used in new applications unless absolutely required. These extensions exist to facilitate old applications which need to keep running through API translation layers such as ANGLE, DXVK, Zink, and so on.

VK_EXT_transform_feedback

Speaking the name of this extension causes the general angst level to rise in a room of driver developers. In the world of Direct3D, this feature is also known as stream-out.

The core feature of this extension is that whenever you render geometry, you can capture the resulting geometry data (position and vertex outputs) into a buffer. The key complication from an implementation point of view is that the result is ordered. This means there is no 1:1 relation for input vertex to output data since this extension is supposed to work with indexed rendering, as well as strip types (and even geometry shaders and tessellation, oh my!).

This feature was invented in a world before compute shaders were conceived. The only real method to perform buffer <-> buffer computation was to make use of transform feedback, vertex shaders and rasterizationDiscard. Over time, the functionality of Transform Feedback was extended in various ways, but today it is essentially obsoleted by compute shaders.

There are, however, two niches where this extension still makes sense - graphics debuggers and API translation layers. Transform Feedback is extremely difficult to emulate in the more complicated cases.

Setting up shaders

In vertex-like shader stages, you need to set up which vertex outputs to capture to a buffer. The shader itself controls the memory layout of the output data. This is unlike other APIs, where you use the graphics API to specify which outputs to capture based on the name of the variable.

Here is an example Vulkan GLSL shader:

#version 450

layout(xfb_stride = 32, xfb_offset = 0, xfb_buffer = 0, location = 0)
out vec4 vColor;
layout(xfb_stride = 32, xfb_offset = 16, xfb_buffer = 0, location = 1)
out vec4 vColor2;

layout(xfb_buffer = 1, xfb_stride = 16) out gl_PerVertex {
    layout(xfb_offset = 0) vec4 gl_Position;
};

void main()
{
	gl_Position = vec4(1.0);
	vColor = vec4(2.0);
	vColor2 = vec4(3.0);
}

The resulting SPIR-V will then look something like:

Capability TransformFeedback
ExecutionMode 4 Xfb
Decorate 8(gl_PerVertex) Block
Decorate 10 XfbBuffer 1
Decorate 10 XfbStride 16
Decorate 17(vColor) Location 0
Decorate 17(vColor) XfbBuffer 0
Decorate 17(vColor) XfbStride 32
Decorate 17(vColor) Offset 0
Decorate 20(vColor2) Location 1
Decorate 20(vColor2) XfbBuffer 0
Decorate 20(vColor2) XfbStride 32
Decorate 20(vColor2) Offset 16

Binding transform feedback buffers

Once we have a pipeline which can emit transform feedback data, we need to bind buffers:

vkCmdBindTransformFeedbackBuffersEXT(cmd,
firstBinding, bindingCount,
pBuffers, pOffsets, pSizes);

To enable a buffer to be captured, VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT is used.

Starting and stopping capture

Once we know where to write the vertex output data, we will begin and end captures. This needs to be done inside a render pass:

vkCmdBeginTransformFeedbackEXT(cmd,
	firstCounterBuffer, counterBufferCount,
	pCounterBuffers, pCounterBufferOffsets);

A counter buffer allows us to handle scenarios where we end a transform feedback and continue capturing later. We would not necessarily know how many bytes were written by the last transform feedback, so it is critical that we can let the GPU maintain a byte counter for us.

vkCmdDraw(cmd, …);
vkCmdDrawIndexed(cmd, …);

Then we can start rendering. Vertex outputs are captured to the buffers in-order.

vkCmdEndTransformFeedbackEXT(cmd,
	firstCounterBuffer, counterBufferCount,
	pCounterBuffers, pCounterBufferOffsets);

Once we are done capturing, we end the transform feedback and, with the counter buffers, we can write the new buffer offsets into the counter buffer.

Indirectly drawing transform feedback results

This feature is a precursor to the more flexible indirect draw feature we have in Vulkan, but there was a time when this feature was the only efficient way to render transform feedbacked outputs. The fundamental problem is that we do not necessarily know exactly how many primitives have been rendered. Therefore, to avoid stalling the CPU, it was required to be able to indirectly render the results with a special purpose API.

vkCmdDrawIndirectByteCountEXT(cmd,
	instanceCount, firstInstance,
	counterBuffer, counterBufferOffset,
	counterOffset, vertexStride);

This works similarly to a normal indirect draw call, but instead of providing a vertex count, we give it a byte count and let the GPU perform the divide instead. This is nice, as otherwise we would have to dispatch a tiny compute kernel that converts a byte count to an indirect draw.

Queries

The offset counter is sort of like a query, but if the transform feedback buffers overflow, any further writes are ignored. The VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT queries how many primitives were generated. It also lets you query how many primitives were attempted to be written. This makes it possible to detect overflow if that is desirable.

VK_EXT_line_rasterization

Line rasterization is a tricky subject and is not normally used for gaming applications since they do not scale with resolution and their exact behavior is not consistent across all GPU implementations.

In the world of CAD, however, this feature is critical, and older OpenGL APIs had extensive support for quite fancy line rendering methods. This extension essentially brings back those workstation features. Advanced line rendering can occasionally be useful for debug tooling and visualization as well.

The feature zoo

typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
	VkStructureType sType;
	void*          		pNext;
	VkBool32       rectangularLines;
	VkBool32       bresenhamLines;
	VkBool32       smoothLines;
	VkBool32       stippledRectangularLines;
	VkBool32       stippledBresenhamLines;
	VkBool32       stippledSmoothLines;
} VkPhysicalDeviceLineRasterizationFeaturesEXT;

This extension supports a lot of different feature bits. I will try to summarize what they mean below.

Rectangular lines vs parallelogram

When rendering normal lines in core Vulkan, there are two ways lines can be rendered. If VkPhysicalDeviceLimits::strictLines is true, a line is rendered as if the line is a true, oriented rectangle. This is essentially what you would get if you rendered a scaled and rotated rectangle yourself. The hardware just expands the line along the perpendicular axis of the line axis.

In non-strict rendering, we get a parallelogram. The line is extended either in X or Y directions.

(From Vulkan specification)

Bresenham lines

Bresenham lines reformulate the line rendering algorithm where each pixel has a diamond shaped area around the pixel and coverage is based around intersection and exiting the area. The advantage here is that rendering line strips avoids overdraw. Rectangle or parallelogram rendering does not guarantee this, which matters if you are rendering line strips with blending enabled.

(From Vulkan specification)

Smooth lines

Smooth lines work like rectangular lines, except the implementation can render a little further out to create a smooth edge. Exact behavior is also completely unspecified, and we find the only instance of the word “aesthetic” in the entire specification, which is amusing. This is a wonderfully vague word to see in the Vulkan specification, which is otherwise no-nonsense normative.

This feature is designed to work in combination with alpha blending since the smooth coverage of the line rendering is multiplied into the alpha channel of render target 0’s output.

Line stipple

A “classic” feature that will make most IHVs cringe a little. When rendering a line, it is possible to mask certain pixels in a pattern. A counter runs while rasterizing pixels in order and with line stipple you control a divider and mask which generates a fixed pattern for when to discard pixels. It is somewhat unclear if this feature is really needed when it is possible to use discard in the fragment shader, but alas, legacy features from the early 90s are sometimes used. There were no shaders back in those days.

Configuring rasterization pipeline state

When creating a graphics pipeline, you can pass in some more data in pNext of rasterization state:

typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
	VkStructureType    sType;
	const void*             pNext;
	VkLineRasterizationModeEXT lineRasterizationMode;
	VkBool32                stippledLineEnable;
	uint32_t                   lineStippleFactor;
	uint16_t                   lineStipplePattern;
} VkPipelineRasterizationLineStateCreateInfoEXT;

typedef enum VkLineRasterizationModeEXT {
    VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
    VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
} VkLineRasterizationModeEXT;

If line stipple is enabled, the line stipple factors can be baked into the pipeline, or be made a dynamic pipeline state using VK_DYNAMIC_STATE_LINE_STIPPLE_EXT.

In the case of dynamic line stipple, the line stipple factor and pattern can be modified dynamically with:

vkCmdSetLineStippleEXT(cmd, factor, pattern);

VK_EXT_index_type_uint8

In OpenGL and OpenGL ES, we have support for 8-bit index buffers. Core Vulkan and Direct3D however only support 16-bit and 32-bit index buffers. Since emulating index buffer formats is impractical with indirect draw calls being a thing, we need to be able to bind 8-bit index buffers. This extension does just that.

This is probably the simplest extension we have look at so far:

vkCmdBindIndexBuffer(cmd, indexBuffer, offset, VK_INDEX_TYPE_UINT8_EXT);
vkCmdDrawIndexed(cmd, …);

Conclusion

I have been through the 'maintenance' and 'legacy support' extensions that are part of the new Vulkan extensions for mobile. In the next three blogs, I will go through what I see as the 'game-changing' extensions from Vulkan - the three that will help to transform your games during the development process.

Follow Up

Thanks to Hans-Kristian Arntzen and the team at Arm for bringing this great content to the Samsung Developers community. We hope you find this information about Vulkan extensions useful for developing your upcoming mobile games. The original version of this article can be viewed at Arm Community.

The Samsung Developers site has many resources for developers looking to build for and integrate with Samsung devices and services. Stay in touch with the latest news by creating a free account or by subscribing to our monthly newsletter. Visit the Marketing Resources page for information on promoting and distributing your apps and games. Finally, our developer forum is an excellent way to stay up-to-date on all things related to the Galaxy ecosystem.

View the full blog at its source

Link to post
Share on other sites


Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Similar Topics

    • By STF News
      Samsung Electronics today announced a new partnership with CJ ENM, Asia’s leading entertainment and media group behind the Oscar-winning film ‘Parasite’, to build a virtual production studio to spearhead the production of future video content. Combining its cutting-edge Micro LED technology with CJ ENM’s globally recognized content production of television series and films, Samsung is taking the next step in a new initiative to innovate in the rapidly expanding virtual production market.
       
      Through this partnership, Samsung will supply its state-of-the-art display technology, The Wall, to CJ ENM’s virtual studio, a part of its television and film production studio complex scheduled to open in Paju, Korea later this year. The custom virtual production volume studio will be the first in the world to leverage The Wall’s boundless LED technology, unlocking new possibilities for video content production operations and virtual production solutions. The main display will be installed in an oval shape with a diameter of 20 meters and a height of seven meters or more, creating a seemingly endless backdrop to capture content.
       

       
      “We are excited to collaborate with CJ ENM to build a virtual production studio featuring Samsung’s most cutting-edge display technologies,” said Jong-hee Han, President of Visual Display Business at Samsung Electronics. “With this partnership, Samsung is launching a new virtual production industry initiative with a commitment to deliver innovative products and solutions that offer the optimal environment for next-generation content production.”
       
      This virtual production studio will use LED displays and connected cameras to create virtual settings in real-time. This solution will save time and reduce image compositing and on-location production costs while helping filmmakers to see the camera on the live-action set in any direction.
       
      The Wall’s modular technology allows creators to design environments to their specific requirements, enabling a variety of installation options such as ceiling installation and convex or concave design, depending on the internal studio design.
       

       
      The 2021 model of The Wall (Model Name: IWA) with Micro LED technology enhances visual expression with ultra-deep blacks and wide viewing angles, giving filmmakers and content creators the ultimate canvas to fulfill their visions. The modular screens are ideal for studios thanks to their precise color expression, HDR10+ and cinema LED picture quality technology and optimized frame rates for production houses. A new molding process is also applied to the modular surfaces of The Wall to minimize any moiré patterns from forming, a nuisance typically associated with filming standard LED screens.
       
      The Wall’s massive screen measures over 1,000 inches, producing vibrant colors and details supporting up to 16K high-resolution1 content. Dedicated frame rates for studio production, a new addition to this year’s model, allows producers to run content at frame rates such as 23.976, 29.97 and 59.94Hz, ensuring seamless videos sync with the most widely used camera framerates. Frame Rate Sync technology further reduces screen disruptions for true-to-life accuracy. With thoughtful dust and contamination-resistant LED protective films, plus a variety of easy-to-use solutions, such as remote management and color adjustment, The Wall is built for convenient management in any environment.
       
      CJ ENM Virtual Studio Concept Visual
       
      Both companies expect this collaboration to improve content production possibilities while satisfying a variety of customers by reimagining content production for today’s fast-paced entertainment environment.
       
      “The strategic partnership with Samsung will allow CJ ENM to push forward the creation of a new powerhouse of the next-generation content,” said Ho-sung Kang, CJ ENM CEO. “While CJ ENM is investing $4.4 billion over the next five years in entertainment content, we are taking the lead in building a global No. 1 production studio to become a world leading entertainment company.”
       
       
      About CJ ENM
      CJ ENM is Asia’s leading entertainment and lifestyle company headquartered in Seoul, Korea. Since 1995, the company has engaged in a wide array of businesses across the industry spectrum including media content, music, film, performing arts, and animation, providing its top notch original content to various media platforms. CJ ENM has created, produced and distributed globally acclaimed contents including Cannes-winning film Parasite, Tony Award-winning musical Kinky Boots, record-breaking Korean box office hits Roaring Currents, Extreme Job, Ode to My Father, along with sought-after television series such as Crash Landing On You, Mr. Sunshine, Guardian: The Lonely and Great God, Grandpas over Flowers, I Can See Your Voice and more. To offer the best K-Culture experiences worldwide, CJ ENM presents KCON/KCON:TACT, the world’s largest K-culture convention & festival celebrating Hallyu and Mnet Asian Music Awards (MAMA), Asia’s biggest music awards. With regional offices in Asia, Europe and the U.S., CJ ENM currently employs over 3,600 people.
       
       
      1 16K resolution is only available for horizontal layouts with a 15,360 x 2,160-pixel arrangement.
      View the full article
    • By STF News
      We’re constantly working to make your web experience better and more secure. This month we’re introducing our latest Samsung Internet beta, 15.0, with a engine upgrade as well as new features and privacy protections.
      To start off with, 15.0 will be based on Chromium M90. This means developers will have new APIs to work with as well as the 9.0 version of the v8 JavaScript engine.
      Adding the search widget to your home screen: long-press the Samsung Internet icon and select “widgets.” You will then be prompted to Add the search widget to your device’s homescreen.
      We’re working to make your search experience more intuitive and easier. 15.0 introduces a search widget to better integrate your web searching experience (with your chosen search provider) right to your home screen so your home screen searches better integrate with the rest of your web usage. More updates on the search experience is coming soon.
      We’re also including some enhancements to user privacy with 15.0 — notably making our browser more resistant to fingerprinting by introducing some “noise” in the results from APIs that are commonly used by finger-printers. Fingerprinting is one technique that tracking networks use to correlate information about people even when they use secret browsing mode or tracking blockers such as the previous version of our Smart Anti-Tracking did so building in fingerprinting resistance should help Samsung Internet users maintain their chosen privacy settings.
      Our new “Back-Forward cache” feature will allow you to navigate pages more quickly. For frequently accessed web pages, this will bring cache hits from ~20% to around ~70%, and should greatly speed up browsing time (and reduce data usage) as you flick between pages.
      Back-Forward cache (“bfcache”) is an in-memory cache that stores a complete snapshot of a page (including the JavaScript heap) as the user is navigating away. With the entire page in memory, the browser can easily restore it if the user returns. More info on how bfcache works can be found in this web.dev article.
      We’ve enhanced bfcache for Samsung Internet by adding some further heuristics to determine whether the page should be restored or not.
      To make back-forward cache work better for your sites, remember to set the follow the instructions on web.dev about optimising your page for bfcache.
      Privacy is also about the ability to delete your data when you choose to. We’re making it more straightforward to delete your browsing data by providing you more information about what you’re deleting.
      Another way we’re safeguarding your privacy is by making it more straightforward to use Secret Mode (our private browsing mode). With 15.0, once you select Secret Mode, Samsung Internet will launch in Secret Mode by default even if terminated.
      Our new Beta is available on both the Galaxy and Play stores for download today!
      If you find any bugs or issues, please let us know at: [email protected]
      View the full blog at its source
    • By STF News
      Samsung Electronics today launched the 2021 model of its boundary-pushing modular display The Wall (Model Name: IWA) globally. With the new AI processing technology, upgraded 120Hz frame rates, and versatile installation options, this year’s The Wall once again reimagines display technology to give businesses boundless flexibility to showcase content.
       

       
      “Samsung is dedicated to creating the most innovative displays for those at the forefront of video creation and brand experiences,” said Hyesung Ha, Senior Vice President of Visual Display Business at Samsung Electronics. “The 2021 The Wall is our most immersive and versatile display yet, giving businesses complete control to create their dream environments.”
       
      A new Micro AI Processor instantly analyzes and optimizes every frame of the video to deliver the best picture quality possible. By using up to 16 different neural network models, each trained in AI upscaling and deep learning technology, the Micro AI Processor can optimize picture quality up to 8K resolution, enhancing contrast and removing noise.
       
      The Wall’s Black Seal Technology blankets the screen with perfect uniformity, creating a seamless canvas for purer black levels with enhanced depth delivering unparalleled contrast and immaculate detail. With 1,600 nits peak brightness, The Wall provides clear images that stand out even in bright room environments. Ultra Chroma technology produces narrower wavelengths that create RGB colors twice as pure1 and more accurate than conventional LEDs. Each LED is now up to 40% smaller,2 increasing the pure black space between pixels for enhanced color uniformity and higher picture contrast.
       

       
      This year’s model is easier to install thanks to new wireless docking connections and a bezel-less design, resulting in a cabinet depth half as deep as before.3 With modular technology, The 2021 The Wall can be installed in a variety of positions, including concave, convex, ceiling, hanging, inclined and L-type. In addition, users only need to adjust once per cabinet with Factory Seam Adjustment, eliminating module-by-module adjustment and saving time.
       
      The 2021 model offers its most detailed picture yet with the industry’s first 8K resolution with a 120Hz refresh rate and Simple 8K playback. The Wall can be configured horizontally for up to 16K resolution with a 15,360 x 2,160-pixel arrangement.4 Its massive screen measures in at over 1,000 inches, creating a completely expansive canvas for showcasing content.
       

       
      The Wall comes built with Micro HDR and Micro Motion features, featuring 20-bit processing to deliver a consistent picture quality that is suitable across commercial environments for a smooth viewing experience regardless of location. The screen also includes four picture-by-picture screens (PBP), allowing for four different content sources, all of which can be displayed simultaneously in 4K resolution. The 4-PBP function can be used for business purposes where multi-screens are needed.
       
      All of The Wall’s features are delivered with safety top of mind. TÜV Rheinland awarded its Eye Comfort Certification for minimized blue light emission, while its EMC Class B certification minimizes electromagnetic waves for safe installation in homes.
       
      Samsung’s 2021 The Wall is available in select markets around the globe starting today. For more information, please visit: https://displaysolutions.samsung.com/the-wall.
       
       
      1 Figure is based on internal testing standards against Samsung’s conventional LED Signage.
      2 Compared to 2020 model.
      3 Compared to 2020 model.
      4 For a regular design, 16:9 ratio, 8K resolution (7,680 x 4,320) is supported.
      View the full article
    • By STF News
      Today, protecting the environment and fighting climate change require technology manufacturers to take a more thoughtful approach to innovation.
       
      Samsung Electronics strives to incorporate environmental sustainability into everything it does. The company’s products are thoughtfully designed to minimize their impact on the environment throughout their lifecycle – from the planning and manufacturing stages to their use and recycling.
       
      This includes using power-efficient semiconductor chips, sustainable packaging and energy-saving technology, and offering consumers the ability to upcycle packaging and old devices. Through tangible solutions like these, the company is empowering consumers to take part in an important mission: conserving resources and reducing their environmental footprint.
       
      These efforts are reflected in the company’s TV lineup, including its 75-inch Neo QLED TV (QN90A). Check out the infographic below to examine how Samsung took a ‘full circle’ approach to sustainability with one of its latest displays.
       

      View the full article
    • By Alex
      How do you get HBO Go on Samsung Tizen Smart TVs? HBO Go is supported on most Samsung Tizen Smart TVs.
      To find out if HBO GO is available on your Samsung TV, go to Samsung TV: Compatible Devices with HBO GO and look for your Samsung TV model.
      If HBO GO is not available on your Samsung TV, you can use a streaming player (such as Roku or Apple TV), a game console, or stream HBO GO to your TV using Chromecast. 
      Go to Smart Hub and search for HBO Go
       


×
×
  • Create New...