blob: 66d22c07b80e2fed44b7bd75d0239424915d038d [file] [log] [blame]
// 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_