From 34e63f641195019e903104c8b9e6eb855efeee2c Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 16 Jun 2016 17:59:07 +0300 Subject: Support RGB888 --- kms++/inc/kms++/pixelformats.h | 2 ++ kms++/src/pixelformats.cpp | 2 ++ kms++util/src/drawing.cpp | 9 +++++++++ kms++util/src/testpat.cpp | 1 + py/pykmsbase.cpp | 2 ++ 5 files changed, 16 insertions(+) diff --git a/kms++/inc/kms++/pixelformats.h b/kms++/inc/kms++/pixelformats.h index 813eaef..8ecfcb3 100644 --- a/kms++/inc/kms++/pixelformats.h +++ b/kms++/inc/kms++/pixelformats.h @@ -27,6 +27,8 @@ enum class PixelFormat : uint32_t ARGB8888 = MakeFourCC("AR24"), ABGR8888 = MakeFourCC("AB24"), + RGB888 = MakeFourCC("RG24"), + RGB565 = MakeFourCC("RG16"), }; diff --git a/kms++/src/pixelformats.cpp b/kms++/src/pixelformats.cpp index f2b1137..ee2356d 100644 --- a/kms++/src/pixelformats.cpp +++ b/kms++/src/pixelformats.cpp @@ -17,6 +17,8 @@ static const map format_info_array = { { PixelFormat::NV21, { 2, { { 8, 1, 1, }, { 8, 2, 2 } }, } }, /* RGB16 */ { PixelFormat::RGB565, { 1, { { 16, 1, 1 } }, } }, + /* RGB24 */ + { PixelFormat::RGB888, { 1, { { 24, 1, 1 } }, } }, /* RGB32 */ { PixelFormat::XRGB8888, { 1, { { 32, 1, 1 } }, } }, { PixelFormat::XBGR8888, { 1, { { 32, 1, 1 } }, } }, diff --git a/kms++util/src/drawing.cpp b/kms++util/src/drawing.cpp index cb6fbf6..157c799 100644 --- a/kms++util/src/drawing.cpp +++ b/kms++util/src/drawing.cpp @@ -23,6 +23,14 @@ void draw_rgb_pixel(IMappedFramebuffer& buf, unsigned x, unsigned y, RGB color) *p = color.abgr8888(); break; } + case PixelFormat::RGB888: + { + uint8_t *p = buf.map(0) + buf.stride(0) * y + x * 3; + p[0] = color.r; + p[1] = color.g; + p[2] = color.b; + break; + } case PixelFormat::RGB565: { uint16_t *p = (uint16_t*)(buf.map(0) + buf.stride(0) * y + x * 2); @@ -150,6 +158,7 @@ static void draw_char(IMappedFramebuffer& buf, uint32_t xpos, uint32_t ypos, cha case PixelFormat::XBGR8888: case PixelFormat::ARGB8888: case PixelFormat::ABGR8888: + case PixelFormat::RGB888: case PixelFormat::RGB565: for (y = 0; y < 8; y++) { for (x = 0; x < 8; x++) { diff --git a/kms++util/src/testpat.cpp b/kms++util/src/testpat.cpp index cbe611d..1297e61 100644 --- a/kms++util/src/testpat.cpp +++ b/kms++util/src/testpat.cpp @@ -104,6 +104,7 @@ static void draw_test_pattern_part(IMappedFramebuffer& fb, unsigned start_y, uns case PixelFormat::XBGR8888: case PixelFormat::ARGB8888: case PixelFormat::ABGR8888: + case PixelFormat::RGB888: case PixelFormat::RGB565: for (y = start_y; y < end_y; y++) { for (x = 0; x < w; x++) { diff --git a/py/pykmsbase.cpp b/py/pykmsbase.cpp index c218c81..f1e0c5c 100644 --- a/py/pykmsbase.cpp +++ b/py/pykmsbase.cpp @@ -114,6 +114,8 @@ void init_pykmsbase(py::module &m) .value("ARGB8888", PixelFormat::ARGB8888) .value("ABGR8888", PixelFormat::ABGR8888) + .value("RGB888", PixelFormat::RGB888) + .value("RGB565", PixelFormat::RGB565) ; -- cgit v1.2.3