blob: f580836e780cf5799dd8e63d6bf3036106af24ee [file] [log] [blame]
Hernan Liatisc6eb41b2019-02-22 11:12:59 -08001// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef SWIFTSHADER_XLIBSURFACEKHR_HPP
16#define SWIFTSHADER_XLIBSURFACEKHR_HPP
17
Nicolas Capens37c024a2019-03-01 13:39:57 -050018#include "Vulkan/VkObject.hpp"
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080019#include "libX11.hpp"
20#include "VkSurfaceKHR.hpp"
Saman Samif4d2a442019-05-21 15:04:41 -040021#include "vulkan/vulkan_xlib.h"
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080022
Ben Claytona9af8832019-08-14 13:09:43 +010023#include <unordered_map>
Hernan Liatisf945a5e2019-03-06 15:31:04 -080024
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080025namespace vk {
26
27class XlibSurfaceKHR : public SurfaceKHR, public ObjectBase<XlibSurfaceKHR, VkSurfaceKHR> {
28public:
29 XlibSurfaceKHR(const VkXlibSurfaceCreateInfoKHR *pCreateInfo, void *mem);
30
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080031 void destroySurface(const VkAllocationCallbacks *pAllocator) override;
32
33 static size_t ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo);
34
35 void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
36
Hernan Liatisf945a5e2019-03-06 15:31:04 -080037 virtual void attachImage(PresentImage* image) override;
38 virtual void detachImage(PresentImage* image) override;
39 void present(PresentImage* image) override;
Hernan Liatis6b12a502019-03-01 15:06:13 -080040
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080041private:
Nicolas Capensd3545372019-08-09 13:59:18 -040042 Display *const pDisplay;
43 const Window window;
Hernan Liatis6b12a502019-03-01 15:06:13 -080044 GC gc;
Hernan Liatisf945a5e2019-03-06 15:31:04 -080045 Visual *visual = nullptr;
Ben Claytona9af8832019-08-14 13:09:43 +010046 std::unordered_map<PresentImage*, XImage*> imageMap;
Hernan Liatisc6eb41b2019-02-22 11:12:59 -080047};
48
49}
50#endif //SWIFTSHADER_XLIBSURFACEKHR_HPP