@add
<> vhex/defs/call
| add common `vhex_call_t` which allow indirect call invocation
| add default helper macros to generate internal struct
| add default helper macros to involve manually the vhex call
<> vhex/dma
| add DMA user-level API
| add DMA user-level types
| add DNA driver-level interface
<> vhex/driver/mpu/sh/sh7305
| [dma] add hardware definition
| [dma] prepare DMA driver definition (WIP)
| [dma] add DMA driver declaration (WIP)
| [dma] prepare DMA primitives (WIP)
<> src/dma
| wrap the DMA driver
| expose the DMA user-level API
| expose the DMA module
@update
<> board/fxcg50/fxcg50.ld
| expose the two VRAM for the future frame render which use the triple
buffering. For now, this method add ~347ko in the generated ELF, but it's a
temporary.
<> driver/mpu/sh/sh7305
| [intc] rename some kernel-level function
| [intc] use the new vhex call mechanism instead of timer-specific indirect call
| [intc] update the generic interrupt handler installation
| [intc] isolate the generic interrupt handler
| [rtc] use the new vhex call mechanism instead of rtc-specific indirect call
| [keysc] use the new vhex call mechanism
@fix
<> src
| [keyboard] fix key_t type definition
| [keyboard] fix the driver priority
| [timer] fix the driver priority
@update
<> configure
| use TOML file format instead of INI for board description
| block configuration script if it's not involved by the vxSDK
| comment code and write documentation (WIP)
| allow kernel module selection
<> Makefile
| block compilation step if it's not involved by the vxSDK
| remove the "build/" directory creation
| moved to the root directory of the project
<> src/modules -> src
| moved all "kernel modules" in the root directory
| remove "kernel/" part of the project : now linked to the interrupt controller
<> vxsdk.toml
| change compilation steps
@fix
<> driver/mpu/sh/sh7305/intc
| fix TLB interrupt handler freeze
| link kernel panic (exception/TLB)
<> include/vhex/display
| add image API by default
@add
<> include/vhex/driver/mpu/sh/sh7305/keysc
| add internal driver primitives
<> include/vhex/driver/mpu/sh/sh7305/tmu
| add internal driver primitives
<> include/vhex/keyboard
| add getkey* (high-level) API
| add key event API
| add key status API
| add keycode information
| add keyboard driver interface
@update
<> include/vhex/driver
| add KEYBOARD driver flags
<> include/vhex/keyboard
| isolate each part of the keyboard module
| link the keycache part with the driver-provided keycache information
<> src/drivers/mpu/sh/sh7305/keysc
| use the new keycache API (high-level interrupt handler)
| update keycache API
| link the new API in the driver device
<> src/drivers/mpu/sh/sh7305/tmu
| add timer reservation (WIP)
| use a "reservation" cache to known which timer is free instead of hardware
| rename internal functions
<> src/module/display
| Now, by default, DSTACK_CALL() create a pointer on a dstack_call_t
| use dsubimage dstack primitive in dimage()
@fix
<> board/fxcg50/fxcg50.ld
| remove the IL-memory and allow only the X-memory area. This because the
bootloader uses the IL-memory for DMA transfer and other "low-level"
routine used by Gint.
Moreover, I originally try to move each "display-driver" in this place,
but after some profiling and tests, the dclear()/dupdate() combo went from
9155us up to 33250us (for many reason). So, I keep this area free, but I
moved-back from RAM display routines.
<> board/fxcg50/initialize
| remove "section" copy. This role has been delegated to the bootload (vxBoot)
because, in the final ELF file generated by GCC, many relocalization
information for the IL/X memory has been set and the bootloader cannot
performs general relocalization.
So, all "special section/memory" displacement has been moved in the
bootloader and we don't have to worrying about the section copy.
<> src/drivers/mpu/sh/sh7305/tmu
| fix delay calculation in timer reload primitive
| disable interruption for profiling timer
<> src/module/dislay/
| fix shader index used during the dstack_render()
| fix many errors in dimage() shadow render (WIP)
@update
<> include/display/image/render
| update dimage_* prototype to force return the display ID
| update dimage_* prototype to change the arguments order
| isolate "render" part of the API and the "shader" part
| prepare shadow shader primitives
<> include/display/shader
| change routine prototype (remove routine status)
| update macros, to generate directly usable dshader_call_t pointer
| add shader primitives to add shader on some display action
<> src/modules/display/stack
| update shader allocation sizeof for more visibility
| isolate shader adding
<> src/modules/display/image
| isolate each render primitive in "render/" sub-folder
| isolate each shader primitive in "shader/" sub-folder
| prepare shadow shader code (WIP)
| enable image rendering for image with no alpha channel
@fix
<> src/modules/display/stack
| remove memset() which removed shader table allocation
@update
<> board/fxcg50.ld
| add on-chip IL memory information
| add ".vhex.ilram" section
<> board/initialize
| relocalize IL memory code
<> include/vhex/display && src/modules/display
| update color information
| use only "dsurface_t" type
| isolate the dsurface_t types
| isolate interface structure information
| isolate shader structure information
| remove dstack configuration structure
| remove draw/frag information and use only one VRAM information
<> include/vhex/display/font
| isolate structure-oriented information in <vhex/display/font/types.h>
| isolate render API information in <vhex/display/font/render.h>
| isolate information API in <vhex/display/font/information.h>
<> include/vhex/display/text
| isolate render API information in <vhex/display/text/render.h>
| isolate information API in <vhex/display/text/information.h>
<> make/Makefile
| enable DSP instructions
<> src/drivers/screen/r61524
| try to use the DSP instruction for the sending loop, but seems to be a bit
too slow instead of the "full-CPU" version generated by GCC
@add
<> src/modules/display/text/dascii
| proof-of-concept of "one-char" drawing API (used for kernel debug)
<> src/modules/fs
| empty File System module used to expose some primitives used by the libc:
| write(), read(), lseek() and close() which there have been removed from the
| `fxlibc` project which used an old / deprecated ABI/sycall interface that
| doesn't exist in this version of Vhex
@update
<> include/display/draw/pixel
| remove the display ID returned by dpixel(). All primitives that support
| shaders must provide explicit API. This to allow fast-optimized API and
| polyvalence API for shadering which impact the performance
<> src/modules/display/dclear
| isolate tree level for this primitive:
| - kernel : direct fragment drawing primitive (by-pass dstack)
| - dstack : dstack drawing primitive
| - user : user drawing primitive (dstack-API)
| invalidate automatically the dstack each time the primitive (user-level) is
| involved
<> src/modules/display/dstack
| isolate the dstack invalidate part in a specific primitive
@fix
<> make/Makefile
| proper support of the OpenLibm header path
<> src/drivers/screen/r61524
| proper support of the last data fragment size. This caused an override on
| the first X line of the screen
<> src/modules/display/dstack
| fix a crash when the number of action is full
| fix a crash with the default index used for action cache
| fix a crash with the default index used for shader cache
| fix action initialization
| fix action quit primitive
<> src/modules/display/text/dfont
| fix the character drawing algorithm
| proper support of the character drawing color (foreground/background)
| fix the kernel-level primitive used to display a Unicode string
<> src/modules/display/text/dtext
| fix a crash with the internal index counter
| fix a crash in the internal cache
| fix the quit function
@add
<> include/vhex/display :
| add dwidth() primitive
| add dheight() primitive
<> include/vhex/display/font :
| create a font structure that support proportional font
| expose font primitives API (WIP)
<> vhex/module/display/text/dfont:
| support utf8 string format
| add geometry font information (WIP)
<> vhex/module/display/text/dtext:
| write most of the API primitive (WIP)
| proper isolation between font <-> text API
@update
<> include/vhex/display/shader :
| add a quit() routine that will be involved at the end of dupdate()
| add display_[width/height] in driver interface
| add display screen information primitives
<> vhex/drivers/screen/r61524/r61524.c
| add display driver interface screen information
<> vhex/module/display/dclear:
| use the 32-bits arguments instead of the broken dshader_call_arg_t
| support the new API with quit() routine
<> vhex/module/display/dstack:
| support the new display screen information
| support the quit() routine at the end of the dupdate()
@fix
<> include/vhex/display/shader :
| remove broken transparent-union implicit cast
| fix argument transmitted to drawing routine (only 32bit arguments supported)
@add
<> board/fxcg50/fxcg50-dynamic.ld : add the "user/addin" linker script
<> include/vhex/display* : rework the graphic API/pipeline
<> include/vhex/driver/scree/r61524 : add hardware description and API
<> drivers/screen/r61524 : add r61524 driver
<> module/display/dstack : new pipeline
@update
<> board/fxcg50/board : explicitly set the DWIDTH/DHEIGHT define
<> board/fxcg50/hypervisor : API update (WIP)
<> include/vhex/driver :
| update driver information (use bitfield instead of define and macros)
| configure driver's primitive cannot be NULL
| driver can embed module data (ex: r61524 embed display module primitives)
<> include/vhex/hypervisor :
| update driver information (use bitfield instead of define and macros)
| update world information (use bitfield instead of define and macros)
| remove useless "restricted" keyword in prototype
<> make/Makefile : add the support of the vxSDK (0.12.0)
<> module/display/dclear : support of the new pipeline
<> module/display/display : support of the new pipeline
<> module/display/dupdate : support of the new pipeline
<> module/hypervisor/switch : support new driver/world structure
<> module/hypervisor/table : support new driver/world structure
<> vxsdk.toml : support of the vxSDK 0.12.0
@fix
<> drivers/mpu/sh/sh7305/cpu/cpu : mask interrupt by default (cpu_atomic_end)
@add
<> board/fx9860g/board : board description for the fx9860G device
<> board/fx9860g/fx9860g.ld : linker script for the fx9860G device
<> board/fx9860g/initialize : device-specific entry for the fx9860g device
<> board/fxcg50/_Exit : define our own _Exit() function for the fxlibc
<> board/fxcg50/board : board description for the fxcg50 device
<> board/fxcg50/fxcg50.ld : linker script for the fxcg50 device
<> board/fxcg50/hardware : hardware detection for the fxcg50 device
<> board/fxcg50/initialize : device-specific entry for the fxcg50 device
<> config : configuration script for the vxKernel build system
<> make/Makefile : initial Makefile (must be used with the vxsdk)
<> include/vhex/arch/fxcg50/hardware : hardware definition for the fxcg50 device
<> include/vhex/defs/attributes : define common attributes macros
<> include/vhex/defs/types : define all types information
<> include/vhex/hardware : expose hardware "module" API
<> include/vhex/kernel : expose kernel "module" API
<> include/vhex/mmu : expose MMU "module" API
<> include/vhex/mpu/sh7305/mmu : MMU hardware definition
<> include/vhex/mpu/sh7305/pfc : PFC hardware definition
<> src/drivers/mpu/sh/sh7305/mmu : MMU driver definition
<> src/kernel/kernel : kinit() and kquit() definition