symbian-qemu-0.9.1-12/qemu-symbian-svp/plugins/syborg_graphicsdevice.py
author jahyvone@4FIL49437
Wed, 02 Jun 2010 11:02:14 +0300
branchgraphics-phase-3
changeset 77 b3dcdc7f8f12
child 99 542d4bc8b7ca
permissions -rw-r--r--
start graphics-phase-3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     1
import ctypes
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     2
import qemu
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     3
import sys
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     4
#import SyborgModule
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     5
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     6
class syborg_graphicsdevice(qemu.devclass):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     7
    # Graphics device registers derived from VirtualVideoInterfaceConstants.h
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     8
    VVI_R_ID                                = 0x0000
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
     9
    VVI_R_IRQ_ENABLE                        = 0x0004
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    10
    VVI_R_IRQ_STATUS                        = 0x0008
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    11
    VVI_R_COMMAND                           = 0x000c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    12
    VVI_R_PARAMETER_LOAD                    = 0x0010
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    13
    VVI_R_ERROR                             = 0x0014
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    14
    VVI_R_INPUT_BUFFER_TAIL                 = 0x0018
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    15
    VVI_R_INPUT_BUFFER_HEAD                 = 0x001c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    16
    VVI_R_INPUT_BUFFER_READ_COUNT           = 0x0020
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    17
    VVI_R_INPUT_BUFFER_WRITE_COUNT          = 0x0024
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    18
    VVI_R_INPUT_BUFFER_MAX_TAIL             = 0x0028
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    19
    VVI_R_REQUEST_ID                        = 0x002c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    20
    VVI_R_SHARED_CMD_MEMORY_BASE            = 0x0030
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    21
    VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE    = 0x0034
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    22
    VVI_R_LASTREG                           = 0x0038  # not a register, address of last register
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    23
    
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    24
    VVI_EXECUTE                             = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    25
    shared_cmd_memory_base                  = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    26
    shared_framebuffer_memory_base          = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    27
    m_request_id_reg = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    28
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    29
    # Memory base id's from SyborgModule.h
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    30
    # SYBORG_CMDMEMBASE = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    31
    # SYBORG_FRAMEBUFFERMEMBASE = 1
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    32
    
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    33
    class DllLoadExeption( Exception ):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    34
        def __init__(self,value):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    35
            self.value = value
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    36
        
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    37
        def __str__(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    38
            return repr(self.value)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    39
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    40
    class SyborgGraphicsWrapper():
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    41
        def __init__(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    42
            try:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    43
                self.library = ctypes.CDLL("syborg-graphicswrapper.dll")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    44
            except:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    45
                raise syborg_graphicsdevice.DllLoadExeption(1)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    46
            self.obj = self.library.create_SyborgGraphicsWrapper()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    47
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    48
        def initialize_graphics_utils(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    49
            self.library.initialize_SyborgGraphicsWrapper( self.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    50
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    51
    def create(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    52
        try:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    53
            self.graphicsutils = self.SyborgGraphicsWrapper()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    54
        except syborg_graphicsdevice.DllLoadExeption:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    55
            #print "syborg_graphicsdevice: Graphics dll load failed"
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    56
            sys.exit("syborg_graphicsdevice: Graphics dll load failed")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    57
            
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    58
            
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    59
        self.graphicsutils.initialize_graphics_utils()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    60
        self.initialize_graphics_callback()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    61
        # deliver the graphics ram region
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    62
        # self.gmembase = self.graphicsutils.library.get_membase()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    63
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    64
        self.irqenable = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    65
        self.irqstatus = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    66
        self.command = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    67
        self.parameterload = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    68
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    69
    def updateIrq(self,new_value):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    70
        self.set_irq_level(0, new_value)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    71
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    72
    def graphics_request_callback(self, request_id):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    73
        #print "graphics_request_callback: " , request_id
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    74
        self.m_request_id_reg = request_id
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    75
        self.updateIrq(1)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    76
        return 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    77
        
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    78
    def initialize_graphics_callback(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    79
        self.CALLBACKFUNC = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    80
        self.graphics_callback = self.CALLBACKFUNC(self.graphics_request_callback)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    81
        self.graphicsutils.library.set_GraphicsCallBack( self.graphicsutils.obj, self.graphics_callback )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    82
            
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    83
    def read_reg(self, offset):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    84
        offset >>= 2
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    85
        if offset == self.VVI_R_ID:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    86
            return 0xDEADBEEF
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    87
        elif offset == self.VVI_R_IRQ_ENABLE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    88
            return self.irqenable
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    89
        elif offset == self.VVI_R_IRQ_STATUS:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    90
            return self.irqstatus
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    91
        elif offset == self.VVI_R_COMMAND:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    92
            return self.command
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    93
        elif offset == self.VVI_R_PARAMETER_LOAD:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    94
            return self.parameterload
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    95
        elif offset == self.VVI_R_ERROR:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    96
            self.lasterror = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    97
            return self.lasterror
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    98
        elif offset == self.VVI_R_INPUT_BUFFER_TAIL:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    99
            return self.graphicsutils.library.get_InputBufferTail( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   100
        elif offset == self.VVI_R_INPUT_BUFFER_HEAD:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   101
            return self.graphicsutils.library.get_InputBufferHead( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   102
        elif offset == self.VVI_R_INPUT_BUFFER_READ_COUNT:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   103
            return self.graphicsutils.library.get_InputBufferReadCount( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   104
        elif offset == self.VVI_R_INPUT_BUFFER_WRITE_COUNT:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   105
            return self.graphicsutils.library.get_InputBufferWriteCount( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   106
        elif offset == self.VVI_R_INPUT_BUFFER_MAX_TAIL:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   107
            return self.graphicsutils.library.get_InputMaxTailIndex( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   108
        elif offset == self.VVI_R_REQUEST_ID:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   109
            return self.m_request_id_reg
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   110
        elif offset == self.VVI_R_SHARED_CMD_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   111
            return self.shared_cmd_memory_base
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   112
        elif offset == self.VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   113
            return self.shared_framebuffer_memory_base
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   114
        else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   115
            reg_read_error = "syborg_graphicsdevice: Illegal register read at: ", offset 
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   116
            sys.exit( reg_read_error )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   117
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   118
    def write_reg(self, offset, value):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   119
        offset >>= 2
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   120
        if offset == self.VVI_R_IRQ_STATUS:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   121
            self.updateIrq(0);
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   122
            self.graphicsutils.library.signal_outputbuffer_semafore( self.graphicsutils.obj )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   123
            self.graphicsutils.library.execute_command( self.graphicsutils.obj );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   124
        elif offset == self.VVI_R_COMMAND:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   125
            if value == self.VVI_EXECUTE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   126
                self.graphicsutils.library.execute_command( self.graphicsutils.obj );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   127
            else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   128
                sys.exit("syborg_graphicsdevice: Unknown command issued!")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   129
        elif offset == self.VVI_R_INPUT_BUFFER_TAIL:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   130
            self.graphicsutils.library.set_InputBufferTail(  self.graphicsutils.obj, value );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   131
        elif offset == self.VVI_R_INPUT_BUFFER_HEAD:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   132
            self.graphicsutils.library.set_InputBufferHead( self.graphicsutils.obj, value );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   133
        elif offset == self.VVI_R_INPUT_BUFFER_READ_COUNT:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   134
            self.graphicsutils.library.set_InputBufferReadCount( self.graphicsutils.obj, value );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   135
        elif offset == self.VVI_R_INPUT_BUFFER_WRITE_COUNT:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   136
            self.graphicsutils.library.set_InputBufferWriteCount( self.graphicsutils.obj, value );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   137
        elif offset == self.VVI_R_INPUT_BUFFER_MAX_TAIL:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   138
            self.graphicsutils.library.set_InputMaxTailIndex( self.graphicsutils.obj, value );
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   139
        elif offset == self.VVI_R_SHARED_CMD_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   140
            gmemsize = self.graphicsutils.library.get_cmd_memsize()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   141
            self.cmd_memregion = qemu.memregion( value, gmemsize )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   142
            self.memregion_cmd_base = self.cmd_memregion.region_host_addr()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   143
            #SyborgModule.post_address( self.memregion_cmd_base, self.SYBORG_CMDMEMBASE )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   144
        elif offset == self.VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   145
            gmemsize = self.graphicsutils.library.get_framebuffer_memsize()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   146
            self.framebuffer_memregion = qemu.memregion( value, gmemsize )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   147
            self.memregion_framebuffer_base = self.framebuffer_memregion.region_host_addr()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   148
            #SyborgModule.post_address( self.memregion_framebuffer_base, self.SYBORG_FRAMEBUFFERMEMBASE )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   149
            # Ready to finalise graphics initialization
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   150
            if( self.graphicsutils.library.reset_SyborgGraphicsWrapper( self.graphicsutils.obj, self.memregion_framebuffer_base, self.memregion_cmd_base ) != 0 ):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   151
                sys.exit("syborg_graphicsdevice: Syborg graphicsutils library not initialized correctly!")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   152
        else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   153
            reg_write_error = "syborg_graphicsdevice: Illegal register write to: ", offset 
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   154
            sys.exit( reg_write_error )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   155
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   156
    # Device class properties
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   157
    regions = [qemu.ioregion(0x1000, readl=read_reg, writel=write_reg)]
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   158
    irqs = 1
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   159
    name = "syborg,graphicsdevice"
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   160
    properties = {}
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   161
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   162
qemu.register_device(syborg_graphicsdevice)