5530e7f37ce0b086faf96af9f9c5003a65569b27
[tpg/acess2.git] / KernelLand / Modules / Interfaces / UDI / trans / gfx.c
1 /*
2  * Acess2 UDI Layer
3  * - By John Hodge (thePowersGang)
4  *
5  * trans/gfx.c
6  * - Graphics interface
7  */
8 #define DEBUG   1
9 #define UDI_VERSION 0x101
10 #define UDI_GFX_VERSION 0x101
11 #include <udi.h>
12 #include <udi_gfx.h>
13 #include <acess.h>
14 #include <api_drv_video.h>
15
16 // === TYPES ===
17 typedef struct rdata_s
18 {
19         
20 } rdata_t;
21
22 // === PROTOTYPES ===
23 // --- Management metalang
24 void acessgfx_usage_ind(udi_usage_cb_t *cb, udi_ubit8_t resource_level);
25 void acessgfx_devmgmt_req(udi_mgmt_cb_t *cb, udi_ubit8_t mgmt_op, udi_ubit8_t parent_ID);
26 void acessgfx_final_cleanup_req(udi_mgmt_cb_t *cb);
27 // --- GFX Binding
28 void acessgfx_channel_event_ind(udi_channel_event_cb_t *cb);
29 void acessgfx_bind_ack(udi_gfx_bind_cb_t *cb, udi_index_t sockets, udi_index_t engines, udi_status_t status);
30 void acessgfx_unbind_ack(udi_gfx_bind_cb_t *cb);
31 void acessgfx_set_connector_ack(udi_gfx_state_cb_t *cb);
32 void acessgfx_get_connector_ack(udi_gfx_state_cb_t *cb, udi_ubit32_t value);
33 void acessgfx_range_connector_ack(udi_gfx_range_cb_t *cb);
34 void acessgfx_set_engine_ack(udi_gfx_state_cb_t *cb);
35 void acessgfx_get_engine_ack(udi_gfx_state_cb_t *cb, udi_ubit32_t value);
36 void acessgfx_range_engine_ack(udi_gfx_range_cb_t *cb);
37 void acessgfx_command_ack(udi_gfx_command_cb_t *cb);
38
39 // === CODE ===
40 void acessgfx_usage_ind(udi_usage_cb_t *cb, udi_ubit8_t resource_level)
41 {
42         rdata_t *rdata = UDI_GCB(cb)->context;
43         
44         // Set up structures that don't need interegating the card to do
45         
46         udi_usage_res(cb);
47 }
48
49 void acessgfx_channel_event_ind(udi_channel_event_cb_t *cb)
50 {
51         rdata_t *rdata = UDI_GCB(cb)->context;
52         
53         switch(cb->event)
54         {
55         case UDI_CHANNEL_CLOSED:
56                 udi_channel_event_complete(cb);
57                 return;
58         case UDI_CHANNEL_BOUND:
59                 rdata->active_cb = UDI_GCB(cb);
60                 acessgfx_channel_event_ind$bound(cb->params.parent_bound.bind_cb);
61                 return;
62         default:
63                 // TODO: emit an error of some form?
64                 return;
65         }
66 }
67
68 void acessgfx_channel_event_ind$bound(udi_gfx_bind_cb_t *cb)
69 {
70         rdata_t *rdata = UDI_GCB(bind_cb)->context;
71         
72         // request metalanguage-level bind
73         udi_gfx_bind_req(bind_cb)
74         // Continued in acessgfx_bind_ack
75 }
76
77 void acessgfx_bind_ack(udi_gfx_bind_cb_t *cb, udi_index_t sockets, udi_index_t engines, udi_status_t status)
78 {
79         rdata_t *rdata = UDI_GCB(bind_cb)->context;
80         
81         if( status != UDI_OK ) {
82                 // binding failed
83                 
84                 return ;
85         }
86         
87         // 
88 }
89
90 // === UDI Bindings ===
91

UCC git Repository :: git.ucc.asn.au