Quantcast
Jump to content


Recommended Posts

Posted

2021-06-28-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.

As I mentioned previously, 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. These extensions will be available across various Android smartphones, including the new 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.

I have already discussed two of these extensions in previous blogs - Maintenance Extensions and Legacy Support Extensions. However, there are three further Vulkan extensions for Android that I believe are ‘game changers’. In the first of three blogs, I will explore these individual game changer extensions – what they do, why they can be useful and how to use them. The goal here is to not provide complete samples, but there should be enough to get you started. The first Vulkan extension is ‘Descriptor Indexing.’ Descriptor indexing can be available in handsets prior to Android R release. To check what Android devices are available with 'Descriptor Indexing' check here. You can also directly view the Khronos Group/ Vulkan samples that are relevant to this blog here.

VK_EXT_descriptor_indexing

Introduction

In recent years, we have seen graphics APIs greatly evolve in their resource binding flexibility. All modern graphics APIs now have some answer to how we can access a large swathes of resources in a shader.

Bindless

A common buzzword that is thrown around in modern rendering tech is “bindless”. The core philosophy is that resources like textures and buffers are accessed through simple indices or pointers, and not singular “resource bindings”. To pass down resources to our shaders, we do not really bind them like in the graphics APIs of old. Simply write a descriptor to some memory and a shader can come in and read it later. This means the API machinery to drive this is kept to a minimum.

This is a fundamental shift away from the older style where our rendering loop looked something like:

render_scene() {
    foreach(drawable) {
        command_buffer->update_descriptors(drawable);
        command_buffer->draw();
    }
}

Now it looks more like:

render_scene() {
    command_buffer->bind_large_descriptor_heap();
    large_descriptor_heap->write_global_descriptors(scene, lighting, shadowmaps);
    foreach(drawable) {
        offset = large_descriptor_heap->allocate_and_write_descriptors(drawable);  
        command_buffer->push_descriptor_heap_offsets(offset);
        command_buffer->draw();
    }
}

Since we have free-form access to resources now, it is much simpler to take advantage of features like multi-draw or other GPU driven approaches. We no longer require the CPU to rebind descriptor sets between draw calls like we used to.

Going forward when we look at ray-tracing, this style of design is going to be mandatory since shooting a ray means we can hit anything, so all descriptors are potentially used. It is useful to start thinking about designing for this pattern going forward.

The other side of the coin with this feature is that it is easier to shoot yourself in the foot. It is easy to access the wrong resource, but as I will get to later, there are tools available to help you along the way.

VK_EXT_descriptor_indexing features

This extension is a large one and landed in Vulkan 1.2 as a core feature. To enable bindless algorithms, there are two major features exposed by this extension.

Non-uniform indexing of resources

How resources are accessed has evolved quite a lot over the years. Hardware capabilities used to be quite limited, with a tiny bank of descriptors being visible to shaders at any one time. In more modern hardware however, shaders can access descriptors freely from memory and the limits are somewhat theoretical.

Constant indexing

Arrays of resources have been with us for a long time, but mostly as syntactic sugar, where we can only index into arrays with a constant index. This is equivalent to not using arrays at all from a compiler point of view.

layout(set = 0, binding = 0) uniform sampler2D Textures[4];
const int CONSTANT_VALUE = 2;
color = texture(Textures[CONSTANT_VALUE], UV);

HLSL in D3D11 has this restriction as well, but it has been more relaxed about it, since it only requires that the index is constant after optimization passes are run.

Dynamic indexing

As an optional feature, dynamic indexing allows applications to perform dynamic indexing into arrays of resources. This allows for a very restricted form of bindless. Outside compute shaders however, using this feature correctly is quite awkward, due to the requirement of the resource index being dynamically uniform.

Dynamically uniform is a somewhat intricate subject, and the details are left to the accompanying sample in KhronosGroup/Vulkan-Samples.

Non-uniform indexing

Most hardware assumes that the resource index is dynamically uniform, as this has been the restriction in APIs for a long time. If you are not accessing resources with a dynamically uniform index, you must notify the compiler of your intent.

The rationale here is that hardware is optimized for dynamically uniform (or subgroup uniform) indices, so there is often an internal loop emitted by either compiler or hardware to handle every unique index that is used. This means performance tends to depend a bit on how divergent resource indices are.

#extension GL_EXT_nonuniform_qualifier : require
layout(set = 0, binding = 0) uniform texture2D Tex[];
layout(set = 1, binding = 0) uniform sampler Sampler;
color = texture(nonuniformEXT(sampler2D(Tex[index], Sampler)), UV);

In HLSL, there is a similar mechanism where you use NonUniformResourceIndex, for example.

Texture2D<float4> Textures[] : register(t0, space0);
SamplerState Samp : register(s0, space0);
float4 color = Textures[NonUniformResourceIndex(index)].Sample(Samp, UV);

All descriptor types can make use of this feature, not just textures, which is quite handy! The nonuniformEXT qualifier removes the requirement to use dynamically uniform indices. See the code sample for more detail.

Update-after-bind

A key component to make the bindless style work is that we do not have to … bind descriptor sets all the time. With the update-after-bind feature, we effectively block the driver from consuming descriptors at command recording time, which gives a lot of flexibility back to the application. The shader consumes descriptors as they are used and the application can freely update descriptors, even from multiple threads.

To enable, update-after-bind we modify the VkDescriptorSetLayout by adding new binding flags. The way to do this is somewhat verbose, but at least update-after-bind is something that is generally used for just one or two descriptor set layouts throughout most applications:

VkDescriptorSetLayoutCreateInfo info = { … };
info.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT;
const VkDescriptorBindingFlagsEXT flags =
    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT |    
    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT |
    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT |
    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT;
VkDescriptorSetLayoutBindingFlagsCreateInfoEXT binding_flags = { … };
binding_flags.bindingCount = info.bindingCount;
binding_flags.pBindingFlags = &flags;
info.pNext = &binding_flags;

For each pBinding entry, we have a corresponding flags field where we can specify various flags. The descriptor_indexing extension has very fine-grained support, but UPDATE_AFTER_BIND_BIT and VARIABLE_DESCRIPTOR_COUNT_BIT are the most interesting ones to discuss.

VARIABLE_DESCRIPTOR_COUNT deserves special attention as it makes descriptor management far more flexible. Having to use a fixed array size can be somewhat awkward, since in a common usage pattern with a large descriptor heap, there is no natural upper limit to how many descriptors we want to use. We could settle for some arbitrarily high limit like 500k, but that means all descriptor sets we allocate have to be of that size and all pipelines have to be tied to that specific number. This is not necessarily what we want, and VARIABLE_DESCRIPTOR_COUNT allows us to allocate just the number of descriptors we need per descriptor set. This makes it far more practical to use multiple bindless descriptor sets.

When allocating a descriptor set, we pass down the actual number of descriptors to allocate:

VkDescriptorSetVariableDescriptorCountAllocateInfoEXT variable_info = { … };
variable_info.sType =
        VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT;
variable_info.descriptorSetCount = 1;
allocate_info.pNext = &variable_info;
variable_info.pDescriptorCounts = &NumDescriptorsStreaming;
VK_CHECK(vkAllocateDescriptorSets(get_device().get_handle(), &allocate_info, 
        &descriptors.descriptor_set_update_after_bind));

GPU-assisted validation and debugging

When we enter the world of descriptor indexing, there is a flipside where debugging and validation is much more difficult. The major benefit of the older binding models is that it is fairly easy for validation layers and debuggers to know what is going on. This is because the number of available resources to a shader is small and focused.

With UPDATE_AFTER_BIND in particular, we do not know anything at draw time, which makes this awkward.

It is possible to enable GPU assisted validation in the Khronos validation layers. This lets you catch issues like:

"UNASSIGNED-Descriptor uninitialized: Validation Error: [ UNASSIGNED-Descriptor uninitialized ] Object 0: handle = 0x55625acf5600, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0x893513c7 | Descriptor index 67 is uninitialized__.  Command buffer (0x55625b184d60). Draw Index 0x4. Pipeline (0x520000000052). Shader Module (0x510000000051). Shader Instruction Index = 59.  Stage = Fragment.  Fragment coord (x,y) = (944.5, 0.5).  Unable to find SPIR-V OpLine for source information.  Build shader with debug info to get source information."

Or:

"UNASSIGNED-Descriptor uninitialized: Validation Error: [ UNASSIGNED-Descriptor uninitialized ] Object 0: handle = 0x55625acf5600, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0x893513c7 | Descriptor index 131 is uninitialized__.  Command buffer (0x55625b1893c0). Draw Index 0x4. Pipeline (0x520000000052). Shader Module (0x510000000051). Shader Instruction Index = 59.  Stage = Fragment.  Fragment coord (x,y) = (944.5, 0.5).  Unable to find SPIR-V OpLine for source information.  Build shader with debug info to get source information."

RenderDoc supports debugging descriptor indexing through shader instrumentation, and this allows you to inspect which resources were accessed. When you have several thousand resources bound to a pipeline, this feature is critical to make any sense of the inputs.

If we are using the update-after-bind style, we can inspect the exact resources we used.

In a non-uniform indexing style, we can inspect all unique resources we used.

Conclusion

Descriptor indexing unlocks many design possibilities in your engine and is a real game changer for modern rendering techniques. Use with care, and make sure to take advantage of all debugging tools available to you. You need them.

This blog has explored the first Vulkan extension game changer, with two more parts in this game changer blog series still to come. The next part will focus on ‘Buffer Device Address’ and how developers can use this new feature to enhance their games.

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



  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

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 Samsung Newsroom
      Samsung Electronics today announced that Samsung TV Plus, its leading free ad-supported streaming TV (FAST) service, will live stream the 2024 MAMA AWARDS, one of the world’s premier K-pop events. The MAMA AWARDS will be available to fans around the world through Samsung TV Plus’s exclusive K-pop channel, launched earlier this month, marking a major milestone in Samsung’s expansion of global streaming offerings.
       
      The event will take place at the Dolby Theatre in Los Angeles on November 21 and at Kyocera Dome Osaka from November 22-23 local time. Samsung TV Plus will air all three days of the awards ceremony.
       
      “Through strategic partnerships, we’re expanding Samsung TV Plus’s role as a key platform for bringing diverse, high-quality content to audiences worldwide,” said Yonghoon Choi, Executive Vice President of the Visual Display Business at Samsung Electronics. “We’re committed to making Samsung TV Plus a global gateway for premium entertainment, delivering unique local and international content that resonates with viewers everywhere.”
       
       
      Expanding K-Pop Access Through Samsung TV Plus’s New Exclusive Channel

       
      Launched on November 6, “K-POP by CJ ENM” — available exclusively on Samsung TV Plus — brings a rich selection of K-pop content to audiences across North America, Europe and Latin America.1 This new channel offers a diverse mix of performances, music videos, artist interviews and behind-the-scenes footage — including exclusive programming from CJ ENM’s Studio CHOOM, which showcases iconic K-artist choreography up close and in a minimalist setting.
       
      With popular artists like TOMORROW X TOGETHER, aespa, ENHYPEN, Anderson .Paak and J.Y. Park — as well as the genre’s most-watched videos — the K-pop channel establishes Samsung TV Plus as a global leader in streaming K-content and connecting fans worldwide with top K-pop performances.
       
       
      Celebrating a Decade of Streaming Innovation With Samsung TV Plus
      As Samsung TV Plus celebrates its 10th anniversary, it has grown into a powerful force in streaming, with more than 88 million active users2 on Samsung smart TVs powered by Tizen OS. With the recent addition of over 4,000 hours of Korean content in the U.S., Samsung TV Plus has also solidified itself as a leading destination for K-content enthusiasts across the globe.
       
      Through exclusive content partnerships and the inclusion of high-quality K-content like the MAMA AWARDS, Samsung TV Plus continues to deliver unique entertainment experiences to global audiences and set a new standard in free streaming.
       
       
      1 The K-POP by CJ ENM channel is available exclusively on Samsung TV Plus in the U.S., Canada, UK, France, Germany, Italy, Spain, Brazil and Mexico
      2 As of September, there are more than 88 million active users on Samsung smart TVs powered by Tizen OS.
      View the full article
    • By Samsung Newsroom
      Samsung Electronics today announced the installation of its Outdoor LED Signage XHB Series (P8) at the flagship location of Shinsegae Department Store in Seoul, South Korea. Unveiled during the “2024 Lights Up SEOUL, KOREA” event today, the installation is set to establish Myeongdong Square in Seoul as Korea’s new premier landmark, featuring a stunning media lighting display that illuminates the heart of Seoul’s iconic shopping district.
       
      “Our LED displays present unlimited possibilities for places like Myeongdong to bear new elements of cultural significance,” said Hoon Chung, Executive Vice President of the Visual Display Business at Samsung Electronics. “This installation gives us an opportunity to showcase in the biggest way possible that our outdoor digital displays are built to engage, built to deliver impactful content, and built to last.”
       
      Located within the Myeongdong Special Tourist Zone Area, Shinsegae Department Store is uniquely positioned as a free outdoor advertising zone that enables creative and expansive installations. Samsung’s massive outdoor LED signage featuring an anamorphic 8K display, wraps around the entire outer wall of the building, measuring 71.8 meters in width and 17.9 meters in height — equivalent in size to three basketball courts.
       

       
      Spanning a total area of 1,285 square meters, the display is designed for resilience in harsh weather, featuring an IP66 rating for dust and water resistance, and UL 48 and UL 746C certifications1 for year-round durability. The installation is engineered for high visibility and vibrant color accuracy, with support for HDR10+ technology to deliver sharp contrast and rich visuals. With a max brightness of 8,000 nits,2 the display ensures exceptional clarity even in direct sunlight. Its high refresh rate of 7,680Hz minimizes flicker and the moiré effect,3 ensuring a stable display that remains visually crisp, even through camera lenses.
       
      Samsung’s track record of success with digital signage spans prominent venues worldwide. In South Korea, Samsung provided the country’s largest ever high-definition LED signage to Coex SM Town, while transformative installations at New York’s Citi Field and Houston’s Minute Maid Park set new standards for in-stadium displays. At Citi Field, Samsung installed the largest scoreboard in professional baseball, featuring over 29,800 square feet of LED screens that immerse fans in the action from every angle. Similarly, at Minute Maid Park, Samsung’s high-definition LED technology redefined the fan experience with massive outdoor displays and a dynamic new main scoreboard, all designed to enhance the excitement of the game.
       

       
      In Myeongdong, the new installation will not only host engaging advertisements and dynamic video content, but also transform into a breathtaking annual Christmas media façade, creating a festive atmosphere for visitors.
       
      “Shinsegae’s media façade, beloved by global customers for the past 10 years, has now been recreated as Shinsegae Square. This transformation paves the way for it to become an iconic landmark of Seoul, making it not only a must-visit attraction but also a central hub for K-culture. We are excited to partner with Samsung to bring our customers unique experiences that blend heritage and digital technology,” Shinsegae spokesperson said.
       
      Samsung’s Outdoor LED Signage is renowned for exceptional performance in demanding environments, evidenced by award-winning deployments at iconic venues such as Inglewood, California’s SoFi Stadium, which boasts the world’s largest LED videoboard ever built for sports, and the Formula 1 Las Vegas Grand Prix, where Samsung installed a 481-foot-long rooftop LED display in the shape of the F1 logo. As Myeongdong evolves into a global tourism destination, Samsung continues to lead with solutions that inspire and engage.
       
       
       
      1 UL 48 and UL 746C certifications, issued by Underwriters Laboratories (UL), verify compliance with safety standards for electric signs and durability of materials in outdoor environments, including UV and weather resistance.
      2 Maximum brightness measured post-calibration; actual values may vary with conditions.
      3 The moiré effect is an undesirable visual phenomenon that occurs when repetitive patterns, such as lines, are captured in photographs.
      View the full article
    • By Samsung Newsroom
      Samsung Wallet is introducing a new feature called "Generic Card" for partners who cannot use other card types to fulfill their business requirements. This provides flexibility to modify various field labels for the card, according to the partners’ business needs.
      Other cards, such as boarding passes and coupons serve a specific purpose, and their field labels cannot be modified. However, with a generic card, the label can be modified so it can be used for multiple purposes.
      In this article, you learn how to modify a generic card to use it as an insurance card. We will explain the details specification with example of the generic card. At the end of the article a guide will be provided to implement this card for your reference, to help you modify your generic card according to your needs.
      Card setup
      Before you begin creating a new card template, log in to the Samsung Wallet Partner site and create a generic card.
      Log in to the Samsung Wallet Partner site. Go to the Wallet Cards and then Create Wallet Card. For more details about creating a card, check the Manage Wallet Cards documentation. Select Generic Card from the available card templates. Modify the card information. When you have finished editing card information, launch the card to complete card setup. For more information on how to launch the card, see Launch Wallet Cards.
      Template editor
      Use the template editor to modify the card template.

      From the "CardArt" view, you can modify the card color, set a background image or change the logo image properties. From the "Enlarge" view, you can modify the {{text1}} and {{text2}} labels. However, only the label itself can be changed in the Template Editor. To set the label value, you need to update the JSON file. From the "Detail" view, you can modify the "TextGroup" and "AppLink" properties. Modify the text label according to your needs. It is also possible to add new text fields, with a maximum of 12 text fields allowed. After every modification, click Save. Finally, apply all changes by clicking Apply. If you want to preview your changes, just click Preview.
      Add to Samsung Wallet
      Now that the card has been created in the site, it is ready to be distributed to fulfill your business needs.
      Implement the "Add to Samsung Wallet" functionality to the platform where you are planning to distribute the cards. When users click "Add to Samsung Wallet," the card is added to the Wallet application on the user’s Galaxy device. This functionality can be added through the application/mobile web, MMS, or email. Additionally, you can use a QR code on a computer web browser and KIOSK. Samsung provides a Codelab guide for developers so that they can easily understand the implementation. For additional information on the Codelab guide, read Utilize the Add to Samsung Wallet service for digital cards. Further details can also be found in the Implementing ATW button documentation. Card specifications
      To complete the "Add to Samsung Wallet" button implementation, you must generate the Card Data token and create a final URL. For more information, see Add to Samsung Wallet. Let’s start by reviewing the generic card specifications to generate the Card Data token. The generic card follows the specifications below. For more information on them, see the Generic Card section.
      Name
      Description
      Title
      The main title of the generic card. In the sample card, the title is "Card Title." In the image below, the title is "Insurance Identification Card."

      Subtitle
      The subtitle of the generic card. In the sample card, it is "Card Subtitle".
      providerName
      Use this field to set the card provider name. For more information, check the Card JSON Example below. However, the provider name depends on your card type and should be modified accordingly.
      eventId
      Enter an ID as an event identifier. In case your card is prepaid, for example a gift card, or if you have vouchers to events, such as concerts, it is possible to define an event ID. For instance: "event-001".
      groupingId
      Enter an identifier to group related cards.
      startDate
      Enter the starting date and the epoch timestamp in milliseconds.
      startDate.relativeNotiTime
      Enter the amount of time within which you want to provide a notification to the user. The notification time is the relative time from the startDate. The value can be up to 2880 milliseconds.
      endDate
      Enter the end date and the epoch timestamp in milliseconds.
      endDate.relativeNotiTime
      Enter the amount of time within which you want to provide a notification to the user. The notification time is the relative time from the endDate. The value can be up to 2880 milliseconds.
      logoImage
      Set the logo image URL. The file size must not exceed 256 KB. Also this image can be set from the Template Editor.

      logoImage.darkUrl
      Set the logo image URL for the dark mode. The file size must not exceed 256 KB.
      logoImage.lightUrl
      Set the logo image URL for the light mode. The file size must not exceed 256 KB.
      bgImage
      Set the background image URL. The file size must not exceed 512 KB.
      text{i}
      Set the label-text value that should be displayed for each field containing the details of your card. The label is defined in the Template Editor, shown in the image below.


      To set the value of the label, update the JSON file.

      image{i}
      Enter the image URL, such as: "https://www.samsung.com/images/image1.png". This URL is just an example, you must update it according to your needs. This field only works in Generic Card Type3. We have used a Type1 card in the example. So this field in the example JSON has no effect on the card. You can find all three card type sample UIs here.
      image{i}.lightUrl
      Enter the image URL in light mode, such as: "https://www.samsung.com/images/light.png". This URL is just an example, you must update it according to your needs.
      image{i}.darkUrl
      Enter the image URL in dark mode, such as: "https://www.samsung.com/images/dark.png". This URL is just an example, you must update it according to your needs.
      serial{i}
      Set the serial for barcode or QR code.
      serial{i}.serialType
      Serial presentation type. For more information on the Presentation Types (serialType), see References.
      serial{i}.ptFormat
      Set the presentation format. For more details on the presentation formats (ptFormat), see References.
      serial{i}.ptSubFormat
      Set the presentation subformat here. For more details on the barcode formats (ptSubFormat), see References.
      serial{i}.errorCorrectionLevel
      Set the error correction levels in this field. The amount of redundancy or error correction data included in the code varies. QR codes offer four levels of error correction: L, M, Q, and H. The QR field looks like the following in your card:
      privacyModeYn
      Set the user authentication if required. Set the value to "Y" or "N"
      bgColor
      Set the card art color.
      fontColor
      Set the card art font color.
      noNetworkSupportYn
      Set the value to "Y" to open the wallet card when under the "No network" status. Otherwise, set the value to "N"
      noticeDesc
      Set the the notice description here. See the image below of how it is added to card.

      appLinkLogo
      Add the application link logo URL in this field.
      appLinkName
      Add the application link name in this field.
      appLinkData
      Add the application link URL in this field.

      locations
      List of locations where the card will be used. This information can be used to provide location-based services. Samsung Wallet can use this information to show maps, names of places, and addresses. For more information on the locations field and JSON format, check References.

      Card JSON example
      In previous sections, you have learned about the card specifications. Next, let’s implement the generic card fields according to your needs. In this section, as the aim is to create an insurance card, you must use the fields accordingly.
      Samsung provides a specifically formatted JSON structure. You need to configure the card data objects within the structure’s data array. For more details, see the Generic Card section.
      { "card": { "type": "generic", "subType": "others", "data": [ { "createdAt": 1709712961000, "updatedAt": 1709712961000, "language": "en ", "refId": "933533e1-9284-461c-905f-bc177526a8d1", "attributes": { "title": "Insurance Identification Card", "subtitle": "Insurance Card", "providerName": "Samsung Insurance Co.", "eventId": "1", "groupingId":"1", "startDate": 1731299205000, "startDate.relativeNotiTime": 500, "endDate": 1731320805000, "endDate.relativeNotiTime": 400, "logoImage": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "logoImage.darkUrl": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "logoImage.lightUrl": "https://us-cdn-gpp.stg.mcsvc.samsung.com/mcp25/resource/2023/12/20/55ea769f-d14d-4c47-94cc-50cade36cdd9.png", "bgImage": "", "text1": "1234567", "text2": "Samsung Insurance Co.", "text3": "Jaqueline M", "text4": "Samsung Motors 2014 Galaxy5", "text5": "11SAM23SUNG3T", "text6": "(031)000-1235", "image1": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "image1.darkUrl": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "image1.lightUrl": "https://us-cdn-gpp.mcsvc.samsung.com/mcp25/resource/2024/3/5/b9445e3f-2ef5-4d81-9fca-b7a8a7cd599f.png", "serial1.value": ">1180MM2241B7C 0000000000000298060000000000 0 090870907 ", "serial1.serialType": "QRCODE", "serial1.ptFormat": "QRCODE", "serial1.ptSubFormat": "QR_CODE", "serial1.errorCorrectionLevel": "M", "privacyModeYn": "Y", "bgColor": "#3396ff", "fontColor": "#FFFFFF", "noNetworkSupportYn": "N", "noticeDesc": "{\"count\":2,\"info\":[{\"title\":\"NOTICE1\",\"content\":[\"DESCRIPTION1\",\"DESCRIPTION2\"]},{\"title\":\"NOTICE2\",\"content\":[\"DESCRIPTION1\",\"DESCRIPTION2\"]}]}", "appLinkLogo": "https://www.samsung.com/logo.png", "appLinkData": "https://www.samsung.com/", "appLinkName": "Samsung Insurance Co.", "locations": "[{\"lat\": 37.2573276, \"lng\": 127.0528215, \"address\": \"Suwon\", \"name\": \"Digital City\"}]" } } ] } } Generic card testing with the "Add to Wallet" test tool
      Now, you can test the generic card with the "Add to Wallet" test tool provided by Samsung. Just follow these steps:
      Sign in to the Add to Wallet test tool. For more information, see the Samsung Wallet Test Tool. Enter the private key in the "Enter Partner Private Key" field. In this tool, you find all cards that you have created from the Samsung Wallet Partner site in the "Select Card" section. For more information, see the Samsung Wallet Partner site. Select the generic card that you have just created. Now select JSON from the Data field and modify the existing JSON data fields according to the card specification details. After modifying the JSON data fields, check if the JSON is valid. Finally, if the private key is valid, the "Add to Samsung Wallet" button becomes active at the bottom of the page. Then, just click Add to Samsung Wallet to finish adding the generic card. If you use the provided example JSON and add the card to the wallet, the card looks like the following:

      Server integration
      In this step, server configuration is needed because the generated JWT token expires after 30 seconds. Developers are advised to only generate this token after a user has clicked the "Add to Wallet" button. As you have already performed testing with the "Add to Wallet" test tool, you need to configure your server.
      For more information on the implementation of both the "Add to Samsung Wallet" button and server-side logic, see Implementing "Add to Wallet" in an Android Application. This article explains how you can distribute your card with your Android application and how to generate the JWT token at runtime, after pressing the "Add to Samsung Wallet" button.
      Conclusion
      You have now learned the basics for how to set up a generic card and test it for your business needs. In case you have further questions, contact Samsung Developer Support.
      Related resources
      Utilize the Add to Samsung Wallet service for digital cards Introduce Loyalty Cards to Your Application with Samsung Wallet Implementing "Add to Wallet" in an Android Application Seamlessly Integrate "Add to Wallet" for Samsung Wallet View the full blog at its source
    • By Samsung Newsroom
      Samsung Electronics today announced that its proprietary cryptography module, Samsung CryptoCore,1 has earned the prestigious FIPS 140-3 certification2 from the National Institute of Standards and Technology (NIST). This certification underscores Samsung’s commitment to providing industry-leading security and data protection for Smart TV users.
       
      “As home entertainment systems become more connected, it becomes critical for technology companies to safeguard the personal data that enables the seamless connectivity enjoyed by so many,” said Yongjae Kim, Executive Vice President and Head of the R&D Team, Visual Display Business at Samsung Electronics. “By integrating the FIPS 140-3-certified CryptoCore into our Smart TVs, Samsung is taking our commitment to secure home entertainment a step further and ensuring that our users can freely experience the value of our products.”
       
      Beginning in 2025, Samsung CryptoCore will be fully integrated into Tizen OS,3 Samsung’s Smart TV operating system, enhancing the security of key products such as TVs, monitors and digital signage. With Samsung CryptoCore embedded in Tizen OS, personal data linked to Samsung accounts will be securely encrypted, SmartThings authentication information will be protected from external hacking threats and content viewed on TVs will benefit from enhanced copyright protection.
       
      Since 2015, Samsung has equipped its Smart TVs with Samsung Knox,4 a security platform that has earned Common Criteria (CC) certification5 for 10 consecutive years. But with its newly acquired FIPS 140-3 certification, Samsung has strengthened its defenses against hacking and data breaches even further, proactively protecting personal information with advanced encryption technology.
       
      Recognized by governments in 10 countries,6 the FIPS 140-3 certification requires comprehensive testing of cryptographic modules to ensure their security, integrity and reliability. For users, this means Samsung Smart TVs offer cutting-edge protection against privacy breaches, allowing them to enjoy their content, connect smart devices and engage with IoT services securely and without concerns.
       


       
      1 Samsung CryptoCore is a software library that encrypts and decrypts data during both transmission and storage.
      2 Federal Information Processing Standard (FIPS) 140-3 covers the security requirements for cryptographic modules.
      3 Tizen OS 9.0.
      4 Samsung Knox provides privacy protection on its Smart TVs through features like Tizen OS Monitoring, Phishing Site Blocking and Knox Vault. Knox Vault is available only on the QN900D and QN800D models.
      5 Common Criteria (CC) certification is a global security standard recognized by 31 countries for IT product integrity.
      6 Recognized in the United States, Canada, UK, Germany, France, South Korea, Japan, Singapore, Australia and New Zealand.
      View the full article
    • By Samsung Newsroom
      Start Date Nov 21, 2024 - Nov 21, 2024
      Location Online
      Samsung Developer Conference Korea 2024 (SDC24 Korea) will be held online on November 21st.
      Since its inception in 2014, SDC24 Korea has been emphasizing the importance of software by expanding from open source to all areas of software development. It's now celebrating its 11th anniversary.
      This year's SDC24 Korea features a variety of exciting events including keynote speeches from our CTO and other renowned speakers as well as more than 29 technical sessions.
      Furthermore, we are excited to share that SDC24 Korea will incorporate content from the recent SDC24 conference held in the US on October 3rd (US time), providing attendees with even more opportunities to learn, connect, and engage.
      Anyone can attend SDC24 Korea through pre-registration, and keynotes and major sessions will be announced on the SDC24 Korea website. For more information, please visit the SDC24 Korea website!

      Visit SDC24 Website View the full blog at its source





×
×
  • Create New...