1) Probably its only my misunderstanding, but here is a problem:
Layer1 have same size and viewable area of display (800*400), pixel format L8 (with CLUT, ofc). I'm planning to put GUI there - occasional partial redraw of small areas (text, icons, indicators, so on).
Layer2 have size about 500*200 pixels and located inside viewable area, pixel format AL88. I was planning to use it for spectrum display - periodic redraw of full layer. I thought to place grid for spectrum to that area on Layer1 under Layer2, so blending will "mix" image of spectrum and image of grid to one nicey shiney picture.
But I found out that its not working. "Default color" of Layer2 (LTDC_Layer2->DCCR) completely covers underlaying layer, and it does not respect its own alpha settings. Ofc, i can set layer' constant alpha, but this makes both layers less juicy. I tried color keying: LTDC_Layer2->CKCR = 0; LTDC_Layer2->CR = LTDC_LxCR_CLUTEN | LTDC_LxCR_LEN | LTDC_LxCR_COLKEN; - so black color should be color key. Nop, didnt work, same screeening. So layer2 can completely screen Layer1, even if its only 1x1 pixel size.. i dont understand point of this mechanics.
Is it possible to make only part of layer to be opaque while rest of it stays transparent? Is it possible with AL88 pixel format? I want to save SDRAM bandwidth for some other tasks too
2) when both layers are visible (constant alpha is about 128 for Layer2 - so its stays visible and so do Layer1) I see small vertical lines near painted areas (clear screen and some colored areas just to see whats going on), those lines consist of random colored pixels, looks like noise. I dont think that this is memory issue or LTDC starving for data - pixel clock is only 36 MHz, memory works on 108 MHZ and its 32-bit wide. Horizontal distance between those lines looks very suspicious - i'm not sure, but it looks like 64 pixels... what can be wrong with it? Im absolutely sure that this is not oscillations on bus or something physical.