Commit 8b4ea004 by Nicolas Capens

Remove the dependency on GCE for display size.

Change-Id: I201ffae8193cfcac48a7ad3446f4b79da6c3d217 Reviewed-on: https://swiftshader-review.googlesource.com/4032Tested-by: 's avatarGreg Hartman <ghartman@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 0de50d45
...@@ -19,17 +19,14 @@ COMMON_SRC_FILES := \ ...@@ -19,17 +19,14 @@ COMMON_SRC_FILES := \
COMMON_C_INCLUDES := \ COMMON_C_INCLUDES := \
bionic \ bionic \
$(GCE_STLPORT_INCLUDES) \ $(GCE_STLPORT_INCLUDES) \
device/google/gce/include \
$(LOCAL_PATH)/../include \ $(LOCAL_PATH)/../include \
$(LOCAL_PATH)/../ \ $(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../../ $(LOCAL_PATH)/../../
COMMON_STATIC_LIBRARIES := \ COMMON_STATIC_LIBRARIES := \
libLLVM_swiftshader \ libLLVM_swiftshader
libgcemetadata
COMMON_SHARED_LIBRARIES := \ COMMON_SHARED_LIBRARIES := \
libgceframebufferconfig \
libdl \ libdl \
liblog \ liblog \
libandroid \ libandroid \
......
...@@ -26,8 +26,8 @@ using namespace std; ...@@ -26,8 +26,8 @@ using namespace std;
namespace egl namespace egl
{ {
Config::Config(const DisplayMode &displayMode, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample) Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
: mDisplayMode(displayMode), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample) : mDisplayFormat(displayFormat), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample)
{ {
mBindToTextureRGB = EGL_FALSE; mBindToTextureRGB = EGL_FALSE;
mBindToTextureRGBA = EGL_FALSE; mBindToTextureRGBA = EGL_FALSE;
...@@ -294,9 +294,9 @@ ConfigSet::ConfigSet() ...@@ -294,9 +294,9 @@ ConfigSet::ConfigSet()
{ {
} }
void ConfigSet::add(const DisplayMode &displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample) void ConfigSet::add(sw::Format displayFormat, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
{ {
Config config(displayMode, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample); Config config(displayFormat, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample);
mSet.insert(config); mSet.insert(config);
} }
......
...@@ -26,22 +26,15 @@ namespace egl ...@@ -26,22 +26,15 @@ namespace egl
{ {
class Display; class Display;
struct DisplayMode
{
unsigned int width;
unsigned int height;
sw::Format format;
};
class Config class Config
{ {
public: public:
Config(const DisplayMode &displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample); Config(sw::Format displayFormat, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample);
EGLConfig getHandle() const; EGLConfig getHandle() const;
bool isSlowConfig() const; bool isSlowConfig() const;
const DisplayMode mDisplayMode; const sw::Format mDisplayFormat;
const sw::Format mRenderTargetFormat; const sw::Format mRenderTargetFormat;
const sw::Format mDepthStencilFormat; const sw::Format mDepthStencilFormat;
const EGLint mMultiSample; const EGLint mMultiSample;
...@@ -96,7 +89,7 @@ class ConfigSet ...@@ -96,7 +89,7 @@ class ConfigSet
public: public:
ConfigSet(); ConfigSet();
void add(const DisplayMode &displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample); void add(sw::Format displayFormat, EGLint minSwapInterval, EGLint maxSwapInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample);
size_t size() const; size_t size() const;
bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig); bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig);
const egl::Config *get(EGLConfig configHandle); const egl::Config *get(EGLConfig configHandle);
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#ifdef __ANDROID__ #ifdef __ANDROID__
#include <system/window.h> #include <system/window.h>
#include <GceFrameBufferConfig.h>
#endif #endif
#include <algorithm> #include <algorithm>
...@@ -165,7 +164,7 @@ bool Display::initialize() ...@@ -165,7 +164,7 @@ bool Display::initialize()
// sw::FORMAT_D24FS8 // sw::FORMAT_D24FS8
}; };
DisplayMode currentDisplayMode = getDisplayMode(); sw::Format currentDisplayFormat = getDisplayFormat();
ConfigSet configSet; ConfigSet configSet;
for(int samplesIndex = 0; samplesIndex < sizeof(samples) / sizeof(int); samplesIndex++) for(int samplesIndex = 0; samplesIndex < sizeof(samples) / sizeof(int); samplesIndex++)
...@@ -178,7 +177,7 @@ bool Display::initialize() ...@@ -178,7 +177,7 @@ bool Display::initialize()
{ {
sw::Format depthStencilFormat = depthStencilFormats[depthStencilIndex]; sw::Format depthStencilFormat = depthStencilFormats[depthStencilIndex];
configSet.add(currentDisplayMode, mMinSwapInterval, mMaxSwapInterval, renderTargetFormat, depthStencilFormat, samples[samplesIndex]); configSet.add(currentDisplayFormat, mMinSwapInterval, mMaxSwapInterval, renderTargetFormat, depthStencilFormat, samples[samplesIndex]);
} }
} }
} }
...@@ -580,59 +579,44 @@ EGLNativeDisplayType Display::getNativeDisplay() const ...@@ -580,59 +579,44 @@ EGLNativeDisplayType Display::getNativeDisplay() const
return displayId; return displayId;
} }
DisplayMode Display::getDisplayMode() const sw::Format Display::getDisplayFormat() const
{ {
DisplayMode displayMode = {0};
#if defined(_WIN32) #if defined(_WIN32)
HDC deviceContext = GetDC(0); HDC deviceContext = GetDC(0);
displayMode.width = ::GetDeviceCaps(deviceContext, HORZRES);
displayMode.height = ::GetDeviceCaps(deviceContext, VERTRES);
unsigned int bpp = ::GetDeviceCaps(deviceContext, BITSPIXEL); unsigned int bpp = ::GetDeviceCaps(deviceContext, BITSPIXEL);
ReleaseDC(0, deviceContext);
switch(bpp) switch(bpp)
{ {
case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break; case 32: return sw::FORMAT_X8R8G8B8;
case 24: displayMode.format = sw::FORMAT_R8G8B8; break; case 24: return sw::FORMAT_R8G8B8;
case 16: displayMode.format = sw::FORMAT_R5G6B5; break; case 16: return sw::FORMAT_R5G6B5;
default: default: UNREACHABLE(bpp); // Unexpected display mode color depth
ASSERT(false); // Unexpected display mode color depth
} }
ReleaseDC(0, deviceContext);
#elif defined(__ANDROID__) #elif defined(__ANDROID__)
displayMode.width = GceFrameBufferConfig::getInstance().x_res(); return sw::FORMAT_X8R8G8B8;
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)
{ {
Screen *screen = libX11->XDefaultScreenOfDisplay(displayId); Screen *screen = libX11->XDefaultScreenOfDisplay(displayId);
displayMode.width = libX11->XWidthOfScreen(screen);
displayMode.height = libX11->XHeightOfScreen(screen);
unsigned int bpp = libX11->XPlanesOfScreen(screen); unsigned int bpp = libX11->XPlanesOfScreen(screen);
switch(bpp) switch(bpp)
{ {
case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break; case 32: return sw::FORMAT_X8R8G8B8;
case 24: displayMode.format = sw::FORMAT_R8G8B8; break; case 24: return sw::FORMAT_R8G8B8;
case 16: displayMode.format = sw::FORMAT_R5G6B5; break; case 16: return sw::FORMAT_R5G6B5;
default: default: UNREACHABLE(bpp); // Unexpected display mode color depth
ASSERT(false); // Unexpected display mode color depth
} }
} }
else if(platform == EGL_PLATFORM_GBM_MESA) else if(platform == EGL_PLATFORM_GBM_MESA)
{ {
displayMode.width = 0; return sw::FORMAT_X8R8G8B8;
displayMode.height = 0;
displayMode.format = sw::FORMAT_X8R8G8B8;
} }
else UNREACHABLE(platform); else UNREACHABLE(platform);
#endif #endif
return displayMode; return sw::FORMAT_X8R8G8B8;
} }
} }
...@@ -61,7 +61,7 @@ namespace egl ...@@ -61,7 +61,7 @@ namespace egl
private: private:
Display(EGLenum platform, EGLNativeDisplayType displayId); Display(EGLenum platform, EGLNativeDisplayType displayId);
DisplayMode getDisplayMode() const; sw::Format getDisplayFormat() const;
const EGLenum platform; const EGLenum platform;
const EGLNativeDisplayType displayId; const EGLNativeDisplayType displayId;
......
...@@ -92,15 +92,15 @@ Context::Context(const egl::Config *config, const Context *shareContext) ...@@ -92,15 +92,15 @@ Context::Context(const egl::Config *config, const Context *shareContext)
mState.viewportX = 0; mState.viewportX = 0;
mState.viewportY = 0; mState.viewportY = 0;
mState.viewportWidth = config->mDisplayMode.width; mState.viewportWidth = 0;
mState.viewportHeight = config->mDisplayMode.height; mState.viewportHeight = 0;
mState.zNear = 0.0f; mState.zNear = 0.0f;
mState.zFar = 1.0f; mState.zFar = 1.0f;
mState.scissorX = 0; mState.scissorX = 0;
mState.scissorY = 0; mState.scissorY = 0;
mState.scissorWidth = config->mDisplayMode.width; mState.scissorWidth = 0;
mState.scissorHeight = config->mDisplayMode.height; mState.scissorHeight = 0;
mState.colorMaskRed = true; mState.colorMaskRed = true;
mState.colorMaskGreen = true; mState.colorMaskGreen = true;
......
...@@ -104,15 +104,15 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint ...@@ -104,15 +104,15 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint
mState.viewportX = 0; mState.viewportX = 0;
mState.viewportY = 0; mState.viewportY = 0;
mState.viewportWidth = config->mDisplayMode.width; mState.viewportWidth = 0;
mState.viewportHeight = config->mDisplayMode.height; mState.viewportHeight = 0;
mState.zNear = 0.0f; mState.zNear = 0.0f;
mState.zFar = 1.0f; mState.zFar = 1.0f;
mState.scissorX = 0; mState.scissorX = 0;
mState.scissorY = 0; mState.scissorY = 0;
mState.scissorWidth = config->mDisplayMode.width; mState.scissorWidth = 0;
mState.scissorHeight = config->mDisplayMode.height; mState.scissorHeight = 0;
mState.colorMaskRed = true; mState.colorMaskRed = true;
mState.colorMaskGreen = true; mState.colorMaskGreen = true;
......
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