Commit Graph

5 Commits

Author SHA1 Message Date
Yann MAGNIN 752757e0ef VxKernel 0.6.0-13 : Add keyboard API + update timer API
@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)
2022-06-24 15:33:36 +02:00
Yann MAGNIN c966807cd7 VxKernel 0.6.0-12 : Fix image rendering + fix shader crash
@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
2022-06-21 18:43:11 +02:00
Yann MAGNIN b2fc0db544 VxKernel 0.6.0-11 : Update text/font architecture
@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
2022-06-20 16:29:28 +02:00
Yann MAGNIN 510c4f1f86 VxKernel 0.6.0-2 : Prepare font and text API (WIP)
@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)
2022-05-28 21:55:48 +02:00
Yann MAGNIN a916120d66 VxKernel 0.6.0-1 : Rework the graphic pipeline
@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)
2022-05-27 11:57:55 +02:00