Make it possible to build SwiftShader for Fuchsia. With this change SwiftShader is buildable for Fuchsia. Integration with Mozard for EGL will be implemented in a separate CL. Bug: chromium:800951 Change-Id: I60160c91aecaa6cdc6b07de688ff54b686613ab3 Reviewed-on: https://swiftshader-review.googlesource.com/16148 Tested-by: Sergey Ulanov <sergeyu@chromium.org> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Common/Socket.cpp b/src/Common/Socket.cpp index a19f574..b098031 100644 --- a/src/Common/Socket.cpp +++ b/src/Common/Socket.cpp
@@ -20,6 +20,7 @@ #include <unistd.h> #include <netdb.h> #include <netinet/in.h> + #include <sys/select.h> #endif namespace sw
diff --git a/src/OpenGL/compiler/BUILD.gn b/src/OpenGL/compiler/BUILD.gn index 3596e38..ea72f32 100644 --- a/src/OpenGL/compiler/BUILD.gn +++ b/src/OpenGL/compiler/BUILD.gn
@@ -76,7 +76,7 @@ all_dependent_configs = [ ":swiftshader_translator_disable_pool_alloc" ] } - if (is_linux || is_mac) { + if (is_linux || is_mac || is_fuchsia) { sources += [ "ossource_posix.cpp" ] } else if (is_win) { sources += [ "ossource_win.cpp" ]
diff --git a/src/OpenGL/compiler/osinclude.h b/src/OpenGL/compiler/osinclude.h index 650f871..54d4c75 100644 --- a/src/OpenGL/compiler/osinclude.h +++ b/src/OpenGL/compiler/osinclude.h
@@ -26,7 +26,7 @@ defined(__FreeBSD__) || defined(__OpenBSD__) || \ defined(__sun) || defined(ANDROID) || \ defined(__GLIBC__) || defined(__GNU__) || \ - defined(__QNX__) + defined(__QNX__) || defined(__Fuchsia__) #define ANGLE_OS_POSIX #else #error Unsupported platform.
diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp index 9564cd4..9e56918 100644 --- a/src/OpenGL/libEGL/Display.cpp +++ b/src/OpenGL/libEGL/Display.cpp
@@ -572,6 +572,9 @@ return false; #elif defined(__APPLE__) return sw::OSX::IsValidWindow(window); + #elif defined(__Fuchsia__) + // TODO(crbug.com/800951): Integrate with Mozart. + return true; #else #error "Display::isValidWindow unimplemented for this platform" return false; @@ -744,6 +747,8 @@ } #elif defined(__APPLE__) return sw::FORMAT_A8B8G8R8; + #elif defined(__Fuchsia__) + return sw::FORMAT_A8B8G8R8; #else #error "Display::isValidWindow unimplemented for this platform" #endif
diff --git a/src/OpenGL/libEGL/Surface.cpp b/src/OpenGL/libEGL/Surface.cpp index ad3bdd2..57261b2 100644 --- a/src/OpenGL/libEGL/Surface.cpp +++ b/src/OpenGL/libEGL/Surface.cpp
@@ -294,6 +294,10 @@ int windowWidth; int windowHeight; sw::OSX::GetNativeWindowSize(window, windowWidth, windowHeight); + #elif defined(__Fuchsia__) + // TODO(crbug.com/800951): Integrate with Mozart. + int windowWidth = 100; + int windowHeight = 100; #else #error "WindowSurface::checkForResize unimplemented for this platform" #endif
diff --git a/src/OpenGL/libEGL/libEGL.hpp b/src/OpenGL/libEGL/libEGL.hpp index 683b0d1..77ddf70 100644 --- a/src/OpenGL/libEGL/libEGL.hpp +++ b/src/OpenGL/libEGL/libEGL.hpp
@@ -118,6 +118,8 @@ #else const char *libEGL_lib[] = {"libEGL_translator.dylib", "libEGL.so", "libEGL.dylib", "libswiftshader_libEGL.dylib"}; #endif + #elif defined(__Fuchsia__) + const char *libEGL_lib[] = {"libEGL.so"}; #else #error "libEGL::loadExports unimplemented for this platform" #endif
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.hpp b/src/OpenGL/libGLES_CM/libGLES_CM.hpp index 5a3a289..cd9447e 100644 --- a/src/OpenGL/libGLES_CM/libGLES_CM.hpp +++ b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
@@ -279,6 +279,8 @@ #else const char *libGLES_CM_lib[] = {"libGLES_CM_translator.dylib", "libGLES_CM.dylib"}; #endif + #elif defined(__Fuchsia__) + const char *libGLES_CM_lib[] = {"libGLES_CM.so"}; #else #error "libGLES_CM::loadExports unimplemented for this platform" #endif
diff --git a/src/OpenGL/libGLESv2/libGLESv2.hpp b/src/OpenGL/libGLESv2/libGLESv2.hpp index 42febd8..cb14319 100644 --- a/src/OpenGL/libGLESv2/libGLESv2.hpp +++ b/src/OpenGL/libGLESv2/libGLESv2.hpp
@@ -302,6 +302,8 @@ #else const char *libGLESv2_lib[] = {"libGLES_V2_translator.dylib", "libGLESv2.dylib", "libswiftshader_libGLESv2.dylib"}; #endif + #elif defined(__Fuchsia__) + const char *libGLESv2_lib[] = {"libGLESv2.so"}; #else #error "libGLESv2::loadExports unimplemented for this platform" #endif