docs/src/integration/chip_vendors/renesas/glcdc.rst
.. include:: /include/substitutions.txt .. _renesas_glcdc:
Overview
.. image:: /_static/images/renesas/glcdc.png :alt: Architectural overview of Renesas GLCDC :align: center
GLCDC is a multi-stage graphics output peripheral used in Renesas MCUs. It is designed to automatically generate timing and data signals for different LCD panels.
Setting up a project and further integration with Renesas' ecosystem is described in detail on :ref:page Renesas <renesas>.
Check out the following repositories for ready-to-use examples:
EK-RA8D1 <https://github.com/lvgl/lv_port_renesas_ek-ra8d1_gcc>__EK-RA6M3G <https://github.com/lvgl/lv_port_renesas_ek-ra6m3g>__RX72N Envision Kit <https://github.com/lvgl/lv_port_renesas_rx72n-envision-kit>__Prerequisites
LV_USE_RENESAS_GLCDC to 1 in your lv_conf.h.Usage
There is no need to implement any platform-specific functions.
The following code demonstrates using the driver in :cpp:enumerator:LV_DISPLAY_RENDER_MODE_DIRECT mode.
.. code-block:: c
lv_display_t * disp = lv_renesas_glcdc_direct_create();
lv_display_set_default(disp);
To use the driver in :cpp:enumerator:LV_DISPLAY_RENDER_MODE_PARTIAL mode, an extra buffer must be allocated,
preferably in the fastest available memory region.
Buffer swapping can be activated by passing a second buffer of same size instead of the :cpp:expr:NULL argument.
.. code-block:: c
static lv_color_t partial_draw_buf[DISPLAY_HSIZE_INPUT0 * DISPLAY_VSIZE_INPUT0 / 10] BSP_PLACE_IN_SECTION(".sdram") BSP_ALIGN_VARIABLE(1024);
lv_display_t * disp = lv_renesas_glcdc_partial_create(partial_draw_buf, NULL, sizeof(partial_draw_buf));
lv_display_set_default(disp);
.. note::
Partial mode can be activated via the macro in ``src/board_init.c`` file of the demo projects.
Software based screen rotation is supported in partial mode. It uses the common API, no extra configuration is required:
.. code-block:: c
lv_display_set_rotation(lv_display_get_default(), LV_DISP_ROTATION_90);
/* OR */
lv_display_set_rotation(lv_display_get_default(), LV_DISP_ROTATION_180);
/* OR */
lv_display_set_rotation(lv_display_get_default(), LV_DISP_ROTATION_270);
Make sure the heap is large enough, as a buffer with the same size as the partial buffer will be allocated.