Issue 3965 in angleproject: Implement EGL_EXT_protected_content

0 views
Skip to first unread message

j.vi… via monorail

unread,
Oct 4, 2019, 12:23:57 PM10/4/19
to angleproj...@googlegroups.com
Status: Accepted
Owner: j.vi...@samsung.com
CC: m.ma...@samsung.com
OS: All
Priority: Medium
Renderer: GLES Vulkan DesktopGL
Type: Enhancement

New issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965

EGL extension EGL_EXT_protected_content

Mark Surfaces, Images and Contexts as protected to support DRM. Protected content is not allowed to be read by unprotected context.

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

j.vi… via monorail

unread,
Jan 28, 2021, 7:00:09 PM1/28/21
to angleproj...@googlegroups.com
Updates:
Cc: jmad...@chromium.org syou...@google.com

Comment #1 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c1

(No comment was entered for this change.)

j.vi… via monorail

unread,
Jan 28, 2021, 7:08:50 PM1/28/21
to angleproj...@googlegroups.com

Comment #2 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c2

When I was adding priorities to VkQueues it was difficult because the queues were embedded in RendererVk. Now with EGL_EXT_protected_content I need to add Queues that are protected and some that are not. So as there is a connection of ContextVk to RenderVk - all the protected memory objects are embedded in the RendererVk making it hard/impossible to have a protected contexts and un protected contexts.

So, not that I want to do this, and this is not well thought out, but what if we divide the RendererVk, with RendererVk having all the driver state we query, but we separate out the Queues to new objects that have all the associated objects - commands, pools, memory allocation, queuing/submitting and the like. Then we can have separate Queues/Families and those have their priorities but be separate as protected and not protected?

This is a open call for discussion on how I can have protected vs non-protected contexts.

syous… via monorail

unread,
Jan 29, 2021, 5:59:54 AM1/29/21
to angleproj...@googlegroups.com

Comment #3 on issue 3965 by syou...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c3

@j.vigil, that could be an idea. If you draft a design doc with more details, it would greatly help with the discussion.

j.vi… via monorail

unread,
Jan 29, 2021, 6:05:01 PM1/29/21
to angleproj...@googlegroups.com

Comment #4 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c4

I'll be uploading this extension here: https://chromium-review.googlesource.com/c/angle/angle/+/2645508
Currently just has some boilerplate info.

Draft a design - Its complex and I hesitate to make such a sweeping change. I am looking into this.

In a nutshell, currently I run into this example:

In this function, it creates a VkCommandPool, but reference to the gl::context is not available.
Here vk::Context offers no real scope into the gl:;Context. If this was a ContextVk object, then I can get from it protected and priority information.

angle::Result RendererVk::getCommandBufferOneOff(vk::Context *context,
vk::PrimaryCommandBuffer *commandBufferOut)
{
if (!mOneOffCommandPool.valid())
{
VkCommandPoolCreateInfo createInfo = {};
createInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
createInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
// if (???->isProtected())
// {
// createInfo.flags |= VK_COMMAND_POOL_CREATE_PROTECTED_BIT;
// }
ANGLE_VK_TRY(context, mOneOffCommandPool.init(mDevice, createInfo));
}

In some places the caller could pass ContextVk instead, but not everywhere so not an easy fix. So I want more ContextVk and less vk::Context.
So I'm wondering if we keep all the VkDevice information in RendererVk, and then all the VkQueue related (anything that might be allocated with a PROTECTED_BIT, or priority) be separated out, so that ContextVk references the renderer and an instance of this new object and all its sub objects.

I doubt its as simple as dividing RendererVk in two.

j.vi… via monorail

unread,
Jan 29, 2021, 6:11:29 PM1/29/21
to angleproj...@googlegroups.com

Comment #5 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c5

Maybe somethings that are in RendererVk need to be moved to ContextVk, so that PROTECTED specific objects are not embedded in RendererVk, but are held by ContextVk. IDK. Thinking out loud

j.vi… via monorail

unread,
Feb 2, 2021, 5:42:43 PM2/2/21
to angleproj...@googlegroups.com
Updates:
Status: Started

Comment #6 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c6


(No comment was entered for this change.)

jmad… via monorail

unread,
Feb 2, 2021, 9:23:24 PM2/2/21
to angleproj...@googlegroups.com

Comment #7 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c7

Hey Jeff, I didn't have time to read through this thread, but protected content IIRC will require an extension to work with ANGLE because of the bit being specific to the Vulkan device while in GL it is specific to the Context. The idea is that we could move it to the pipeline.

j.vi… via monorail

unread,
Feb 3, 2021, 11:09:19 AM2/3/21
to angleproj...@googlegroups.com

Comment #8 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c8

Yes, I have checks for the needed extensions and check for supporting protected memory. I can upload that. But I found that as I needed some objects, like the CommandPool above, need to be protected and in other contexts need to be unprotected, So there needs to be a separate protected from non protected command stream - or per gl::context/ContextVK. Along with that I need to route isProtected or ContextVk to these create function so as to get the needed PROTECTED_BIT.

jmad… via monorail

unread,
Feb 3, 2021, 11:22:31 AM2/3/21
to angleproj...@googlegroups.com

Comment #9 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c9

Jeff - which needed extensions are you referring to? I hadn't heard of the pipeline-specific protected bit extension being written yet.

j.vi… via monorail

unread,
Feb 3, 2021, 11:33:21 AM2/3/21
to angleproj...@googlegroups.com

Comment #10 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c10

Sorry, I was not referring to pipeline specific. I was referring to SurfaceCapabilities2 and SurfaceProtectedCapabilities to determine protected bit on Swapchain images. And I also have check for ProtectedMemory support in ProtectedMemoryFeatures.

jmad… via monorail

unread,
Feb 3, 2021, 11:42:30 AM2/3/21
to angleproj...@googlegroups.com

Comment #11 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c11

Jeff: these features are insufficient. We'll need a new extension and capability in the Vulkan driver.

j.vi… via monorail

unread,
Feb 3, 2021, 11:55:40 AM2/3/21
to angleproj...@googlegroups.com

Comment #12 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c12

Design Notes:

Vulkan Protected Memory - Section 10.2.3 Protected Memory

vkGetPhysicalDeviceMemoryProperties
VkMemoryPropertyFlagBits - VK_MEMORY_PROPERTY_PROTECTED_BIT - only device access

// Extension to determine support for protected memory
vkCreateDevice: VkDeviceCreateInfo -
pNext - from VkPhysicalDeviceFeatures2
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
struct VkPhysicalDeviceProtectedMemoryFeatures
member VkBool32 protectedMemory;
Add@ RendererVk::initialize
Add@ RendererVk::initFeatures
Add@ RendererVk::queryDeviceExtensionFeatures

// Extension to determine driver behavior on protection violation
pNext of VkPhysicalDeviceProperties2
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
VkPhysicalDeviceProtectedMemoryProperties
.protectedNoFault = true == driver no crash at protection violation
Add@ RendererVk::initialize

// Extension to determine if protected swapchains are supported
extension: VK_KHR_surface_protected_capabilities
pNext from struct VkSurfaceCapabilities2KHR
struct VkSurfaceProtectedCapabilitiesKHR - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
VkBool32 supportsProtected;
If supportsProtected is VK_TRUE, then creation of swapchains with the
VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR flag set must be supported for surface.
Add@ RendererVk::initialize
Add@ WindowSurfaceVk::initializeImpl

// How to create proteced swapchain
vkCreateSwapchainKHR(...)
struct VkSwapchainCreateInfoKHR - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
member VkSwapchainCreateFlagsKHR flags; - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
Add@ WindowSurfaceVk::createSwapChain

// Flag for protected Submit
vkQueueSubmit(...) - submit protected commands
VkSubmitInfo - VK_STRUCTURE_TYPE_SUBMIT_INFO
pNext: VkProtectedSubmitInfo - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
VkBool32 .protectedSubmit = true; - then all pCommandBuffers array must be protected
Add@ ContextVk::getTimestamp - is queue or commandBatch protected?
Add@ CommandProcess.cpp - InitializeSubmitInfo()
Add@ CommandQueue::submitFrame() - from context?
Add@ CommandQueue::queueSubmitOneOff() - from context
Add@ CommandQueue::queueSubmit() - already set in SubmitInfo?

// Query protected Queues
vkGetPhysicalDeviceQueueFamilyProperties(...)
VkQueueFamilyProperties.queueFlags;
VkQueueFlagBits
VK_QUEUE_PROTECTED_BIT - is set, then the queues in this queue family support the VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT bit (protected-capable queue)
From: // Provided by VK_KHR_get_physical_device_properties2
void vkGetPhysicalDeviceQueueFamilyProperties2KHR
Add@ RendererVk::initialize = need to be sure we use the protected Queue for protected work. Need to be able to select which to use

// Create protected queue
VkDeviceQueueCreateInfo
VkDeviceQueueCreateFlags flags; - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
vkGetDeviceQueue
Add@ RendererVk::initializeDevice - Probably need 2 Queues, one protected the other not. Complicated by the priority scheme.
Need to select which of the queues to use protected/non-protected and priority

// Create Protected command pool
vkCreateCommandPool(...) - command buffers from pool are protected
VkCommandPoolCreateInfo - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
VkCommandPoolCreateFlags flags; - VK_COMMAND_POOL_CREATE_PROTECTED_BIT
Add@ CommandProcessor::releaseToCommandBatch() ?
Add@ PersistentCommandPool::init() - per Context, there is a TODO here
Add@ RendererVk::getCommandBufferOneOff() - per context?, add commandBuffer?
NoAdd@? vk_wrapper.h - CreateInfo provided to init() call

// Command buffer
vkCmdExecuteCommands
const VkCommandBuffer* pCommandBuffers - must be protected, if "other" resources protected
@ CommandBuffer::executeCommands
@ vk_helpers.cpp - seems contained in PrimaryCommand.

VkMemoryType
VkMemoryPropertyFlags propertyFlags;
VkMemoryPropertyFlagBits - VK_MEMORY_PROPERTY_PROTECTED_BIT
@ VkMemoryPropertyFlags GetPreferredMemoryType - translated from GL types. Need to make sure protected is accounted for.
@ This is embedded in all the VkCreate structures.

vkAllocateMemory(...)
VkMemoryAllocateInfo - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
.memoryTypeIndex - VK_MEMORY_PROPERTY_PROTECTED_BIT
@ DeviceMemory::allocate() - all calls to this provide structure with bit
Add@ FindAndAllocateCompatibleMemory() - needs to include protected memory bit

//Android
struct AHardwareBuffer;
.usage = AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT == VK_IMAGE_CREATE_PROTECTED_BIT
Add@ GetANativeWindowBufferProperties()
Add@ NativeBufferImageSiblingAndroid::initialize
Add@ NativeBufferImageSiblingAndroid::isProtected()
Add@ HardwareBufferImageSiblingVkAndroid::initImpl()

// Create protected buffer
vkCreateBuffer(...)
struct VkBufferCreateInfo - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
member VkBufferCreateFlags flags; - VK_BUFFER_CREATE_PROTECTED_BIT
Add@ BufferVk::setExternalBufferData() - set per context
Add@ ContextVk::initialize() - set per context
Add@ OverlayVk::createFont(), OverlayVk::cullWidgets(), OverlayVk::onPresent(), OverlayVk::onPresent() - per contectVk
Add@ TransformFeedbackVk::begin()
Add@ UtilsVk::stencilBlitResolveNoShaderExport(), UtilsVk::copyImageBits()
Add@ DynamicBuffer::allocateNewBuffer(), BufferHelper::init(), BufferHelper::initExternal()
Add@ StagingBuffer::init() - per use - read or write - so a layer up or more

// Create protected Image
vkCreateImage(...)
struct VkImageCreateInfo - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
member VkImageCreateFlags flags; - VK_IMAGE_CREATE_PROTECTED_BIT
Add@ ImageHelper::initExternal() - pass in flag per use read/write?
Add@ ImageHelper::init2DStaging()
Add@ HardwareBufferImageSiblingVkAndroid::initImpl() may need to get/set protected

// Create protected ImageView
vkCreateImageView(...)
struct VkImageViewCreateInfo - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
member VkImageViewCreateFlags flags; - VK_IMAGE_CREATE_PROTECTED_BIT
Add@ ImageHelper::initLayerImageViewImpl() pass protected in per use
vkBindBufferMemory(...) & vkBindBufferMemory2
VK_BUFFER_CREATE_PROTECTED_BIT must match VK_MEMORY_PROPERTY_PROTECTED_BIT
struct VkBindBufferMemoryInfo - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
@ this isn't used in ANGLE

vkBindImageMemory(...) and vkBindImageMemory2
VK_IMAGE_CREATE_PROTECTED_BIT must match up with VK_MEMORY_PROPERTY_PROTECTED_BIT
struct VkBindImageMemoryInfo - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
@ this isn't used in ANGLE

// Commands with protected bits
vkCmdBeginQuery(...)
vkCmdBeginQueryIndexedEXT(...)
vkCmdEndQuery(...)
vkCmdEndQueryIndexedEXT(...)
! commandBuffer must not be a protected command buffer
vkCmdClearColorImage(...)
vkCmdClearDepthStencilImage(...)
vkCmdCopyImage(...), vkCmdCopyImage2KHR(...)
! image and command buffer must match on protected/unprotected
vkCmdClearAttachments(...)
! attachments and command buffer must match protected/unprotected
vkCmdFillBuffer(...)
vkCmdUpdateBuffer(...)
vkCmdCopyBuffer(...) , vkCmdCopyBuffer2KHR(...)
! commandbuffer and buffer must match protected/unprotectec
vkCmdCopyBufferToImage(...), vkCmdCopyBufferToImage2KHR(...)
vkCmdCopyImageToBuffer(...), vkCmdCopyImageToBuffer2KHR(...)
vkCmdBlitImage(...), vkCmdBlitImage2KHR(...)
vkCmdResolveImage(...), vkCmdResolveImage2KHR(...)
! commandbuffer, srcImage, dstImage must match protected/unprotected
vkCmdDraw(...)
vkCmdDrawIndexed(...)
vkCmdDrawIndirect(...)
vkCmdDrawIndirectCount(...)
vkCmdDrawIndexedIndirect(...)
vkCmdDrawIndexedIndirectCount(...)
vkCmdDrawIndirectByteCountEXT(...)
vkCmdDispatch(...)
vkCmdDispatchIndirect(...)
vkCmdDispatchBase(...)
vkCmdTraceRaysKHR((...)
vkCmdTraceRaysIndirectKHR(..)
! commandBuffer and pipeline resources must match

j.vi… via monorail

unread,
Feb 3, 2021, 11:58:48 AM2/3/21
to angleproj...@googlegroups.com

Comment #13 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c13

New extension? Please explain.

jmad… via monorail

unread,
Feb 3, 2021, 12:50:20 PM2/3/21
to angleproj...@googlegroups.com

Comment #14 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c14

Jeff: it's something that's come up in discussions with other partners. We'll need an extension that allows us to specify protected content per-pipeline instead of per-device. Other solutions have unacceptable levels of complexity.

j.vi… via monorail

unread,
Feb 3, 2021, 12:51:56 PM2/3/21
to angleproj...@googlegroups.com

Comment #15 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c15

OK, I was clearly coming to this conclusion also. Please keep me updated.

jmad… via monorail

unread,
Feb 3, 2021, 12:55:06 PM2/3/21
to angleproj...@googlegroups.com

Comment #16 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c16

Sure. FYI there is no one driving this right now and I couldn't find any record of it on the Khronos issue tracker. If you would like to move this forward it would definitely speed up the process if you were able to help with the spec contributions.

j.vi… via monorail

unread,
Feb 3, 2021, 1:00:17 PM2/3/21
to angleproj...@googlegroups.com
Updates:
Labels: -Renderer-GLES -Renderer-DesktopGL

Comment #17 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c17

We have identified it as important. I'll have to check with Mohan. I'd like to come up to speed where your discussions have concluded. When you say pipeline you are referring to all the elements I was identifying as needing PROTECTED_BIT, and not something new for pipeline?

jmad… via monorail

unread,
Feb 3, 2021, 1:15:47 PM2/3/21
to angleproj...@googlegroups.com

Comment #18 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c18

We didn't get much farther than identifying the problem. One idea was to add state to a VkPipeline creation struct to identify a graphics pipeline is going to be used with protected content. I'm not as up to speed on this problem are you are - the main goal is to add an extension that would allow us to maintain a low level of complexity in ANGLE. The specifics are entirely flexible.

j.vi… via monorail

unread,
Feb 3, 2021, 1:21:57 PM2/3/21
to angleproj...@googlegroups.com

Comment #19 on issue 3965 by j.vi...@samsung.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c19

OK, got you. All I was seeing was RenderVk is a singleton wrapping the VkDevice, and it has a number of members embedded that are used with pipeline, CommandPool as shown above, and as such we can't have we either protected or non protected at this point. And that won't work for the extension. I was calling it on the VkQueue, because we need a non protected and protected queue, and with those pipeline elements - identified in my scratchy notes. So I saw it as extracting those things from RenderVk and adding to ContextVk or new object that is a instance of that Queue/pipeline state (protected or not protected).

jvigi… via monorail

unread,
Apr 30, 2021, 11:50:00 AM4/30/21
to angleproj...@googlegroups.com

Comment #20 on issue 3965 by jvigi...@gmail.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c20

Change in design.


I found I did not need 2 Queue Families one protected and one unprotected, also found that the Queues in a family may be protected enabled and still work with unprotected commands. So there is no need for 2 QueueMaps. Just need 2 CommandPools.
Also found that splitting a QueueFamily so that one VkQueue is protected and one VkQueue is unprotected is not supported by Pixel3 - and probably others. This is in the spec. Seems this feature is not needed, it does create confusion on intended use.

Also the EGL_EXT_protected_content allows for unprotected context to draw to a protected surface - this is not supported by Vulkan. Everything with a CommandBuffer must be protected or none. Not sure if but maybe we can detected that surface is protected and allow protected draw (fake protected context) - but that potentially allows for exploit.

On pixel 3 I am able to draw Unprotected Context on Unprotected Surface and Protected Context on Protected Surface.
I also have the first texture test working.

jmad… via monorail

unread,
Apr 30, 2021, 12:52:12 PM4/30/21
to angleproj...@googlegroups.com

Comment #21 on issue 3965 by jmad...@chromium.org: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c21

Filed https://gitlab.khronos.org/vulkan/vulkan/-/issues/2669 to discuss rendering non-protected content to protected surfaces.

jvigi… via monorail

unread,
Apr 30, 2021, 2:51:49 PM4/30/21
to angleproj...@googlegroups.com

Comment #22 on issue 3965 by jvigi...@gmail.com: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c22

Apologies for getting detail wrong.

Git Watcher via monorail

unread,
May 11, 2021, 5:10:06 PM5/11/21
to angleproj...@googlegroups.com

Git Watcher via monorail

unread,
Jul 20, 2021, 2:12:08 PM7/20/21
to angleproj...@googlegroups.com

Comment #24 on issue 3965 by Git Watcher: Implement EGL_EXT_protected_content
https://bugs.chromium.org/p/angleproject/issues/detail?id=3965#c24


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69

commit d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69
Author: Jeff Vigil <j.v...@samsung.com>
Date: Thu Mar 25 22:40:58 2021

EGL: implement EGL_EXT_protected_content Context

Add Validation check to Contexts and Surfaces
Add Vulkan protected memory features and properties
Add protected member to Surfaces and Contexts
Implement hasProtectedContent in Vulkan
Add QueueFamily helper, extent DeviceQueueMap
Protected Swapchains always on for Android
Add EGLProtectedContentTest

Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest

Bug: angleproject:3965
Change-Id: I9352b1e594f71bb4e89cee7137a468940d186b1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2800413

Commit-Queue: Mohan Maiya <m.m...@samsung.com>
Reviewed-by: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Geoff Lang <geof...@chromium.org>
Reviewed-by: Jamie Madill <jma...@chromium.org>

[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/include/platform/FeaturesVk.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/Caps.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/Caps.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/Context.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/State.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/State.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/Surface.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/Surface.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/capture/FrameCapture.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/CommandProcessor.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/CommandProcessor.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/ContextVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/ContextVk.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/DisplayVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/OverlayVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/PersistentCommandPool.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/RendererVk.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/SurfaceVk.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/SyncVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/TextureVk.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/mac/IOSurfaceSurfaceVkMac.mm
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/vk_helpers.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/renderer/vulkan/vk_helpers.h
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/libANGLE/validationEGL.cpp
[modify] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/tests/angle_end2end_tests.gni
[add] https://crrev.com/d2b659f9a1ee4dd0dc521d33ae113a2a8cccda69/src/tests/egl_tests/EGLProtectedContentTest.cpp
Reply all
Reply to author
Forward
0 new messages