mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
kopper: Add support for OHOS
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
This commit is contained in:
parent
cd5048db24
commit
375c838984
3 changed files with 39 additions and 6 deletions
|
|
@ -18,7 +18,7 @@
|
|||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
#
|
||||
#
|
||||
# Authors:
|
||||
# Hoe Hao Cheng <haochengho12907@gmail.com>
|
||||
#
|
||||
|
|
@ -49,6 +49,7 @@ EXTENSIONS = [
|
|||
Extension("VK_KHR_xcb_surface"),
|
||||
Extension("VK_KHR_win32_surface"),
|
||||
Extension("VK_EXT_swapchain_colorspace"),
|
||||
Extension("VK_OHOS_surface"),
|
||||
]
|
||||
|
||||
if platform.system() == "Darwin":
|
||||
|
|
@ -139,7 +140,7 @@ zink_create_instance(struct zink_screen *screen, struct zink_instance_info *inst
|
|||
/* reserve one slot for MoltenVK */
|
||||
const char *layers[${len(layers) + 1}] = {0};
|
||||
uint32_t num_layers = 0;
|
||||
|
||||
|
||||
const char *extensions[${len(extensions) + 1}] = {0};
|
||||
uint32_t num_extensions = 0;
|
||||
|
||||
|
|
@ -361,7 +362,7 @@ zink_verify_instance_extensions(struct zink_screen *screen)
|
|||
def replace_code(code: str, replacement: dict):
|
||||
for (k, v) in replacement.items():
|
||||
code = code.replace(k, v)
|
||||
|
||||
|
||||
return code
|
||||
|
||||
|
||||
|
|
@ -395,7 +396,7 @@ if __name__ == "__main__":
|
|||
error_count += 1
|
||||
print("The extension {} is not registered in vk.xml - a typo?".format(ext.name))
|
||||
continue
|
||||
|
||||
|
||||
entry = registry.get_registry_entry(ext.name)
|
||||
|
||||
if entry.ext_type != "instance":
|
||||
|
|
@ -407,7 +408,7 @@ if __name__ == "__main__":
|
|||
ext.core_since = Version((*entry.promoted_in, 0))
|
||||
|
||||
if entry.platform_guard:
|
||||
ext.platform_guard = entry.platform_guard
|
||||
ext.platform_guard = entry.platform_guard
|
||||
|
||||
if error_count > 0:
|
||||
print("zink_instance.py: Found {} error(s) in total. Quitting.".format(error_count))
|
||||
|
|
|
|||
|
|
@ -79,6 +79,11 @@ init_dt_type(struct kopper_displaytarget *cdt)
|
|||
case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:
|
||||
cdt->type = KOPPER_WIN32;
|
||||
break;
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_OHOS
|
||||
case VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS:
|
||||
cdt->type = KOPPER_OHOS;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
UNREACHABLE("unsupported!");
|
||||
|
|
@ -118,6 +123,13 @@ kopper_CreateSurface(struct zink_screen *screen, struct kopper_displaytarget *cd
|
|||
error = VKSCR(CreateWin32SurfaceKHR)(screen->instance, win32, NULL, &surface);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_OHOS
|
||||
case VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS: {
|
||||
VkSurfaceCreateInfoOHOS *sci = (VkSurfaceCreateInfoOHOS *)&cdt->info.bos;
|
||||
error = VKSCR(CreateSurfaceOHOS)(screen->instance, sci, NULL, &surface);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
UNREACHABLE("unsupported!");
|
||||
|
|
@ -234,6 +246,13 @@ find_dt_entry(struct zink_screen *screen, const struct kopper_displaytarget *cdt
|
|||
he = _mesa_hash_table_search(&screen->dts, win32->hwnd);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_OHOS
|
||||
case KOPPER_OHOS: {
|
||||
VkSurfaceCreateInfoOHOS *sci = (VkSurfaceCreateInfoOHOS *)&cdt->info.bos;
|
||||
he = _mesa_hash_table_search(&screen->dts, sci->window);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
UNREACHABLE("unsupported!");
|
||||
|
|
@ -340,6 +359,10 @@ kopper_CreateSwapchain(struct zink_screen *screen, struct kopper_displaytarget *
|
|||
cswap->scci.imageExtent.width = w;
|
||||
cswap->scci.imageExtent.height = h;
|
||||
break;
|
||||
case KOPPER_OHOS:
|
||||
cswap->scci.imageExtent.width = w;
|
||||
cswap->scci.imageExtent.height = h;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE("unknown display platform");
|
||||
}
|
||||
|
|
@ -444,6 +467,7 @@ zink_kopper_displaytarget_create(struct zink_screen *screen, unsigned tex_usage,
|
|||
break;
|
||||
case KOPPER_WAYLAND:
|
||||
case KOPPER_WIN32:
|
||||
case KOPPER_OHOS:
|
||||
_mesa_hash_table_init(&screen->dts, screen, _mesa_hash_pointer, _mesa_key_pointer_equal);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -515,6 +539,13 @@ zink_kopper_displaytarget_create(struct zink_screen *screen, unsigned tex_usage,
|
|||
_mesa_hash_table_insert(&screen->dts, win32->hwnd, cdt);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_OHOS
|
||||
case KOPPER_OHOS: {
|
||||
VkSurfaceCreateInfoOHOS *sci = (VkSurfaceCreateInfoOHOS *)&cdt->info.bos;
|
||||
_mesa_hash_table_insert(&screen->dts, sci->window, cdt);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
UNREACHABLE("unsupported!");
|
||||
|
|
|
|||
|
|
@ -74,7 +74,8 @@ struct kopper_swapchain {
|
|||
enum kopper_type {
|
||||
KOPPER_X11,
|
||||
KOPPER_WAYLAND,
|
||||
KOPPER_WIN32
|
||||
KOPPER_WIN32,
|
||||
KOPPER_OHOS,
|
||||
};
|
||||
|
||||
struct kopper_displaytarget
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue