Make vkGetPhysicalDeviceSurfaceCapabilitiesKHR provide a return code

Rather than assume success, allow WSI surface implementations to return a VkResult for getSurfaceCapabilities. Also, made VkSurfaceKHR::getSurfaceCapabilities pure virtual, and moved its implementation to a protected static helper named setCommonSurfaceCapabilities. Bug: chromium:1174372 Change-Id: I75f5f5a30f786f0675d830e4e2a684a4cbcb149c Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/53048 Kokoro-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarAntonio Maiorano <amaiorano@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
parent 790b3250
...@@ -3800,8 +3800,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysi ...@@ -3800,8 +3800,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysi
TRACE("(VkPhysicalDevice physicalDevice = %p, VkSurfaceKHR surface = %p, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities = %p)", TRACE("(VkPhysicalDevice physicalDevice = %p, VkSurfaceKHR surface = %p, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities = %p)",
physicalDevice, static_cast<void *>(surface), pSurfaceCapabilities); physicalDevice, static_cast<void *>(surface), pSurfaceCapabilities);
vk::Cast(surface)->getSurfaceCapabilities(pSurfaceCapabilities); return vk::Cast(surface)->getSurfaceCapabilities(pSurfaceCapabilities);
return VK_SUCCESS;
} }
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats) VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats)
......
...@@ -34,9 +34,9 @@ size_t DirectFBSurfaceEXT::ComputeRequiredAllocationSize(const VkDirectFBSurface ...@@ -34,9 +34,9 @@ size_t DirectFBSurfaceEXT::ComputeRequiredAllocationSize(const VkDirectFBSurface
return 0; return 0;
} }
void DirectFBSurfaceEXT::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult DirectFBSurfaceEXT::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
int width, height; int width, height;
surface->GetSize(surface, &width, &height); surface->GetSize(surface, &width, &height);
...@@ -45,6 +45,7 @@ void DirectFBSurfaceEXT::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfa ...@@ -45,6 +45,7 @@ void DirectFBSurfaceEXT::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfa
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void DirectFBSurfaceEXT::attachImage(PresentImage *image) void DirectFBSurfaceEXT::attachImage(PresentImage *image)
......
...@@ -34,7 +34,7 @@ public: ...@@ -34,7 +34,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkDirectFBSurfaceCreateInfoEXT *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkDirectFBSurfaceCreateInfoEXT *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
...@@ -200,15 +200,16 @@ size_t DisplaySurfaceKHR::ComputeRequiredAllocationSize(const VkDisplaySurfaceCr ...@@ -200,15 +200,16 @@ size_t DisplaySurfaceKHR::ComputeRequiredAllocationSize(const VkDisplaySurfaceCr
return 0; return 0;
} }
void DisplaySurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult DisplaySurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
VkExtent2D extent = { width, height }; VkExtent2D extent = { width, height };
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void DisplaySurfaceKHR::attachImage(PresentImage *image) void DisplaySurfaceKHR::attachImage(PresentImage *image)
......
...@@ -37,7 +37,7 @@ public: ...@@ -37,7 +37,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkDisplaySurfaceCreateInfoKHR *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkDisplaySurfaceCreateInfoKHR *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
...@@ -29,9 +29,9 @@ void HeadlessSurfaceKHR::destroySurface(const VkAllocationCallbacks *pAllocator) ...@@ -29,9 +29,9 @@ void HeadlessSurfaceKHR::destroySurface(const VkAllocationCallbacks *pAllocator)
{ {
} }
void HeadlessSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult HeadlessSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
// We could return {0,0} here, but as this type of surface is useful for testing, we return a more // We could return {0,0} here, but as this type of surface is useful for testing, we return a more
// common size here so that buffers like Swapchain images get created with reasonable sizes, and // common size here so that buffers like Swapchain images get created with reasonable sizes, and
// so that drawing actually exercises common code paths. // so that drawing actually exercises common code paths.
...@@ -39,6 +39,7 @@ void HeadlessSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfa ...@@ -39,6 +39,7 @@ void HeadlessSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfa
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void HeadlessSurfaceKHR::attachImage(PresentImage *image) void HeadlessSurfaceKHR::attachImage(PresentImage *image)
......
...@@ -27,7 +27,7 @@ public: ...@@ -27,7 +27,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkHeadlessSurfaceCreateInfoEXT *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkHeadlessSurfaceCreateInfoEXT *pCreateInfo);
void destroySurface(const VkAllocationCallbacks *pAllocator) override; void destroySurface(const VkAllocationCallbacks *pAllocator) override;
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
void attachImage(PresentImage *image) override; void attachImage(PresentImage *image) override;
void detachImage(PresentImage *image) override; void detachImage(PresentImage *image) override;
VkResult present(PresentImage *image) override; VkResult present(PresentImage *image) override;
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
static size_t ComputeRequiredAllocationSize(const void *pCreateInfo); static size_t ComputeRequiredAllocationSize(const void *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override {} virtual void attachImage(PresentImage *image) override {}
virtual void detachImage(PresentImage *image) override {} virtual void detachImage(PresentImage *image) override {}
......
...@@ -144,9 +144,9 @@ size_t MetalSurface::ComputeRequiredAllocationSize(const void *pCreateInfo) API_ ...@@ -144,9 +144,9 @@ size_t MetalSurface::ComputeRequiredAllocationSize(const void *pCreateInfo) API_
return sizeof(MetalLayer); return sizeof(MetalLayer);
} }
void MetalSurface::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const API_AVAILABLE(macosx(10.11)) VkResult MetalSurface::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const API_AVAILABLE(macosx(10.11))
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
// The value of drawableSize in CAMetalLayer is set the first time a drawable is queried but after that it is the // The value of drawableSize in CAMetalLayer is set the first time a drawable is queried but after that it is the
// (Metal) application's responsibility to resize the drawable when the window is resized. The best time for Swiftshader // (Metal) application's responsibility to resize the drawable when the window is resized. The best time for Swiftshader
...@@ -156,6 +156,7 @@ void MetalSurface::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapa ...@@ -156,6 +156,7 @@ void MetalSurface::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapa
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
VkResult MetalSurface::present(PresentImage* image) API_AVAILABLE(macosx(10.11)) VkResult MetalSurface::present(PresentImage* image) API_AVAILABLE(macosx(10.11))
......
...@@ -109,23 +109,6 @@ VkImage PresentImage::asVkImage() const ...@@ -109,23 +109,6 @@ VkImage PresentImage::asVkImage() const
return image ? static_cast<VkImage>(*image) : VkImage({ VK_NULL_HANDLE }); return image ? static_cast<VkImage>(*image) : VkImage({ VK_NULL_HANDLE });
} }
void SurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{
pSurfaceCapabilities->minImageCount = 1;
pSurfaceCapabilities->maxImageCount = 0;
pSurfaceCapabilities->maxImageArrayLayers = 1;
pSurfaceCapabilities->supportedTransforms = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
pSurfaceCapabilities->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
pSurfaceCapabilities->supportedCompositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
pSurfaceCapabilities->supportedUsageFlags =
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
VK_IMAGE_USAGE_TRANSFER_DST_BIT |
VK_IMAGE_USAGE_SAMPLED_BIT;
}
uint32_t SurfaceKHR::getSurfaceFormatsCount() const uint32_t SurfaceKHR::getSurfaceFormatsCount() const
{ {
return static_cast<uint32_t>(sizeof(surfaceFormats) / sizeof(surfaceFormats[0])); return static_cast<uint32_t>(sizeof(surfaceFormats) / sizeof(surfaceFormats[0]));
...@@ -214,4 +197,21 @@ VkResult SurfaceKHR::getPresentRectangles(uint32_t *pRectCount, VkRect2D *pRects ...@@ -214,4 +197,21 @@ VkResult SurfaceKHR::getPresentRectangles(uint32_t *pRectCount, VkRect2D *pRects
return VK_SUCCESS; return VK_SUCCESS;
} }
void SurfaceKHR::setCommonSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities)
{
pSurfaceCapabilities->minImageCount = 1;
pSurfaceCapabilities->maxImageCount = 0;
pSurfaceCapabilities->maxImageArrayLayers = 1;
pSurfaceCapabilities->supportedTransforms = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
pSurfaceCapabilities->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
pSurfaceCapabilities->supportedCompositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
pSurfaceCapabilities->supportedUsageFlags =
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
VK_IMAGE_USAGE_TRANSFER_DST_BIT |
VK_IMAGE_USAGE_SAMPLED_BIT;
}
} // namespace vk } // namespace vk
\ No newline at end of file
...@@ -77,7 +77,7 @@ public: ...@@ -77,7 +77,7 @@ public:
virtual void destroySurface(const VkAllocationCallbacks *pAllocator) = 0; virtual void destroySurface(const VkAllocationCallbacks *pAllocator) = 0;
virtual void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const; virtual VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const = 0;
uint32_t getSurfaceFormatsCount() const; uint32_t getSurfaceFormatsCount() const;
VkResult getSurfaceFormats(uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats) const; VkResult getSurfaceFormats(uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats) const;
...@@ -95,6 +95,9 @@ public: ...@@ -95,6 +95,9 @@ public:
void disassociateSwapchain(); void disassociateSwapchain();
bool hasAssociatedSwapchain(); bool hasAssociatedSwapchain();
protected:
static void setCommonSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
private: private:
SwapchainKHR *associatedSwapchain = nullptr; SwapchainKHR *associatedSwapchain = nullptr;
}; };
......
...@@ -56,13 +56,14 @@ size_t WaylandSurfaceKHR::ComputeRequiredAllocationSize(const VkWaylandSurfaceCr ...@@ -56,13 +56,14 @@ size_t WaylandSurfaceKHR::ComputeRequiredAllocationSize(const VkWaylandSurfaceCr
return 0; return 0;
} }
void WaylandSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult WaylandSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
pSurfaceCapabilities->currentExtent = { 0xFFFFFFFF, 0xFFFFFFFF }; pSurfaceCapabilities->currentExtent = { 0xFFFFFFFF, 0xFFFFFFFF };
pSurfaceCapabilities->minImageExtent = { 1, 1 }; pSurfaceCapabilities->minImageExtent = { 1, 1 };
pSurfaceCapabilities->maxImageExtent = { 0xFFFFFFFF, 0xFFFFFFFF }; pSurfaceCapabilities->maxImageExtent = { 0xFFFFFFFF, 0xFFFFFFFF };
return VK_SUCCESS;
} }
void WaylandSurfaceKHR::attachImage(PresentImage *image) void WaylandSurfaceKHR::attachImage(PresentImage *image)
......
...@@ -40,7 +40,7 @@ public: ...@@ -40,7 +40,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkWaylandSurfaceCreateInfoKHR *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkWaylandSurfaceCreateInfoKHR *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
...@@ -56,13 +56,15 @@ size_t Win32SurfaceKHR::ComputeRequiredAllocationSize(const VkWin32SurfaceCreate ...@@ -56,13 +56,15 @@ size_t Win32SurfaceKHR::ComputeRequiredAllocationSize(const VkWin32SurfaceCreate
return 0; return 0;
} }
void Win32SurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult Win32SurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
VkExtent2D extent = getWindowSize(hwnd); VkExtent2D extent = getWindowSize(hwnd);
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void Win32SurfaceKHR::attachImage(PresentImage *image) void Win32SurfaceKHR::attachImage(PresentImage *image)
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkWin32SurfaceCreateInfoKHR *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkWin32SurfaceCreateInfoKHR *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
...@@ -124,15 +124,16 @@ size_t XcbSurfaceKHR::ComputeRequiredAllocationSize(const VkXcbSurfaceCreateInfo ...@@ -124,15 +124,16 @@ size_t XcbSurfaceKHR::ComputeRequiredAllocationSize(const VkXcbSurfaceCreateInfo
return 0; return 0;
} }
void XcbSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult XcbSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
VkExtent2D extent = getWindowSize(connection, window); VkExtent2D extent = getWindowSize(connection, window);
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void XcbSurfaceKHR::attachImage(PresentImage *image) void XcbSurfaceKHR::attachImage(PresentImage *image)
......
...@@ -34,7 +34,7 @@ public: ...@@ -34,7 +34,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkXcbSurfaceCreateInfoKHR *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkXcbSurfaceCreateInfoKHR *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
...@@ -41,9 +41,9 @@ size_t XlibSurfaceKHR::ComputeRequiredAllocationSize(const VkXlibSurfaceCreateIn ...@@ -41,9 +41,9 @@ size_t XlibSurfaceKHR::ComputeRequiredAllocationSize(const VkXlibSurfaceCreateIn
return 0; return 0;
} }
void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const VkResult XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
{ {
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); setCommonSurfaceCapabilities(pSurfaceCapabilities);
XWindowAttributes attr; XWindowAttributes attr;
libX11->XGetWindowAttributes(pDisplay, window, &attr); libX11->XGetWindowAttributes(pDisplay, window, &attr);
...@@ -52,6 +52,7 @@ void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCa ...@@ -52,6 +52,7 @@ void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCa
pSurfaceCapabilities->currentExtent = extent; pSurfaceCapabilities->currentExtent = extent;
pSurfaceCapabilities->minImageExtent = extent; pSurfaceCapabilities->minImageExtent = extent;
pSurfaceCapabilities->maxImageExtent = extent; pSurfaceCapabilities->maxImageExtent = extent;
return VK_SUCCESS;
} }
void XlibSurfaceKHR::attachImage(PresentImage *image) void XlibSurfaceKHR::attachImage(PresentImage *image)
......
...@@ -34,7 +34,7 @@ public: ...@@ -34,7 +34,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo);
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override; VkResult getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
virtual void attachImage(PresentImage *image) override; virtual void attachImage(PresentImage *image) override;
virtual void detachImage(PresentImage *image) override; virtual void detachImage(PresentImage *image) override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment