jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7242ea324a705e74da8151ae3b32495d58abd779

commit 7242ea324a705e74da8151ae3b32495d58abd779
Author: Jean-Philippe Andre <[email protected]>
Date:   Fri Aug 8 13:46:22 2014 +0900

    Evas: Directly load ETC2 and ETC1+Alpha formats from Eet
    
    When loading those formats from an Eet file, software fallback was
    always happening.
---
 src/modules/evas/loaders/eet/evas_image_load_eet.c | 45 +++++++++++++++++++---
 1 file changed, 40 insertions(+), 5 deletions(-)

diff --git a/src/modules/evas/loaders/eet/evas_image_load_eet.c 
b/src/modules/evas/loaders/eet/evas_image_load_eet.c
index 35cebc5..3c8e49b 100644
--- a/src/modules/evas/loaders/eet/evas_image_load_eet.c
+++ b/src/modules/evas/loaders/eet/evas_image_load_eet.c
@@ -69,6 +69,21 @@ static const Evas_Colorspace cspaces_etc1[2] = {
   EVAS_COLORSPACE_ARGB8888
 };
 
+static const Evas_Colorspace cspaces_etc1_alpha[] = {
+  EVAS_COLORSPACE_ETC1_ALPHA,
+  EVAS_COLORSPACE_ARGB8888
+};
+
+static const Evas_Colorspace cspaces_etc2_rgb[] = {
+  EVAS_COLORSPACE_RGB8_ETC2,
+  EVAS_COLORSPACE_ARGB8888
+};
+
+static const Evas_Colorspace cspaces_etc2_rgba[] = {
+  EVAS_COLORSPACE_RGBA8_ETC2_EAC,
+  EVAS_COLORSPACE_ARGB8888
+};
+
 static Eina_Bool
 evas_image_load_file_head_eet(void *loader_data,
                              Evas_Image_Property *prop,
@@ -94,11 +109,28 @@ evas_image_load_file_head_eet(void *loader_data,
        if (cspaces != NULL)
          {
            for (i = 0; cspaces[i] != EET_COLORSPACE_ARGB8888; i++)
-             if (cspaces[i] == EET_COLORSPACE_ETC1)
-               {
-                 prop->cspaces = cspaces_etc1;
-                 break;
-               }
+              {
+                 if (cspaces[i] == EET_COLORSPACE_ETC1)
+                   {
+                      prop->cspaces = cspaces_etc1;
+                      break;
+                   }
+                 else if (cspaces[i] == EET_COLORSPACE_ETC1_ALPHA)
+                   {
+                      prop->cspaces = cspaces_etc1_alpha;
+                      break;
+                   }
+                 else if (cspaces[i] == EET_COLORSPACE_RGB8_ETC2)
+                   {
+                      prop->cspaces = cspaces_etc2_rgb;
+                      break;
+                   }
+                 else if (cspaces[i] == EET_COLORSPACE_RGBA8_ETC2_EAC)
+                   {
+                      prop->cspaces = cspaces_etc2_rgba;
+                      break;
+                   }
+              }
          }
      }
 
@@ -124,6 +156,9 @@ evas_image_load_file_data_eet(void *loader_data,
    switch (prop->cspace)
      {
       case EVAS_COLORSPACE_ETC1: cspace = EET_COLORSPACE_ETC1; break;
+      case EVAS_COLORSPACE_ETC1_ALPHA: cspace = EET_COLORSPACE_ETC1_ALPHA; 
break;
+      case EVAS_COLORSPACE_RGB8_ETC2: cspace = EET_COLORSPACE_RGB8_ETC2; break;
+      case EVAS_COLORSPACE_RGBA8_ETC2_EAC: cspace = 
EET_COLORSPACE_RGBA8_ETC2_EAC; break;
       case EVAS_COLORSPACE_ARGB8888: cspace = EET_COLORSPACE_ARGB8888; break;
       default:
          return 
_evas_image_load_return_error(EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED, 
error);

-- 


Reply via email to