Add Window at the end of SurfaceDescriptorFromXlib.

Bug: dawn:1246
Change-Id: I1917056e9bb2bde0997c072ab76963e9dd079bb3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75420
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez 2022-01-06 09:10:00 +00:00 committed by Dawn LUCI CQ
parent 31f12242da
commit a4357a7619
5 changed files with 11 additions and 11 deletions

View File

@ -2296,7 +2296,7 @@
{"name": "hwnd", "type": "void", "annotation": "*"} {"name": "hwnd", "type": "void", "annotation": "*"}
] ]
}, },
"surface descriptor from xlib": { "surface descriptor from xlib window": {
"category": "structure", "category": "structure",
"chained": "in", "chained": "in",
"tags": ["native"], "tags": ["native"],
@ -2358,7 +2358,7 @@
{"value": 0, "name": "invalid", "valid": false}, {"value": 0, "name": "invalid", "valid": false},
{"value": 1, "name": "surface descriptor from metal layer", "tags": ["native"]}, {"value": 1, "name": "surface descriptor from metal layer", "tags": ["native"]},
{"value": 2, "name": "surface descriptor from windows HWND", "tags": ["native"]}, {"value": 2, "name": "surface descriptor from windows HWND", "tags": ["native"]},
{"value": 3, "name": "surface descriptor from xlib", "tags": ["native"]}, {"value": 3, "name": "surface descriptor from xlib window", "tags": ["native"]},
{"value": 4, "name": "surface descriptor from canvas HTML selector"}, {"value": 4, "name": "surface descriptor from canvas HTML selector"},
{"value": 5, "name": "shader module SPIRV descriptor"}, {"value": 5, "name": "shader module SPIRV descriptor"},
{"value": 6, "name": "shader module WGSL descriptor"}, {"value": 6, "name": "shader module WGSL descriptor"},

View File

@ -49,7 +49,7 @@ A **record** is a list of **record members**, each of which is a dictionary with
**`"native"`**, doesn't have any other key. This is used to define native types that can be referenced by name in other things. **`"native"`**, doesn't have any other key. This is used to define native types that can be referenced by name in other things.
**`"typedef"`** (usually only used for gradual deprecations): **`"typedef"`** (usually only used for gradual deprecations):
- `"name"`: the name of the things this is a typedef for. - `"type"`: the name of the things this is a typedef for.
**`"enum"`** an `uint32_t`-based enum value. **`"enum"`** an `uint32_t`-based enum value.
- `"values"` an array of enum values. Each value is a dictionary containing: - `"values"` an array of enum values. Each value is a dictionary containing:

View File

@ -69,7 +69,7 @@ namespace dawn_native {
wgpu::SType::SurfaceDescriptorFromWindowsHWND, wgpu::SType::SurfaceDescriptorFromWindowsHWND,
wgpu::SType::SurfaceDescriptorFromWindowsCoreWindow, wgpu::SType::SurfaceDescriptorFromWindowsCoreWindow,
wgpu::SType::SurfaceDescriptorFromWindowsSwapChainPanel, wgpu::SType::SurfaceDescriptorFromWindowsSwapChainPanel,
wgpu::SType::SurfaceDescriptorFromXlib)); wgpu::SType::SurfaceDescriptorFromXlibWindow));
#if defined(DAWN_ENABLE_BACKEND_METAL) #if defined(DAWN_ENABLE_BACKEND_METAL)
const SurfaceDescriptorFromMetalLayer* metalDesc = nullptr; const SurfaceDescriptorFromMetalLayer* metalDesc = nullptr;
@ -116,7 +116,7 @@ namespace dawn_native {
#endif // defined(DAWN_PLATFORM_WINDOWS) #endif // defined(DAWN_PLATFORM_WINDOWS)
#if defined(DAWN_USE_X11) #if defined(DAWN_USE_X11)
const SurfaceDescriptorFromXlib* xDesc = nullptr; const SurfaceDescriptorFromXlibWindow* xDesc = nullptr;
FindInChain(descriptor->nextInChain, &xDesc); FindInChain(descriptor->nextInChain, &xDesc);
if (xDesc) { if (xDesc) {
// Check the validity of the window by calling a getter function on the window that // Check the validity of the window by calling a getter function on the window that
@ -146,7 +146,7 @@ namespace dawn_native {
const SurfaceDescriptorFromWindowsHWND* hwndDesc = nullptr; const SurfaceDescriptorFromWindowsHWND* hwndDesc = nullptr;
const SurfaceDescriptorFromWindowsCoreWindow* coreWindowDesc = nullptr; const SurfaceDescriptorFromWindowsCoreWindow* coreWindowDesc = nullptr;
const SurfaceDescriptorFromWindowsSwapChainPanel* swapChainPanelDesc = nullptr; const SurfaceDescriptorFromWindowsSwapChainPanel* swapChainPanelDesc = nullptr;
const SurfaceDescriptorFromXlib* xDesc = nullptr; const SurfaceDescriptorFromXlibWindow* xDesc = nullptr;
FindInChain(descriptor->nextInChain, &metalDesc); FindInChain(descriptor->nextInChain, &metalDesc);
FindInChain(descriptor->nextInChain, &hwndDesc); FindInChain(descriptor->nextInChain, &hwndDesc);
FindInChain(descriptor->nextInChain, &coreWindowDesc); FindInChain(descriptor->nextInChain, &coreWindowDesc);

View File

@ -181,12 +181,12 @@ TEST_F(WindowSurfaceInstanceTests, CorrectSTypeXlib) {
GLFWwindow* window = CreateWindow(); GLFWwindow* window = CreateWindow();
std::unique_ptr<wgpu::ChainedStruct> chainedDescriptor = std::unique_ptr<wgpu::ChainedStruct> chainedDescriptor =
utils::SetupWindowAndGetSurfaceDescriptorForTesting(window); utils::SetupWindowAndGetSurfaceDescriptorForTesting(window);
ASSERT_EQ(chainedDescriptor->sType, wgpu::SType::SurfaceDescriptorFromXlib); ASSERT_EQ(chainedDescriptor->sType, wgpu::SType::SurfaceDescriptorFromXlibWindow);
} }
// Test with setting an invalid window // Test with setting an invalid window
TEST_F(WindowSurfaceInstanceTests, InvalidXWindow) { TEST_F(WindowSurfaceInstanceTests, InvalidXWindow) {
wgpu::SurfaceDescriptorFromXlib chainedDescriptor; wgpu::SurfaceDescriptorFromXlibWindow chainedDescriptor;
chainedDescriptor.display = XOpenDisplay(nullptr); chainedDescriptor.display = XOpenDisplay(nullptr);
// From the "X Window System Protocol" "X Version 11, Release 6.8" page 2 at // From the "X Window System Protocol" "X Version 11, Release 6.8" page 2 at
// https://www.x.org/releases/X11R7.5/doc/x11proto/proto.pdf // https://www.x.org/releases/X11R7.5/doc/x11proto/proto.pdf
@ -203,7 +203,7 @@ TEST_F(WindowSurfaceInstanceTests, InvalidXWindow) {
// Test using Xlib when it is not supported // Test using Xlib when it is not supported
TEST_F(WindowSurfaceInstanceTests, XlibSurfacesAreInvalid) { TEST_F(WindowSurfaceInstanceTests, XlibSurfacesAreInvalid) {
wgpu::SurfaceDescriptorFromXlib chainedDescriptor; wgpu::SurfaceDescriptorFromXlibWindow chainedDescriptor;
chainedDescriptor.display = nullptr; chainedDescriptor.display = nullptr;
chainedDescriptor.window = 0; chainedDescriptor.window = 0;

View File

@ -71,8 +71,8 @@ namespace utils {
#elif defined(DAWN_USE_X11) #elif defined(DAWN_USE_X11)
std::unique_ptr<wgpu::ChainedStruct> SetupWindowAndGetSurfaceDescriptorForTesting( std::unique_ptr<wgpu::ChainedStruct> SetupWindowAndGetSurfaceDescriptorForTesting(
GLFWwindow* window) { GLFWwindow* window) {
std::unique_ptr<wgpu::SurfaceDescriptorFromXlib> desc = std::unique_ptr<wgpu::SurfaceDescriptorFromXlibWindow> desc =
std::make_unique<wgpu::SurfaceDescriptorFromXlib>(); std::make_unique<wgpu::SurfaceDescriptorFromXlibWindow>();
desc->display = glfwGetX11Display(); desc->display = glfwGetX11Display();
desc->window = glfwGetX11Window(window); desc->window = glfwGetX11Window(window);
return std::move(desc); return std::move(desc);