|
Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
|
#include <virtio-gpu.hpp>
Public Member Functions | |
| VirtioGpu () | |
| void | load () override |
| void | unload () override |
Public Member Functions inherited from IoForgeVirtio | |
| IoForgeVirtio (const char *mod) | |
Public Member Functions inherited from IOForge | |
| IOForge (const char *mod) | |
Static Public Member Functions | |
| static VirtioGpu * | getInstance () |
Protected Member Functions | |
| void | setup () |
| int | virtio_gpu_send_command (void *cmd, uint32_t cmd_size, void *resp, uint32_t resp_size) |
| int | virtio_gpu_get_display_info () |
| int | virtio_gpu_create_resource (uint32_t resource_id, uint32_t width, uint32_t height) |
Protected Attributes | |
| ioforge_virtio_device * | dev_ |
Protected Attributes inherited from IOForge | |
| const char * | mod |
Private Member Functions | |
| uint16_t | virtq_alloc_desc (struct virtio_gpu_queue *vq) |
| void | virtq_free_desc (struct virtio_gpu_queue *vq, uint16_t desc_idx) |
| void | virtq_init (struct virtio_gpu_queue *vq, void *vq_mem, uint16_t queue_size, uintptr_t phys_addr) |
| int | virtq_add_buf (struct virtio_gpu_queue *vq, void **buffers, uint32_t *lengths, uint16_t num_out, uint16_t num_in, uint16_t *head_out) |
| void | virtq_kick (uint16_t queue_index) |
| int | virtq_get_used_elem (struct virtio_gpu_queue *vq, uint16_t *id, uint32_t *len) |
Static Private Member Functions | |
| static void | fireHandler () |
Private Attributes | |
| bool | initialized_ |
| uintptr_t | notify_offset_ |
| uint32_t | notify_multiplier_ |
| uintptr_t | notify_base_ |
Static Private Attributes | |
| static struct virtio_gpu_queue | control_queue_ = {0} |
Definition at line 7 of file virtio-gpu.hpp.
| VirtioGpu::VirtioGpu | ( | ) |
Definition at line 8 of file init.cpp.
References IoForgeVirtio::IoForgeVirtio().
Referenced by getInstance().
|
staticprivate |
Definition at line 230 of file virtio-gpu.cpp.
References getInstance(), instance, and interrupt_exist.
Referenced by setup().
|
static |
Definition at line 11 of file init.cpp.
References instance, and VirtioGpu().
Referenced by fireHandler().
|
overridevirtual |
Reimplemented from IoForgeVirtio.
Definition at line 18 of file init.cpp.
References dev_, find_virtio_device_by_id(), log, IOForge::mod, and setup().
|
protected |
Definition at line 23 of file virtio-gpu.cpp.
References ALIGN_UP, common_cfg, control_queue_, dev_, virtio_gpu_resp_display_info::virtio_gpu_display_one::enabled, fireHandler(), virtio_gpu_resp_display_info::hdr, virtio_gpu_rect::height, isr_irq_register(), log, memset(), IOForge::mod, notify_base_, notify_multiplier_, notify_offset_, virtio_gpu_resp_display_info::pmodes, queue_size, virtio_gpu_resp_display_info::virtio_gpu_display_one::rect, status, virtio_gpu_ctrl_hdr::type, VIRTIO_GPU_CMD_GET_DISPLAY_INFO, virtio_gpu_create_resource(), VIRTIO_GPU_QUEUE_ALIGN, VIRTIO_GPU_QUEUE_SIZE, VIRTIO_GPU_RESP_OK_DISPLAY_INFO, virtio_gpu_send_command(), VIRTIO_STATUS_ACKNOWLEDGE, VIRTIO_STATUS_DRIVER, VIRTIO_STATUS_DRIVER_OK, VIRTIO_STATUS_FEATURES_OK, virtq_init(), virtio_gpu_rect::width, virtio_gpu_rect::x, and virtio_gpu_rect::y.
Referenced by load().
|
overridevirtual |
Reimplemented from IoForgeVirtio.
|
protected |
Definition at line 57 of file ops.cpp.
References cmd, height, log, memset(), IOForge::mod, resource_id, virtio_gpu_ctrl_hdr::type, VIRTIO_GPU_CMD_RESOURCE_CREATE_2D, VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM, VIRTIO_GPU_RESP_OK_NODATA, virtio_gpu_send_command(), and width.
Referenced by setup().
|
protected |
Definition at line 5 of file ops.cpp.
References cmd, virtio_gpu_resp_display_info::virtio_gpu_display_one::enabled, virtio_gpu_resp_display_info::hdr, virtio_gpu_rect::height, log, memset(), IOForge::mod, virtio_gpu_resp_display_info::pmodes, virtio_gpu_resp_display_info::virtio_gpu_display_one::rect, virtio_gpu_ctrl_hdr::type, VIRTIO_GPU_CMD_GET_DISPLAY_INFO, VIRTIO_GPU_RESP_OK_DISPLAY_INFO, virtio_gpu_send_command(), virtio_gpu_rect::width, virtio_gpu_rect::x, and virtio_gpu_rect::y.
|
protected |
Definition at line 426 of file virtio-gpu.cpp.
References cmd, control_queue_, head, interrupt_exist, log, IOForge::mod, next, virtq_add_buf(), VIRTQ_DESC_F_NEXT, virtq_free_desc(), virtq_get_used_elem(), and virtq_kick().
Referenced by setup(), virtio_gpu_create_resource(), and virtio_gpu_get_display_info().
|
private |
Definition at line 308 of file virtio-gpu.cpp.
References virtq_desc::addr, virtio_gpu_queue::desc, virtq_desc::flags, head, idx, virtq_desc::len, log, IOForge::mod, virtq_desc::next, virtio_gpu_queue::num_free, phys_addr, prev, virtq_alloc_desc(), VIRTQ_DESC_F_NEXT, and VIRTQ_DESC_F_WRITE.
Referenced by virtio_gpu_send_command().
|
private |
Definition at line 242 of file virtio-gpu.cpp.
References virtq_desc::addr, virtio_gpu_queue::desc, virtq_desc::flags, virtio_gpu_queue::free_head, virtq_desc::len, log, IOForge::mod, virtq_desc::next, virtio_gpu_queue::num_free, and virtio_gpu_queue::queue_size.
Referenced by virtq_add_buf().
|
private |
Definition at line 261 of file virtio-gpu.cpp.
References virtio_gpu_queue::desc, virtio_gpu_queue::free_head, virtq_desc::next, and virtio_gpu_queue::num_free.
Referenced by virtio_gpu_send_command().
|
private |
Definition at line 406 of file virtio-gpu.cpp.
References virtq_used_elem::id, virtq_used::idx, virtio_gpu_queue::last_used_idx, len, virtq_used_elem::len, virtio_gpu_queue::queue_size, virtq_used::ring, and virtio_gpu_queue::used.
Referenced by virtio_gpu_send_command().
|
private |
Definition at line 268 of file virtio-gpu.cpp.
References ALIGN_UP, virtio_gpu_queue::avail, base, virtio_gpu_queue::desc, virtio_gpu_queue::free_head, virtq_avail::idx, virtq_used::idx, virtio_gpu_queue::last_used_idx, log, memset(), IOForge::mod, virtq_desc::next, virtio_gpu_queue::num_free, phys_addr, virtio_gpu_queue::phys_addr, queue_size, virtio_gpu_queue::queue_size, virtio_gpu_queue::used, and VIRTIO_GPU_QUEUE_ALIGN.
Referenced by setup().
|
private |
Definition at line 383 of file virtio-gpu.cpp.
References log, IOForge::mod, notify_base_, notify_multiplier_, and notify_offset_.
Referenced by virtio_gpu_send_command().
|
staticprivate |
Definition at line 19 of file virtio-gpu.hpp.
Referenced by setup(), and virtio_gpu_send_command().
|
protected |
Definition at line 16 of file virtio-gpu.hpp.
|
private |
Definition at line 35 of file virtio-gpu.hpp.
|
private |
Definition at line 38 of file virtio-gpu.hpp.
Referenced by setup(), and virtq_kick().
|
private |
Definition at line 37 of file virtio-gpu.hpp.
Referenced by setup(), and virtq_kick().
|
private |
Definition at line 36 of file virtio-gpu.hpp.
Referenced by setup(), and virtq_kick().