Restore old OpenGL tests
These tests call android_createDisplaySurface() to get a FramebufferNativeWindow that is passed to EGL. This relies on the existence of the framebuffer HAL, which is not supported on many recent devices. This change adds a new "window surface" object that the tests can use to get a window from SurfaceFlinger instead. All tests except for the HWC tests now appear to do things. The HWC tests don't do anything useful, but they no longer depend on the android_createDisplaySurface() function. Bug 13323813 Change-Id: I2cbfbacb3452fb658c29e945b0c7ae7c94c1a4ba
This commit is contained in:
parent
c0c6a0cd4c
commit
6ef57d7b36
|
@ -3,7 +3,8 @@
|
||||||
LOCAL_PATH:= $(call my-dir)
|
LOCAL_PATH:= $(call my-dir)
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_SRC_FILES:= app-linux.cpp demo.c.arm
|
LOCAL_SRC_FILES:= app-linux.cpp demo.c.arm
|
||||||
LOCAL_SHARED_LIBRARIES := libEGL libGLESv1_CM libui
|
LOCAL_SHARED_LIBRARIES := libEGL libGLESv1_CM libui libgui libutils
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
LOCAL_MODULE:= angeles
|
LOCAL_MODULE:= angeles
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
|
|
|
@ -52,8 +52,8 @@
|
||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <EGLUtils.h>
|
||||||
#include "EGLUtils.h"
|
#include <WindowSurface.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ static void checkEGLErrors()
|
||||||
fprintf(stderr, "EGL Error: 0x%04x\n", (int)error);
|
fprintf(stderr, "EGL Error: 0x%04x\n", (int)error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int initGraphics(unsigned samples)
|
static int initGraphics(unsigned samples, const WindowSurface& windowSurface)
|
||||||
{
|
{
|
||||||
EGLint configAttribs[] = {
|
EGLint configAttribs[] = {
|
||||||
EGL_DEPTH_SIZE, 16,
|
EGL_DEPTH_SIZE, 16,
|
||||||
|
@ -135,7 +135,7 @@ static int initGraphics(unsigned samples)
|
||||||
EGLint w, h;
|
EGLint w, h;
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
@ -193,7 +193,8 @@ int main(int argc, char *argv[])
|
||||||
printf("Multisample enabled: GL_SAMPLES = %u\n", samples);
|
printf("Multisample enabled: GL_SAMPLES = %u\n", samples);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!initGraphics(samples))
|
WindowSurface windowSurface;
|
||||||
|
if (!initGraphics(samples, windowSurface))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Graphics initialization failed.\n");
|
fprintf(stderr, "Graphics initialization failed.\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
@ -9,7 +9,10 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libutils \
|
libutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <utils/StopWatch.h>
|
#include <utils/StopWatch.h>
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@ int main(int argc, char** argv)
|
||||||
EGLint w, h;
|
EGLint w, h;
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -40,8 +40,10 @@ int main(int argc, char** argv)
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = 0;
|
EGLNativeWindowType window = 0;
|
||||||
|
WindowSurface* windowSurface = NULL;
|
||||||
if (!usePbuffer) {
|
if (!usePbuffer) {
|
||||||
window = android_createDisplaySurface();
|
windowSurface = new WindowSurface();
|
||||||
|
window = windowSurface->getSurface();
|
||||||
}
|
}
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
|
@ -186,5 +188,6 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
eglTerminate(dpy);
|
eglTerminate(dpy);
|
||||||
|
delete windowSurface;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,10 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libutils \
|
libutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -46,7 +46,8 @@ int main(int argc, char** argv)
|
||||||
EGLint w, h;
|
EGLint w, h;
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv2 \
|
libGLESv2 \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -298,7 +298,8 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
checkEglError("printEGLConfigurations");
|
checkEglError("printEGLConfigurations");
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
||||||
if (returnValue) {
|
if (returnValue) {
|
||||||
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv2 \
|
libGLESv2 \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -406,7 +406,8 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
checkEglError("printEGLConfigurations");
|
checkEglError("printEGLConfigurations");
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
EGLint numConfigs = -1, n = 0;
|
EGLint numConfigs = -1, n = 0;
|
||||||
eglChooseConfig(dpy, s_configAttribs, 0, 0, &numConfigs);
|
eglChooseConfig(dpy, s_configAttribs, 0, 0, &numConfigs);
|
||||||
if (numConfigs) {
|
if (numConfigs) {
|
||||||
|
|
|
@ -9,7 +9,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv2 \
|
libGLESv2 \
|
||||||
libutils \
|
libutils \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -364,7 +364,8 @@ int main(int argc, char** argv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
||||||
if (returnValue) {
|
if (returnValue) {
|
||||||
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ GLuint texture;
|
||||||
#define FIXED_ONE 0x10000
|
#define FIXED_ONE 0x10000
|
||||||
#define ITERATIONS 50
|
#define ITERATIONS 50
|
||||||
|
|
||||||
int init_gl_surface(void);
|
int init_gl_surface(const WindowSurface& windowSurface);
|
||||||
void free_gl_surface(void);
|
void free_gl_surface(void);
|
||||||
void init_scene(void);
|
void init_scene(void);
|
||||||
void render();
|
void render();
|
||||||
|
@ -194,7 +194,8 @@ int main(int argc, char **argv)
|
||||||
int q;
|
int q;
|
||||||
int start, end;
|
int start, end;
|
||||||
printf("Initializing EGL...\n");
|
printf("Initializing EGL...\n");
|
||||||
if(!init_gl_surface())
|
WindowSurface windowSurface;
|
||||||
|
if(!init_gl_surface(windowSurface))
|
||||||
{
|
{
|
||||||
printf("GL initialisation failed - exiting\n");
|
printf("GL initialisation failed - exiting\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -209,7 +210,7 @@ int main(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_gl_surface(void)
|
int init_gl_surface(const WindowSurface& windowSurface)
|
||||||
{
|
{
|
||||||
EGLint numConfigs = 1;
|
EGLint numConfigs = 1;
|
||||||
EGLConfig myConfig = {0};
|
EGLConfig myConfig = {0};
|
||||||
|
@ -236,7 +237,7 @@ int init_gl_surface(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
EGLUtils::selectConfigForNativeWindow(eglDisplay, attrib, window, &myConfig);
|
EGLUtils::selectConfigForNativeWindow(eglDisplay, attrib, window, &myConfig);
|
||||||
|
|
||||||
if ( (eglSurface = eglCreateWindowSurface(eglDisplay, myConfig,
|
if ( (eglSurface = eglCreateWindowSurface(eglDisplay, myConfig,
|
||||||
|
|
|
@ -10,7 +10,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
liblog \
|
liblog \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv2 \
|
libGLESv2 \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -86,7 +86,8 @@ int main(int argc, char** argv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
||||||
if (returnValue) {
|
if (returnValue) {
|
||||||
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
||||||
|
|
|
@ -9,7 +9,10 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libutils \
|
libutils \
|
||||||
libui
|
libui \
|
||||||
|
libgui
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
|
|
||||||
#include <utils/Timers.h>
|
#include <utils/Timers.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -254,7 +254,8 @@ int main(int argc, char** argv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
|
||||||
if (returnValue) {
|
if (returnValue) {
|
||||||
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue);
|
||||||
|
|
|
@ -85,7 +85,6 @@
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
|
|
||||||
#define LOG_TAG "hwcColorEquivTest"
|
#define LOG_TAG "hwcColorEquivTest"
|
||||||
|
|
|
@ -96,7 +96,6 @@
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
|
|
||||||
#define LOG_TAG "hwcCommitTest"
|
#define LOG_TAG "hwcCommitTest"
|
||||||
|
|
|
@ -104,7 +104,6 @@
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
|
|
||||||
#define LOG_TAG "hwcRectsTest"
|
#define LOG_TAG "hwcRectsTest"
|
||||||
|
|
|
@ -101,7 +101,6 @@
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
|
|
||||||
#define LOG_TAG "hwcStressTest"
|
#define LOG_TAG "hwcStressTest"
|
||||||
|
|
|
@ -80,7 +80,11 @@ void hwcTestInitDisplay(bool verbose, EGLDisplay *dpy, EGLSurface *surface,
|
||||||
exit(71);
|
exit(71);
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
// The tests want to stop the framework and play with the hardware
|
||||||
|
// composer, which means it doesn't make sense to use WindowSurface
|
||||||
|
// here. android_createDisplaySurface() is going away, so just
|
||||||
|
// politely fail here.
|
||||||
|
EGLNativeWindowType window = NULL; //android_createDisplaySurface();
|
||||||
if (window == NULL) {
|
if (window == NULL) {
|
||||||
testPrintE("android_createDisplaySurface failed");
|
testPrintE("android_createDisplaySurface failed");
|
||||||
exit(72);
|
exit(72);
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
|
||||||
#include <ui/GraphicBuffer.h>
|
#include <ui/GraphicBuffer.h>
|
||||||
|
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2014 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENGL_TESTS_WINDOWSURFACE_H
|
||||||
|
#define OPENGL_TESTS_WINDOWSURFACE_H
|
||||||
|
|
||||||
|
#include <gui/SurfaceControl.h>
|
||||||
|
|
||||||
|
#include <EGL/egl.h>
|
||||||
|
|
||||||
|
namespace android {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A window that covers the entire display surface.
|
||||||
|
*
|
||||||
|
* The window is destroyed when this object is destroyed, so don't try
|
||||||
|
* to use the surface after that point.
|
||||||
|
*/
|
||||||
|
class WindowSurface {
|
||||||
|
public:
|
||||||
|
// Creates the window.
|
||||||
|
WindowSurface();
|
||||||
|
|
||||||
|
// Retrieves a handle to the window.
|
||||||
|
EGLNativeWindowType getSurface() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
WindowSurface(const WindowSurface&);
|
||||||
|
WindowSurface& operator=(const WindowSurface&);
|
||||||
|
|
||||||
|
sp<SurfaceControl> mSurfaceControl;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace android
|
||||||
|
|
||||||
|
#endif /* OPENGL_TESTS_WINDOWSURFACE_H */
|
|
@ -17,7 +17,7 @@ LOCAL_PATH:= $(call my-dir)
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE_TAGS := tests
|
LOCAL_MODULE_TAGS := tests
|
||||||
LOCAL_MODULE:= libglTest
|
LOCAL_MODULE:= libglTest
|
||||||
LOCAL_SRC_FILES:= glTestLib.cpp
|
LOCAL_SRC_FILES:= glTestLib.cpp WindowSurface.cpp
|
||||||
LOCAL_C_INCLUDES += system/extras/tests/include \
|
LOCAL_C_INCLUDES += system/extras/tests/include \
|
||||||
bionic \
|
bionic \
|
||||||
bionic/libstdc++/include \
|
bionic/libstdc++/include \
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2014 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <WindowSurface.h>
|
||||||
|
|
||||||
|
#include <gui/SurfaceComposerClient.h>
|
||||||
|
#include <gui/ISurfaceComposer.h>
|
||||||
|
#include <gui/Surface.h>
|
||||||
|
#include <ui/DisplayInfo.h>
|
||||||
|
|
||||||
|
using namespace android;
|
||||||
|
|
||||||
|
WindowSurface::WindowSurface() {
|
||||||
|
status_t err;
|
||||||
|
|
||||||
|
sp<SurfaceComposerClient> surfaceComposerClient = new SurfaceComposerClient;
|
||||||
|
err = surfaceComposerClient->initCheck();
|
||||||
|
if (err != NO_ERROR) {
|
||||||
|
fprintf(stderr, "SurfaceComposerClient::initCheck error: %#x\n", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get main display parameters.
|
||||||
|
sp<IBinder> mainDpy = SurfaceComposerClient::getBuiltInDisplay(
|
||||||
|
ISurfaceComposer::eDisplayIdMain);
|
||||||
|
DisplayInfo mainDpyInfo;
|
||||||
|
err = SurfaceComposerClient::getDisplayInfo(mainDpy, &mainDpyInfo);
|
||||||
|
if (err != NO_ERROR) {
|
||||||
|
fprintf(stderr, "ERROR: unable to get display characteristics\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sp<SurfaceControl> sc = surfaceComposerClient->createSurface(
|
||||||
|
String8("Benchmark"), mainDpyInfo.w, mainDpyInfo.h,
|
||||||
|
PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eOpaque);
|
||||||
|
if (sc == NULL || !sc->isValid()) {
|
||||||
|
fprintf(stderr, "Failed to create SurfaceControl\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SurfaceComposerClient::openGlobalTransaction();
|
||||||
|
err = sc->setLayer(0x7FFFFFFF); // always on top
|
||||||
|
if (err != NO_ERROR) {
|
||||||
|
fprintf(stderr, "SurfaceComposer::setLayer error: %#x\n", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = sc->show();
|
||||||
|
if (err != NO_ERROR) {
|
||||||
|
fprintf(stderr, "SurfaceComposer::show error: %#x\n", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SurfaceComposerClient::closeGlobalTransaction();
|
||||||
|
|
||||||
|
mSurfaceControl = sc;
|
||||||
|
}
|
||||||
|
|
||||||
|
EGLNativeWindowType WindowSurface::getSurface() const {
|
||||||
|
sp<ANativeWindow> anw = mSurfaceControl->getSurface();
|
||||||
|
return (EGLNativeWindowType) anw.get();
|
||||||
|
}
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LOG_TAG "fillrate"
|
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -26,8 +24,8 @@
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <utils/StopWatch.h>
|
#include <utils/StopWatch.h>
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -46,7 +44,8 @@ int main(int argc, char** argv)
|
||||||
EGLint w, h;
|
EGLint w, h;
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
|
|
@ -9,7 +9,10 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libutils \
|
libutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <utils/StopWatch.h>
|
#include <utils/StopWatch.h>
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@ int main(int argc, char** argv)
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
@ -42,7 +42,8 @@ int main(int argc, char** argv)
|
||||||
EGLint w, h;
|
EGLint w, h;
|
||||||
EGLDisplay dpy;
|
EGLDisplay dpy;
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
WindowSurface windowSurface;
|
||||||
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
|
|
||||||
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(dpy, &majorVersion, &minorVersion);
|
eglInitialize(dpy, &majorVersion, &minorVersion);
|
||||||
|
@ -114,5 +115,7 @@ int main(int argc, char** argv)
|
||||||
glDrawTexiOES(dim/2, dim/2, 0, dim/2, dim/2);
|
glDrawTexiOES(dim/2, dim/2, 0, dim/2, dim/2);
|
||||||
|
|
||||||
eglSwapBuffers(dpy, surface);
|
eglSwapBuffers(dpy, surface);
|
||||||
|
|
||||||
|
sleep(2); // so you have a chance to admire it
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,11 @@ LOCAL_SHARED_LIBRARIES := \
|
||||||
libcutils \
|
libcutils \
|
||||||
libEGL \
|
libEGL \
|
||||||
libGLESv1_CM \
|
libGLESv1_CM \
|
||||||
libui
|
libui \
|
||||||
|
libgui \
|
||||||
|
libutils
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libglTest
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
LOCAL_C_INCLUDES += $(call include-path-for, opengl-tests-includes)
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#include <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
|
|
||||||
#include <ui/FramebufferNativeWindow.h>
|
#include <WindowSurface.h>
|
||||||
#include "EGLUtils.h"
|
#include <EGLUtils.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -25,7 +25,7 @@ GLuint texture;
|
||||||
#define FIXED_ONE 0x10000
|
#define FIXED_ONE 0x10000
|
||||||
#define ITERATIONS 50
|
#define ITERATIONS 50
|
||||||
|
|
||||||
int init_gl_surface(void);
|
int init_gl_surface(const WindowSurface&);
|
||||||
void free_gl_surface(void);
|
void free_gl_surface(void);
|
||||||
void init_scene(void);
|
void init_scene(void);
|
||||||
void render(int quads);
|
void render(int quads);
|
||||||
|
@ -98,7 +98,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
printf("Initializing EGL...\n");
|
printf("Initializing EGL...\n");
|
||||||
|
|
||||||
if(!init_gl_surface())
|
WindowSurface windowSurface;
|
||||||
|
if(!init_gl_surface(windowSurface))
|
||||||
{
|
{
|
||||||
printf("GL initialisation failed - exiting\n");
|
printf("GL initialisation failed - exiting\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -117,7 +118,7 @@ int main(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_gl_surface(void)
|
int init_gl_surface(const WindowSurface& windowSurface)
|
||||||
{
|
{
|
||||||
EGLint numConfigs = 1;
|
EGLint numConfigs = 1;
|
||||||
EGLConfig myConfig = {0};
|
EGLConfig myConfig = {0};
|
||||||
|
@ -140,7 +141,7 @@ int init_gl_surface(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeWindowType window = android_createDisplaySurface();
|
EGLNativeWindowType window = windowSurface.getSurface();
|
||||||
EGLUtils::selectConfigForNativeWindow(eglDisplay, attrib, window, &myConfig);
|
EGLUtils::selectConfigForNativeWindow(eglDisplay, attrib, window, &myConfig);
|
||||||
|
|
||||||
if ( (eglSurface = eglCreateWindowSurface(eglDisplay, myConfig,
|
if ( (eglSurface = eglCreateWindowSurface(eglDisplay, myConfig,
|
||||||
|
|
Loading…
Reference in New Issue