| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_BRINGUP_BIN_VIRTCON_VC_GFX_H_ |
| #define SRC_BRINGUP_BIN_VIRTCON_VC_GFX_H_ |
| |
| #include <zircon/types.h> |
| |
| #include <gfx/gfx.h> |
| |
| typedef struct vc vc_t; |
| |
| typedef struct vc_gfx { |
| gfx_surface* vc_gfx = nullptr; |
| gfx_surface* vc_status_bar_gfx = nullptr; |
| const gfx_font* vc_font = nullptr; |
| |
| zx_handle_t vc_gfx_vmo = ZX_HANDLE_INVALID; |
| uintptr_t vc_gfx_mem = 0; |
| size_t vc_gfx_size = 0; |
| |
| zx_handle_t vc_hw_gfx_vmo = ZX_HANDLE_INVALID; |
| gfx_surface* vc_hw_gfx = 0; |
| uintptr_t vc_hw_gfx_mem = 0; |
| #if BUILD_FOR_TEST |
| gfx_surface* vc_test_gfx = nullptr; |
| #endif |
| } vc_gfx_t; |
| |
| #if BUILD_FOR_TEST |
| zx_status_t vc_init_gfx(vc_gfx_t* gfx, gfx_surface* test); |
| #else |
| zx_status_t vc_init_gfx(vc_gfx_t* gfx, zx_handle_t fb_vmo, int32_t width, int32_t height, |
| zx_pixel_format_t format, int32_t stride); |
| #endif |
| void vc_free_gfx(vc_gfx_t* gfx); |
| |
| void vc_gfx_invalidate(vc_gfx_t* gfx, vc_t* vc, unsigned x, unsigned y, unsigned w, unsigned h); |
| void vc_gfx_invalidate_all(vc_gfx_t* gfx, vc_t* vc); |
| void vc_gfx_invalidate_status(vc_gfx_t* gfx); |
| void vc_gfx_invalidate_region(vc_gfx_t* gfx, vc_t* vc, unsigned x, unsigned y, unsigned w, |
| unsigned h); |
| void vc_gfx_draw_char(vc_gfx_t* gfx, vc_t* vc, vc_char_t ch, unsigned x, unsigned y, bool invert); |
| |
| void vc_gfx_invalidate_mem(vc_gfx_t* gfx, size_t offset, size_t size); |
| |
| #endif // SRC_BRINGUP_BIN_VIRTCON_VC_GFX_H_ |