Add SurfaceDescriptorFromHTMLCanvasID

Bug:dawn:269

Change-Id: I91802b44d0280224b93eb4fb637e91597bc03c81
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15322
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
Corentin Wallez 2020-01-22 21:37:26 +00:00 committed by Commit Bot service account
parent 8ffd3f2333
commit c2e16963a9
3 changed files with 21 additions and 1 deletions

View File

@ -1296,6 +1296,13 @@
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true} {"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true}
] ]
}, },
"surface descriptor from HTML canvas id": {
"category": "structure",
"chained": true,
"members": [
{"name": "id", "type": "char", "annotation": "const*", "length": "strlen"}
]
},
"surface descriptor from metal layer": { "surface descriptor from metal layer": {
"category": "structure", "category": "structure",
"chained": true, "chained": true,
@ -1349,7 +1356,8 @@
{"value": 0, "name": "invalid"}, {"value": 0, "name": "invalid"},
{"value": 1, "name": "surface descriptor from metal layer"}, {"value": 1, "name": "surface descriptor from metal layer"},
{"value": 2, "name": "surface descriptor from windows HWND"}, {"value": 2, "name": "surface descriptor from windows HWND"},
{"value": 3, "name": "surface descriptor from xlib"} {"value": 3, "name": "surface descriptor from xlib"},
{"value": 4, "name": "surface descriptor from HTML canvas id"}
] ]
}, },
"texture": { "texture": {

View File

@ -95,6 +95,7 @@ namespace dawn_native {
} break; } break;
#endif // defined(DAWN_USE_X11) #endif // defined(DAWN_USE_X11)
case wgpu::SType::SurfaceDescriptorFromHTMLCanvasId:
default: default:
return DAWN_VALIDATION_ERROR("Unsupported sType"); return DAWN_VALIDATION_ERROR("Unsupported sType");
} }

View File

@ -110,6 +110,17 @@ TEST_F(WindowSurfaceInstanceTests, BadChainedDescriptors) {
AssertSurfaceCreation(&descriptor, false); AssertSurfaceCreation(&descriptor, false);
} }
// Test that a chained descriptor with HTMLCanvas produces an error.
TEST_F(WindowSurfaceInstanceTests, HTMLCanvasDescriptor) {
wgpu::SurfaceDescriptorFromHTMLCanvasId chainedDescriptor;
chainedDescriptor.id = "myCanvas";
wgpu::SurfaceDescriptor descriptor;
descriptor.nextInChain = &chainedDescriptor;
AssertSurfaceCreation(&descriptor, false);
}
// Test that it is invalid to give two valid chained descriptors // Test that it is invalid to give two valid chained descriptors
TEST_F(WindowSurfaceInstanceTests, TwoChainedDescriptors) { TEST_F(WindowSurfaceInstanceTests, TwoChainedDescriptors) {
GLFWwindow* window = CreateWindow(); GLFWwindow* window = CreateWindow();