Quantcast
Jump to content

New Vulkan Extensions for Mobile: Maintenance Extensions


Recommended Posts

2021-06-14-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. In particular, in Android R, there has been a whole set of Vulkan extensions added. These extensions will be available across various Android smartphones, including the Samsung Galaxy S21, which was recently launched on 14 January. Existing Samsung Galaxy S models, such as the Samsung Galaxy S20, also allow upgrades to Android R.

One of these new Vulkan extensions for mobile are ‘maintenance extensions’. These plug up various holes in the Vulkan specification. Mostly, a lack of these extensions can be worked around, but it is annoying for application developers to do so. Having these extensions means less friction overall, which is a very good thing.

VK_KHR_uniform_buffer_standard_layout

This extension is a quiet one, but I still feel it has a lot of impact since it removes a fundamental restriction for applications. Getting to data efficiently is the lifeblood of GPU programming.

One thing I have seen trip up developers again and again are the antiquated rules for how uniform buffers (UBO) are laid out in memory. For whatever reason, UBOs have been stuck with annoying alignment rules which go back to ancient times, yet SSBOs have nice alignment rules. Why?

As an example, let us assume we want to send an array of floats to a shader:

#version 450

layout(set = 0, binding = 0, std140) uniform UBO
{
    float values[1024];
};

layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in int vIndex;

void main()
{
    FragColor = vec4(values[vIndex]);
}

If you are not used to graphics API idiosyncrasies, this looks fine, but danger lurks around the corner. Any array in a UBO will be padded out to have 16 byte elements, meaning the only way to have a tightly packed UBO is to use vec4 arrays. Somehow, legacy hardware was hardwired for this assumption. SSBOs never had this problem.

std140 vs std430

You might have run into these weird layout qualifiers in GLSL. They reference some rather old GLSL versions. std140 refers to GLSL 1.40, which was introduced in OpenGL 3.1, and it was the version uniform buffers were introduced to OpenGL.

The std140 packing rules define how variables are packed into buffers. The main quirks of std140 are:

  • Vectors are aligned to their size. Notoriously, a vec3 is aligned to 16 bytes, which have tripped up countless programmers over the years, but this is just the nature of vectors in general. Hardware tends to like aligned access to vectors.
  • Array element sizes are aligned to 16 bytes. This one makes it very wasteful to use arrays of float and vec2.

The array quirk mirrors HLSL’s cbuffer. After all, both OpenGL and D3D mapped to the same hardware. Essentially, the assumption I am making here is that hardware was only able to load 16 bytes at a time with 16 byte alignment. To extract scalars, you could always do that after the load.

std430 was introduced in GLSL 4.30 in OpenGL 4.3 and was designed to be used with SSBOs. std430 removed the array element alignment rule, which means that with std430, we can express this efficiently:

#version 450

layout(set = 0, binding = 0, std430) readonly buffer SSBO
{
    float values[1024];
};

layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in int vIndex;

void main()
{
    FragColor = vec4(values[vIndex]);
}

Basically, the new extension enables std430 layout for use with UBOs as well.

#version 450
#extension GL_EXT_scalar_block_layout : require

layout(set = 0, binding = 0, std430) uniform UBO
{
    float values[1024];
};

layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in int vIndex;

void main()
{
    FragColor = vec4(values[vIndex]);
}

Why not just use SSBOs then?

On some architectures, yes, that is a valid workaround. However, some architectures also have special caches which are designed specifically for UBOs. Improving memory layouts of UBOs is still valuable.

GL_EXT_scalar_block_layout?

The Vulkan GLSL extension which supports std430 UBOs goes a little further and supports the scalar layout as well. This is a completely relaxed layout scheme where alignment requirements are essentially gone, however, that requires a different Vulkan extension to work.

VK_KHR_separate_depth_stencil_layouts

Depth-stencil images are weird in general. It is natural to think of these two aspects as separate images. However, the reality is that some GPU architectures like to pack depth and stencil together into one image, especially with D24S8 formats.

Expressing image layouts with depth and stencil formats have therefore been somewhat awkward in Vulkan, especially if you want to make one aspect read-only and keep another aspect as read/write, for example.

In Vulkan 1.0, both depth and stencil needed to be in the same image layout. This means that you are either doing read-only depth-stencil or read/write depth-stencil. This was quickly identified as not being good enough for certain use cases. There are valid use cases where depth is read-only while stencil is read/write in deferred rendering for example.

Eventually, VK_KHR_maintenance2 added support for some mixed image layouts which lets us express read-only depth, read/write stencil, and vice versa:

VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR

VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR

Usually, this is good enough, but there is a significant caveat to this approach, which is that depth and stencil layouts must be specified and transitioned together. This means that it is not possible to render to a depth aspect, while transitioning the stencil aspect concurrently, since changing image layouts is a write operation. If the engine is not designed to couple depths and stencil together, it causes a lot of friction in implementation.

What this extension does is completely decouple image layouts for depth and stencil aspects and makes it possible to modify the depth or stencil image layouts in complete isolation. For example:

    VkImageMemoryBarrier barrier = {…};

Normally, we would have to specify both DEPTH and STENCIL aspects for depth-stencil images. Now, we can completely ignore what stencil is doing and only modify depth image layout.

    barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
    barrier.oldLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR;
    barrier.newLayout = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL;

Similarly, in VK_KHR_create_renderpass2, there are extension structures where you can specify stencil layouts separately from the depth layout if you wish.

typedef struct VkAttachmentDescriptionStencilLayout {
    VkStructureType sType;
    void*          pNext;
    VkImageLayout      stencilInitialLayout;
    VkImageLayout      stencilFinalLayout;
} VkAttachmentDescriptionStencilLayout;

typedef struct VkAttachmentReferenceStencilLayout {
    VkStructureType sType;
    void*          pNext;
    VkImageLayout  stencilLayout;
} VkAttachmentReferenceStencilLayout;

Like image memory barriers, it is possible to express layout transitions that only occur in either depth or stencil attachments.

VK_KHR_spirv_1_4

Each core Vulkan version has targeted a specific SPIR-V version. For Vulkan 1.0, we have SPIR-V 1.0. For Vulkan 1.1, we have SPIR-V 1.3, and for Vulkan 1.2 we have SPIR-V 1.5.

SPIR-V 1.4 was an interim version between Vulkan 1.1 and 1.2 which added some nice features, but the usefulness of this extension is largely meant for developers who like to target SPIR-V themselves. Developers using GLSL or HLSL might not find much use for this extension. Some highlights of SPIR-V 1.4 that I think are worth mentioning are listed here.

OpSelect between composite objects

OpSelect before SPIR-V 1.4 only supports selecting between scalars and vectors. SPIR-V 1.4 thus allows you to express this kind of code easily with a simple OpSelect:

    MyStruct s = cond ? MyStruct(1, 2, 3) : MyStruct(4, 5, 6);

OpCopyLogical

There are scenarios in high-level languages where you load a struct from a buffer and then place it in a function variable. If you have ever looked at SPIR-V code for this kind of scenario, glslang would copy each element of the struct one by one, which generates bloated SPIR-V code. This is because the struct type that lives in a buffer and a struct type for a function variable are not necessarily the same. Offset decorations are the major culprits here. Copying objects in SPIR-V only works when the types are exactly the same, not “almost the same”. OpCopyLogical fixes this problem where you can copy objects of types which are the same except for decorations.

Advanced loop control hints

SPIR-V 1.4 adds ways to express partial unrolling, how many iterations are expected, and such advanced hints, which can help a driver optimize better using knowledge it otherwise would not have. There is no way to express these in normal shading languages yet, but it does not seem difficult to add support for it.

Explicit look-up tables

Describing look-up tables was a bit awkward in SPIR-V. The natural way to do this in SPIR-V 1.3 is to declare an array with private storage scope with an initializer, access chain into it and load from it. However, there was never a way to express that a global variable is const, which relies on compilers to be a little smart. As a case study, let us see what glslang emits when using Vulkan 1.1 target environment:

#version 450

layout(location = 0) out float FragColor;
layout(location = 0) flat in int vIndex;

const float LUT[4] = float[](1.0, 2.0, 3.0, 4.0);

void main()
{
    FragColor = LUT[vIndex];
}

%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%16 = OpConstantComposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4

This is super weird code, but it is easy for compilers to promote to a LUT. If the compiler can prove there are no readers before the OpStore, and only one OpStore can statically happen, compiler can optimize it to const LUT.

%indexable = OpVariable %_ptr_Function__arr_float_uint_4 Function
OpStore %indexable %16
%24 = OpAccessChain %_ptr_Function_float %indexable %index
%25 = OpLoad %float %24

In SPIR-V 1.4, the NonWritable decoration can also be used with Private and Function storage variables. Add an initializer, and we get something that looks far more reasonable and obvious:

OpDecorate %indexable NonWritable
%16 = OpConstantComposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4

// Initialize an array with a constant expression and mark it as NonWritable.
// This is trivially a LUT.
%indexable = OpVariable %_ptr_Function__arr_float_uint_4 Function %16
%24 = OpAccessChain %_ptr_Function_float %indexable %index
%25 = OpLoad %float %24

VK_KHR_shader_subgroup_extended_types

This extension fixes a hole in Vulkan subgroup support. When subgroups were introduced, it was only possible to use subgroup operations on 32-bit values. However, with 16-bit arithmetic getting more popular, especially float16, there are use cases where you would want to use subgroup operations on smaller arithmetic types, making this kind of shader possible:

#version 450

// subgroupAdd
#extension GL_KHR_shader_subgroup_arithmetic : require

For FP16 arithmetic:

#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require

For subgroup operations on FP16:

#extension GL_EXT_shader_subgroup_extended_types_float16 : require

layout(location = 0) out f16vec4 FragColor;
layout(location = 0) in f16vec4 vColor;

void main()
{
    FragColor = subgroupAdd(vColor);
}

VK_KHR_imageless_framebuffer

In most engines, using VkFramebuffer objects can feel a bit awkward, since most engine abstractions are based around some idea of:

MyRenderAPI::BindRenderTargets(colorAttachments, depthStencilAttachment)

In this model, VkFramebuffer objects introduce a lot of friction, since engines would almost certainly end up with either one of two strategies:

  • Create a VkFramebuffer for every render pass, free later.
  • Maintain a hashmap of all observed attachment and render-pass combinations.

Unfortunately, there are some … reasons why VkFramebuffer exists in the first place, but VK_KHR_imageless_framebuffer at least removes the largest pain point. This is needing to know the exact VkImageViews that we are going to use before we actually start rendering.

With imageless frame buffers, we can defer the exact VkImageViews we are going to render into until vkCmdBeginRenderPass. However, the frame buffer itself still needs to know about certain metadata ahead of time. Some drivers need to know this information unfortunately.

First, we set the VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT flag in vkCreateFramebuffer. This removes the need to set pAttachments. Instead, we specify some parameters for each attachment. We pass down this structure as a pNext:

typedef struct VkFramebufferAttachmentsCreateInfo {
    VkStructureType                        sType;
    const void*                                pNext;
    uint32_t                                   attachmentImageInfoCount;
    const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
} VkFramebufferAttachmentsCreateInfo;

typedef struct VkFramebufferAttachmentImageInfo {
    VkStructureType   sType;
    const void*       pNext;
    VkImageCreateFlags flags;
    VkImageUsageFlags usage;
    uint32_t          width;
    uint32_t          height;
    uint32_t          layerCount;
    uint32_t          viewFormatCount;
    const VkFormat*   pViewFormats;
} VkFramebufferAttachmentImageInfo;

Essentially, we need to specify almost everything that vkCreateImage would specify. The only thing we avoid is having to know the exact image views we need to use.

To begin a render pass which uses imageless frame buffer, we pass down this struct in vkCmdBeginRenderPass instead:

typedef struct VkRenderPassAttachmentBeginInfo {
    VkStructureType   sType;
    const void*       pNext;
    uint32_t          attachmentCount;
    const VkImageView* pAttachments;
} VkRenderPassAttachmentBeginInfo;

Conclusions

Overall, I feel like this extension does not really solve the problem of having to know images up front. Knowing the resolution, usage flags of all attachments up front is basically like having to know the image views up front either way. If your engine knows all this information up-front, just not the exact image views, then this extension can be useful. The number of unique VkFramebuffer objects will likely go down as well, but otherwise, there is in my personal view room to greatly improve things.

In the next blog on the new Vulkan extensions, I explore 'legacy support extensions.'

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 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...