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 := \
COMMON_C_INCLUDES := \
bionic \
$(GCE_STLPORT_INCLUDES) \
device/google/gce/include \
$(LOCAL_PATH)/../include \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../../
COMMON_STATIC_LIBRARIES := \
libLLVM_swiftshader \
libgcemetadata
libLLVM_swiftshader
COMMON_SHARED_LIBRARIES := \
libgceframebufferconfig \
libdl \
liblog \
libandroid \
......
......@@ -26,8 +26,8 @@ using namespace std;
namespace egl
{
Config::Config(const DisplayMode &displayMode, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
: mDisplayMode(displayMode), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample)
Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample)
: mDisplayFormat(displayFormat), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample)
{
mBindToTextureRGB = EGL_FALSE;
mBindToTextureRGBA = EGL_FALSE;
......@@ -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);
}
......
......@@ -26,22 +26,15 @@ namespace egl
{
class Display;
struct DisplayMode
{
unsigned int width;
unsigned int height;
sw::Format format;
};
class Config
{
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;
bool isSlowConfig() const;
const DisplayMode mDisplayMode;
const sw::Format mDisplayFormat;
const sw::Format mRenderTargetFormat;
const sw::Format mDepthStencilFormat;
const EGLint mMultiSample;
......@@ -96,7 +89,7 @@ class ConfigSet
public:
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;
bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig);
const egl::Config *get(EGLConfig configHandle);
......
......@@ -26,7 +26,6 @@
#ifdef __ANDROID__
#include <system/window.h>
#include <GceFrameBufferConfig.h>
#endif
#include <algorithm>
......@@ -165,7 +164,7 @@ bool Display::initialize()
// sw::FORMAT_D24FS8
};
DisplayMode currentDisplayMode = getDisplayMode();
sw::Format currentDisplayFormat = getDisplayFormat();
ConfigSet configSet;
for(int samplesIndex = 0; samplesIndex < sizeof(samples) / sizeof(int); samplesIndex++)
......@@ -178,7 +177,7 @@ bool Display::initialize()
{
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
return displayId;
}
DisplayMode Display::getDisplayMode() const
sw::Format Display::getDisplayFormat() const
{
DisplayMode displayMode = {0};
#if defined(_WIN32)
HDC deviceContext = GetDC(0);
displayMode.width = ::GetDeviceCaps(deviceContext, HORZRES);
displayMode.height = ::GetDeviceCaps(deviceContext, VERTRES);
unsigned int bpp = ::GetDeviceCaps(deviceContext, BITSPIXEL);
ReleaseDC(0, deviceContext);
switch(bpp)
{
case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break;
case 24: displayMode.format = sw::FORMAT_R8G8B8; break;
case 16: displayMode.format = sw::FORMAT_R5G6B5; break;
default:
ASSERT(false); // Unexpected display mode color depth
case 32: return sw::FORMAT_X8R8G8B8;
case 24: return sw::FORMAT_R8G8B8;
case 16: return sw::FORMAT_R5G6B5;
default: UNREACHABLE(bpp); // Unexpected display mode color depth
}
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);
return sw::FORMAT_X8R8G8B8;
#else
if(platform == EGL_PLATFORM_X11_EXT)
{
Screen *screen = libX11->XDefaultScreenOfDisplay(displayId);
displayMode.width = libX11->XWidthOfScreen(screen);
displayMode.height = libX11->XHeightOfScreen(screen);
unsigned int bpp = libX11->XPlanesOfScreen(screen);
switch(bpp)
{
case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break;
case 24: displayMode.format = sw::FORMAT_R8G8B8; break;
case 16: displayMode.format = sw::FORMAT_R5G6B5; break;
default:
ASSERT(false); // Unexpected display mode color depth
case 32: return sw::FORMAT_X8R8G8B8;
case 24: return sw::FORMAT_R8G8B8;
case 16: return sw::FORMAT_R5G6B5;
default: UNREACHABLE(bpp); // Unexpected display mode color depth
}
}
else if(platform == EGL_PLATFORM_GBM_MESA)
{
displayMode.width = 0;
displayMode.height = 0;
displayMode.format = sw::FORMAT_X8R8G8B8;
return sw::FORMAT_X8R8G8B8;
}
else UNREACHABLE(platform);
#endif
return displayMode;
return sw::FORMAT_X8R8G8B8;
}
}
......@@ -61,7 +61,7 @@ namespace egl
private:
Display(EGLenum platform, EGLNativeDisplayType displayId);
DisplayMode getDisplayMode() const;
sw::Format getDisplayFormat() const;
const EGLenum platform;
const EGLNativeDisplayType displayId;
......
......@@ -92,15 +92,15 @@ Context::Context(const egl::Config *config, const Context *shareContext)
mState.viewportX = 0;
mState.viewportY = 0;
mState.viewportWidth = config->mDisplayMode.width;
mState.viewportHeight = config->mDisplayMode.height;
mState.viewportWidth = 0;
mState.viewportHeight = 0;
mState.zNear = 0.0f;
mState.zFar = 1.0f;
mState.scissorX = 0;
mState.scissorY = 0;
mState.scissorWidth = config->mDisplayMode.width;
mState.scissorHeight = config->mDisplayMode.height;
mState.scissorWidth = 0;
mState.scissorHeight = 0;
mState.colorMaskRed = true;
mState.colorMaskGreen = true;
......
......@@ -104,15 +104,15 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint
mState.viewportX = 0;
mState.viewportY = 0;
mState.viewportWidth = config->mDisplayMode.width;
mState.viewportHeight = config->mDisplayMode.height;
mState.viewportWidth = 0;
mState.viewportHeight = 0;
mState.zNear = 0.0f;
mState.zFar = 1.0f;
mState.scissorX = 0;
mState.scissorY = 0;
mState.scissorWidth = config->mDisplayMode.width;
mState.scissorHeight = config->mDisplayMode.height;
mState.scissorWidth = 0;
mState.scissorHeight = 0;
mState.colorMaskRed = 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