Commit 029d3539 by Greg Hartman

Add support for Android window size.

Change-Id: Ib96c227367fe10890e576bf99a654b50fa9e06c4 Reviewed-on: https://swiftshader-review.googlesource.com/2671Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarGreg Hartman <ghartman@google.com>
parent 9a10e062
...@@ -20,6 +20,11 @@ ...@@ -20,6 +20,11 @@
#include "libEGL/Context.hpp" #include "libEGL/Context.hpp"
#include "common/debug.h" #include "common/debug.h"
#ifdef __ANDROID__
#include <system/window.h>
#include <GceFrameBufferConfig.h>
#endif
#include <algorithm> #include <algorithm>
#include <vector> #include <vector>
#include <map> #include <map>
...@@ -31,6 +36,7 @@ DisplayMap displays; ...@@ -31,6 +36,7 @@ DisplayMap displays;
egl::Display *Display::getPlatformDisplay(EGLenum platform, EGLNativeDisplayType displayId) egl::Display *Display::getPlatformDisplay(EGLenum platform, EGLNativeDisplayType displayId)
{ {
#ifndef __ANDROID__
if(platform == EGL_UNKNOWN) // Default if(platform == EGL_UNKNOWN) // Default
{ {
#if defined(__unix__) #if defined(__unix__)
...@@ -53,6 +59,7 @@ egl::Display *Display::getPlatformDisplay(EGLenum platform, EGLNativeDisplayType ...@@ -53,6 +59,7 @@ egl::Display *Display::getPlatformDisplay(EGLenum platform, EGLNativeDisplayType
{ {
// FIXME: Check if displayId is a valid display device context for <platform> // FIXME: Check if displayId is a valid display device context for <platform>
} }
#endif
if(displays.find(displayId) != displays.end()) if(displays.find(displayId) != displays.end())
{ {
...@@ -459,6 +466,18 @@ bool Display::isValidWindow(EGLNativeWindowType window) ...@@ -459,6 +466,18 @@ bool Display::isValidWindow(EGLNativeWindowType window)
{ {
#if defined(_WIN32) #if defined(_WIN32)
return IsWindow(window) == TRUE; return IsWindow(window) == TRUE;
#elif defined(__ANDROID__)
if(!window)
{
ALOGE("%s called with window==NULL %s:%d", __FUNCTION__, __FILE__, __LINE__);
return false;
}
if(static_cast<ANativeWindow*>(window)->common.magic != ANDROID_NATIVE_WINDOW_MAGIC)
{
ALOGE("%s called with window==%p bad magic %s:%d", __FUNCTION__, window, __FILE__, __LINE__);
return false;
}
return true;
#else #else
if(platform == EGL_PLATFORM_X11_EXT) if(platform == EGL_PLATFORM_X11_EXT)
{ {
...@@ -521,6 +540,11 @@ DisplayMode Display::getDisplayMode() const ...@@ -521,6 +540,11 @@ DisplayMode Display::getDisplayMode() const
} }
ReleaseDC(0, deviceContext); ReleaseDC(0, deviceContext);
#elif defined(__ANDROID__)
displayMode.width = GceFrameBufferConfig::getInstance()->x_res();
displayMode.height = GceFrameBufferConfig::getInstance()->y_res();
displayMode.format = sw::FORMAT_X8R8G8B8;
ALOGI("Returning framebuffer config width=%d height=%d, format=%d", displayMode.width, displayMode.height, displayMode.format);
#else #else
if(platform == EGL_PLATFORM_X11_EXT) if(platform == EGL_PLATFORM_X11_EXT)
{ {
......
...@@ -118,6 +118,8 @@ bool Surface::reset() ...@@ -118,6 +118,8 @@ bool Surface::reset()
GetClientRect(mWindow, &windowRect); GetClientRect(mWindow, &windowRect);
return reset(windowRect.right - windowRect.left, windowRect.bottom - windowRect.top); return reset(windowRect.right - windowRect.left, windowRect.bottom - windowRect.top);
#elif defined(__ANDROID__)
return reset(ANativeWindow_getWidth(mWindow), ANativeWindow_getHeight(mWindow));
#else #else
XWindowAttributes windowAttributes; XWindowAttributes windowAttributes;
XGetWindowAttributes(mDisplay->getNativeDisplay(), mWindow, &windowAttributes); XGetWindowAttributes(mDisplay->getNativeDisplay(), mWindow, &windowAttributes);
...@@ -285,6 +287,9 @@ bool Surface::checkForResize() ...@@ -285,6 +287,9 @@ bool Surface::checkForResize()
int clientWidth = client.right - client.left; int clientWidth = client.right - client.left;
int clientHeight = client.bottom - client.top; int clientHeight = client.bottom - client.top;
#elif defined(__ANDROID__)
int clientWidth = ANativeWindow_getWidth(mWindow);
int clientHeight = ANativeWindow_getHeight(mWindow);
#else #else
XWindowAttributes windowAttributes; XWindowAttributes windowAttributes;
XGetWindowAttributes(mDisplay->getNativeDisplay(), mWindow, &windowAttributes); XGetWindowAttributes(mDisplay->getNativeDisplay(), mWindow, &windowAttributes);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment