11#include <kore3/kompjuta/device_functions.h>
22
3+ #include <kore3/gpu/commandlist.h>
34#include <kore3/gpu/device.h>
45#include <kore3/util/align.h>
56
67#include <kore3/log.h>
78#include <kore3/window.h>
89
10+ #include <stdlib.h>
11+
12+ #include <kore3/backend/mmio.h>
13+
914void kore_kompjuta_device_create (kore_gpu_device * device , const kore_gpu_device_wishlist * wishlist ) {}
1015
1116void kore_kompjuta_device_destroy (kore_gpu_device * device ) {}
@@ -14,7 +19,11 @@ void kore_kompjuta_device_set_name(kore_gpu_device *device, const char *name) {}
1419
1520void kore_kompjuta_device_create_buffer (kore_gpu_device * device , const kore_gpu_buffer_parameters * parameters , kore_gpu_buffer * buffer ) {}
1621
17- void kore_kompjuta_device_create_command_list (kore_gpu_device * device , kore_gpu_command_list_type type , kore_gpu_command_list * list ) {}
22+ void kore_kompjuta_device_create_command_list (kore_gpu_device * device , kore_gpu_command_list_type type , kore_gpu_command_list * list ) {
23+ list -> kompjuta .commands_count = 1024 ;
24+ list -> kompjuta .commands = malloc (sizeof (kompjuta_gpu_command ) * list -> kompjuta .commands_count );
25+ list -> kompjuta .current_command = 0 ;
26+ }
1827
1928void kore_kompjuta_device_create_texture (kore_gpu_device * device , const kore_gpu_texture_parameters * parameters , kore_gpu_texture * texture ) {}
2029
@@ -26,7 +35,20 @@ kore_gpu_texture_format kore_kompjuta_device_framebuffer_format(kore_gpu_device
2635 return KORE_GPU_TEXTURE_FORMAT_RGBA8_UNORM ;
2736}
2837
29- void kore_kompjuta_device_execute_command_list (kore_gpu_device * device , kore_gpu_command_list * list ) {}
38+ void kore_kompjuta_device_execute_command_list (kore_gpu_device * device , kore_gpu_command_list * list ) {
39+ uint8_t * mmio = (uint8_t * )MMIO_BASE ;
40+
41+ uint64_t * list_address = (uint64_t * )& mmio [COMMAND_LIST_ADDR ];
42+ * list_address = (uint64_t )list -> kompjuta .commands ;
43+
44+ uint32_t * list_size = (uint32_t * )& mmio [COMMAND_LIST_SIZE ];
45+ * list_size = list -> kompjuta .commands_count ;
46+
47+ uint8_t * execute = & mmio [EXECUTE_COMMAND_LIST ];
48+ * execute = 1 ;
49+
50+ list -> kompjuta .current_command = 0 ;
51+ }
3052
3153void kore_kompjuta_device_wait_until_idle (kore_gpu_device * device ) {}
3254
0 commit comments