Add AR24 & AB24 formats
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 29 Oct 2015 22:38:06 +0000 (00:38 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Sat, 31 Oct 2015 06:55:04 +0000 (08:55 +0200)
libkms++/dumbframebuffer.cpp
libkms++/pixelformats.h
libkmstest/color.cpp
libkmstest/testpat.cpp

index c64010aa3df88fc278edae147b4acb37f7cb5a4c..fa5562cea1f21df701cb1507982862527c428d1a 100644 (file)
@@ -65,6 +65,8 @@ static const map<PixelFormat, FormatInfo> format_info_array = {
        /* RGB32 */
        { PixelFormat::XRGB8888, { 1, { { 32, 1, 1 } }, } },
        { PixelFormat::XBGR8888, { 1, { { 32, 1, 1 } }, } },
+       { PixelFormat::ARGB8888, { 1, { { 32, 1, 1 } }, } },
+       { PixelFormat::ABGR8888, { 1, { { 32, 1, 1 } }, } },
 };
 
 void DumbFramebuffer::Create()
index 75e325c88a2c56d0457b0eee712354fa53a143d8..693dceeaa62b645a9c236d7333ec8de995c90586 100644 (file)
@@ -19,6 +19,9 @@ enum class PixelFormat : uint32_t
 
        XRGB8888 = MakeFourCC("XR24"),
        XBGR8888 = MakeFourCC("XB24"),
+       ARGB8888 = MakeFourCC("AR24"),
+       ABGR8888 = MakeFourCC("AB24"),
+
        RGB565 = MakeFourCC("RG16"),
 };
 
index 4d4a7414a37f8f06967b5755a5566d9487856832..78012ac845adde3428d6e033f6407338c5b40e7c 100644 (file)
@@ -4,7 +4,8 @@ namespace kms
 {
 RGB::RGB()
 {
-       r = g = b = a = 0;
+       r = g = b = 0;
+       a = 255;
 }
 
 RGB::RGB(uint8_t r, uint8_t g, uint8_t b)
@@ -12,17 +13,17 @@ RGB::RGB(uint8_t r, uint8_t g, uint8_t b)
        this->r = r;
        this->g = g;
        this->b = b;
-       this->a = 0;
+       this->a = 255;
 }
 
 uint32_t RGB::rgb888() const
 {
-       return (r << 16) | (g << 8) | (b << 0);
+       return (a << 24) | (r << 16) | (g << 8) | (b << 0);
 }
 
 uint32_t RGB::bgr888() const
 {
-       return (b << 16) | (g << 8) | (r << 0);
+       return (a << 24) | (b << 16) | (g << 8) | (r << 0);
 }
 
 uint16_t RGB::rgb565() const
index 1618855aaa6d9ee2d77f9c6f7f2392df5a7ed0ea..b054cf6d6f822116fbcef3ed5bd7b948d1b5102b 100644 (file)
@@ -20,12 +20,14 @@ static void draw_rgb_pixel(DumbFramebuffer& buf, unsigned x, unsigned y, RGB col
 {
        switch (buf.format()) {
        case PixelFormat::XRGB8888:
+       case PixelFormat::ARGB8888:
        {
                uint32_t *p = (uint32_t*)(buf.map(0) + buf.stride(0) * y + x * 4);
                *p = color.rgb888();
                break;
        }
        case PixelFormat::XBGR8888:
+       case PixelFormat::ABGR8888:
        {
                uint32_t *p = (uint32_t*)(buf.map(0) + buf.stride(0) * y + x * 4);
                *p = color.bgr888();
@@ -219,6 +221,8 @@ static void draw_test_pattern_impl(DumbFramebuffer& fb)
        switch (fb.format()) {
        case PixelFormat::XRGB8888:
        case PixelFormat::XBGR8888:
+       case PixelFormat::ARGB8888:
+       case PixelFormat::ABGR8888:
        case PixelFormat::RGB565:
                for (y = 0; y < h; y++) {
                        for (x = 0; x < w; x++) {