apps/examples/ft80x: Add a few more demos of GPU primitive operations.
This commit is contained in:
parent
64a4622437
commit
c755ac0316
@ -145,6 +145,8 @@ int ft80x_bitmaps(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
|||||||
#endif
|
#endif
|
||||||
int ft80x_points(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
int ft80x_points(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
||||||
int ft80x_lines(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
int ft80x_lines(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
||||||
|
int ft80x_linestrip(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
||||||
|
int ft80x_edgestrip_r(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
||||||
int ft80x_rectangles(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
int ft80x_rectangles(int fd, FAR struct ft80x_dlbuffer_s *buffer);
|
||||||
|
|
||||||
/* Co-processor display examples */
|
/* Co-processor display examples */
|
||||||
|
@ -64,23 +64,77 @@ struct ft80x_exampleinfo_s
|
|||||||
* Private Data
|
* Private Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* GPU Primitive display examples. Most primitives are used, but not many of
|
||||||
|
* their various options.
|
||||||
|
*/
|
||||||
|
|
||||||
static const struct ft80x_exampleinfo_s g_primitives[] =
|
static const struct ft80x_exampleinfo_s g_primitives[] =
|
||||||
{
|
{
|
||||||
|
/* NAME EXAMPLE ENTRY PRIMITIVE */
|
||||||
#ifndef CONFIG_EXAMPLES_FT80X_EXCLUDE_BITMAPS
|
#ifndef CONFIG_EXAMPLES_FT80X_EXCLUDE_BITMAPS
|
||||||
{ "Bitmaps", ft80x_bitmaps }, /* Bitmap drawing primitive */
|
{ "Bitmaps", ft80x_bitmaps }, /* BITMAPS Bitmap drawing
|
||||||
|
* primitive */
|
||||||
#endif
|
#endif
|
||||||
{ "Points", ft80x_points }, /* Point drawing primitive */
|
{ "Points", ft80x_points }, /* POINTS Point drawing
|
||||||
{ "Lines", ft80x_lines }, /* Line drawing primitive */
|
* primitive */
|
||||||
/* Line strip drawing primitive */
|
{ "Lines", ft80x_lines }, /* LINES Line drawing */
|
||||||
/* Edge strip right side drawing primitive */
|
{ "Line Strip", ft80x_linestrip }, /* LINE_STRIP Line strip drawing
|
||||||
/* Edge strip left side drawing primitive */
|
* primitive */
|
||||||
/* Edge strip above drawing primitive */
|
{ "Edge Strip R", ft80x_edgestrip_r }, /* EDGE_STRIP_R Edge strip right
|
||||||
/* Edge strip below side drawing primitive */
|
* side drawing
|
||||||
{ "Rectangles", ft80x_rectangles } /* Rectangle drawing primitive */
|
* primitive */
|
||||||
|
/* EDGE_STRIP_L Edge strip left
|
||||||
|
* side drawing
|
||||||
|
* primitive */
|
||||||
|
/* EDGE_STRIP_A Edge strip above
|
||||||
|
* side drawing
|
||||||
|
* primitive */
|
||||||
|
/* EDGE_STRIP_B Edge strip below
|
||||||
|
* side drawing
|
||||||
|
* primitive */
|
||||||
|
{ "Rectangles", ft80x_rectangles } /* RECTS Rectangle drawing
|
||||||
|
* primitive */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NPRIMITIVES (sizeof(g_primitives) / sizeof(ft80x_example_t))
|
#define NPRIMITIVES (sizeof(g_primitives) / sizeof(ft80x_example_t))
|
||||||
|
|
||||||
|
/* Co-processor display examples. Only a small, but interesting, subset
|
||||||
|
* here co-processor command are exercised and these with only a few of the
|
||||||
|
* possible options.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* CMD_TEXT Draw text */
|
||||||
|
/* CMD_BUTTON Draw a button */
|
||||||
|
/* CMD_CLOCK Draw an analog
|
||||||
|
* clock */
|
||||||
|
/* CMD_GAUGE Draw a gauge */
|
||||||
|
/* CMD_KEYS Draw a row of
|
||||||
|
* keys */
|
||||||
|
/* CMD_PROGRESS Draw a progress
|
||||||
|
* bar */
|
||||||
|
/* CMD_SCROLLBAR Draw a scroll bar */
|
||||||
|
/* CMD_SLIDER Draw a slider */
|
||||||
|
/* CMD_DIAL Draw a rotary
|
||||||
|
* dial control */
|
||||||
|
/* CMD_TOGGLE Draw a toggle
|
||||||
|
* switch */
|
||||||
|
/* CMD_NUMBER Draw a decimal
|
||||||
|
* number */
|
||||||
|
/* CMD_CALIBRATE Execute the touch
|
||||||
|
* screen calibration
|
||||||
|
* routine */
|
||||||
|
/* CMD_SPINNER Start an animated
|
||||||
|
* spinner */
|
||||||
|
/* CMD_SCREENSAVER Start an animated
|
||||||
|
* screensaver */
|
||||||
|
/* CMD_SKETCH Start a continuous
|
||||||
|
* sketch update */
|
||||||
|
/* CMD_SNAPSHOT Take a snapshot
|
||||||
|
* of the current
|
||||||
|
* screen */
|
||||||
|
/* CMD_LOGO Play device logo
|
||||||
|
* animation */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -234,6 +234,80 @@ int ft80x_lines(int fd, FAR struct ft80x_dlbuffer_s *buffer)
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: ft80x_linestrip
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Demonstrate the line strip primitive
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int ft80x_linestrip(int fd, FAR struct ft80x_dlbuffer_s *buffer)
|
||||||
|
{
|
||||||
|
uint32_t cmds[7];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Format the display list data */
|
||||||
|
|
||||||
|
cmds[0] = FT80X_CLEAR_COLOR_RGB(5, 45, 10);
|
||||||
|
cmds[1] = FT80X_COLOR_RGB(255, 168, 64);
|
||||||
|
cmds[2] = FT80X_CLEAR(1 ,1 ,1);
|
||||||
|
cmds[3] = FT80X_BEGIN(FT80X_PRIM_LINE_STRIP);
|
||||||
|
cmds[4] = FT80X_VERTEX2F(16 * 16, 16 * 16);
|
||||||
|
cmds[5] = FT80X_VERTEX2F(((FT80X_DISPLAY_WIDTH * 2) /3) * 16,
|
||||||
|
(FT80X_DISPLAY_HEIGHT * 2 / 3) * 16);
|
||||||
|
cmds[6] = FT80X_VERTEX2F((FT80X_DISPLAY_WIDTH - 80) * 16,
|
||||||
|
(FT80X_DISPLAY_HEIGHT - 20) * 16);
|
||||||
|
|
||||||
|
/* Create the hardware display list */
|
||||||
|
|
||||||
|
ret = ft80x_dl_create(fd, buffer, cmds, 7);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
ft80x_err("ERROR: ft80x_dl_create failed: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: ft80x_edgestrip_r
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Demonstrate the edge strip right primitive
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int ft80x_edgestrip_r(int fd, FAR struct ft80x_dlbuffer_s *buffer)
|
||||||
|
{
|
||||||
|
uint32_t cmds[7];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Format the display list data */
|
||||||
|
|
||||||
|
cmds[0] = FT80X_CLEAR_COLOR_RGB(5, 45, 10);
|
||||||
|
cmds[1] = FT80X_COLOR_RGB(255, 168, 64);
|
||||||
|
cmds[2] = FT80X_CLEAR(1 ,1 ,1);
|
||||||
|
cmds[3] = FT80X_BEGIN(FT80X_PRIM_EDGE_STRIP_R);
|
||||||
|
cmds[4] = FT80X_VERTEX2F(16 * 16,16 * 16);
|
||||||
|
cmds[5] = FT80X_VERTEX2F(((FT80X_DISPLAY_WIDTH * 2) / 3 ) * 16,
|
||||||
|
((FT80X_DISPLAY_HEIGHT * 2) / 3 ) * 16);
|
||||||
|
cmds[6] = FT80X_VERTEX2F((FT80X_DISPLAY_WIDTH - 80) * 16,
|
||||||
|
(FT80X_DISPLAY_HEIGHT - 20) * 16);
|
||||||
|
|
||||||
|
/* Create the hardware display list */
|
||||||
|
|
||||||
|
ret = ft80x_dl_create(fd, buffer, cmds, 7);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
ft80x_err("ERROR: ft80x_dl_create failed: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ft80x_rectangles
|
* Name: ft80x_rectangles
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user