cancel
Showing results for 
Search instead for 
Did you mean: 

NeoChrom/GPU2D registers documentation

robvos
Associate

Will this peripheral ever be documented in detail? i.e. registers, interrupts, etc.

Or even a lightweight/low level library would be acceptable.

We may choose STM32U5 for a product but not if we are forced to use TouchGFX for good performance.

 

41 REPLIES 41
yakabmarci
Senior

Did anyone requested the NeoChromeSDK and got it? It was promised that this will be shared via st.com, but in the meantime as a temporary solution this can be requested via mail ( @JMYGI)

I'm still waiting for it, i'm not sure what will it contain. How 'big' you have to be, to actually get it?

I understand that this is 3rd party ip and there are issues what can be shared, but how can developers use it, if there is no documentation on it.

Something like this it would be nice: this is think silicon nema pico xl gpu, it is configured in the following way, give some performance metrics, API, examples, documentation and so on.

 

What would be even nicer is source code for the library, more description of the HW, shader core architecture and its ISA, so developers can write their own shaders (limited as it is, it is still programable and would be useful)

What is there to gain to keep all this secret? It is no advantage that we have all these nice features, but no possibility to use it. Developers will just use a different MCU. ST MCUs don't exist in a void, there are alternatives, competitors.

@yakabmarci The best resource I know is LVGL which since 3 weeks ago, thanks to dedicated effort of Liam Howatt, has supposedly working code supporting GPU2D. I am just trying to make it work, it is dev code on master branch, no release yet. This is the only reason why I still did not abandon all the hope.
See: lvgl/src/draw/nema_gfx at master · lvgl/lvgl
But I agree, ST's approach to this matter and engineer support in general is simply very upsetting.
@JMYGI may not be with the company anymore. It almost seems like they try to drastically reduce staff costs before some merger.

i have the STM32H7S78-DK on order, should arrive next week, once i have it i plan to make a bunch of examples, just nemagfx stuff, no touchgfx or lvgl or anyhting else. (with or without ST's help :) ) I already had a look at lvgl, it is a good starting point. The purpose is to evaluate nemagfx performance and usability, suitability for a particular project

Joining NeoChromSDK works now.

@Jack3 Note that although STM32U5A5ZJ has GPU2D, this gpu does not support vector graphics unlike the version found in STM32U5G9.

@TDJ, thank you very much! A bit confusing, because STM32CubeMX didn't show any GPU2D for that one.

STM32U5A5:

STM32U5A5_no_GPU2D.png

STM32U5G9:

STM32U5G9_GPU2D.png

And does the STM32U5G7 support vector graphics?
https://www.st.com/en/microcontrollers-microprocessors/stm32u5f7-5g7.html

 

I tried a downloaded 'Middlewares\Third_Party\NemaGFX'
It has a libnemagfx.a in the lib directory.

I attached the NemaGFX directory in a zip file.

Adding include path:

nemagfx_include.png

Adding it in library paths:

Library_Paths.png

Adding library:

Libraries_nemagfx.png

Step by step.

Trying:

 

  nema_sys_init();
  nema_cmdlist_t cl = nema_cl_create(); // Create a new CL
  nema_cl_bind_cmdlist(&cl); // Bind it

 

The first two lines compile well.

The next line calling 'nema_cl_bind_cmdlist(&cl);'
I get

'implicit declaration of function 'nema_cl_bind_cmdlist'; did you mean 'nema_cl_add_cmd'? [-Wimplicit-function-declaration]'

So we are not yet there.

I guess, I need more information to use it properly.

Once I get things working, I'd like to put up examples.

 

Update: Going with NeoChromSDK is the right way, of course.

@Jack3 Although I cannot debug your code, I can reassure you that LVGL 9.3 (pre-release, dev branch) after very recent fixes compiles and works well using GPU2D with STM32U5G9. STM32U5A9 should work too but no vector graphics.

You may be missing
-L{your_dir_with_nemagfx lib}/gcc -l:libnemagfx-float-abi-hard.a
directive but it is a long shot.

NEMA driver impl. details can be found here:

lvgl/src/draw/nema_gfx at master · lvgl/lvgl

I have done performance comparisons against previous major version 8.3 which show that e.g. image rotation in LVGL 9.3 is way faster than it used to be. See:
NEMA GFX 9.3 initial performance vs DMA2D 8.3 · Issue #7423 · lvgl/lvgl

TDJ
Lead

@Jack3 To clarify and correct myself: STM32U5A5 does NOT have GPU2D, but STM32U5A9 does - although without vector graphics. GPU2D with vector graphics is found on STM32U5G9.

nema_cl_bind_cmdlist(&cl); i think the right function is just nema_cl_bind

so while waiting for the promised documentation which i never got (did anyone get it), i had a closer look in the library. i think i know why the reluctance to share anything, the whole thing is a mess, it is very fiddly, it has many unexpected limitations, you try to do things a little bit differently and it doesn't work anymore, good luck finding out why. i managed to get a rough overview about the register map and shader vliw structure, it is very, very limited and messy,  it would be nice if more details could be shared, i get it that it is a 3rd party IP, but it is pretty basic, all same class gpus work pretty much the same way, what is there to protect? aren't there some open source embedded gpus out there? i would prefer openness even if less performant