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:
parent
31f12242da
commit
a4357a7619
|
@ -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"},
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue