Add basic VkSurfaceKHR (Xlib only for now) Should pass the following deqp tests: dEQP-VK.wsi.xlib.surface.create dEQP-VK.wsi.xlib.surface.query_supportS dEQP-VK.wsi.xlib.surface.query_capabilities dEQP-VK.wsi.xlib.surface.query_formatsW dEQP-VK.wsi.xlib.surface.query_present_modes dEQP-VK.wsi.xlib.surface.destroy_null_handle dEQP-VK.wsi.xlib.surface.initial_size dEQP-VK.wsi.xlib.surface.resizeSW Bug: b/124265819 Change-Id: I92da1cc8d60923ea97aa26d3d6a098274c6e06b7 Reviewed-on: https://swiftshader-review.googlesource.com/c/25308 Reviewed-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Corentin Wallez <cwallez@google.com> Tested-by: Hernan Liatis <hliatis@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/WSI/XlibSurfaceKHR.cpp b/src/WSI/XlibSurfaceKHR.cpp new file mode 100644 index 0000000..9dd7575 --- /dev/null +++ b/src/WSI/XlibSurfaceKHR.cpp
@@ -0,0 +1,42 @@ +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "XlibSurfaceKHR.hpp" + +namespace vk { + +XlibSurfaceKHR::XlibSurfaceKHR(const VkXlibSurfaceCreateInfoKHR *pCreateInfo, void *mem) : + pDisplay(pCreateInfo->dpy), + window(pCreateInfo->window) { + +} + +void XlibSurfaceKHR::destroySurface(const VkAllocationCallbacks *pAllocator) { + +} + +size_t XlibSurfaceKHR::ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo) { + return 0; +} + +void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const { + SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities); + + XWindowAttributes attr; + libX11->XGetWindowAttributes(pDisplay, window, &attr); + VkExtent2D extent = {static_cast<uint32_t>(attr.width), static_cast<uint32_t>(attr.height)}; + + pSurfaceCapabilities->currentExtent = extent; + pSurfaceCapabilities->minImageExtent = extent; + pSurfaceCapabilities->maxImageExtent = extent; +} + +} \ No newline at end of file