// This test attempts to obtain a D3D11 device and a D3D9 device using the eglQueryDeviceAttribEXT function. // If the test is configured to use D3D11 then it should succeed to obtain a D3D11 device. // If the test is confitured to use D3D9, then it should succeed to obtain a D3D9 device. TYPED_TEST(QueryDisplayAttributeTest, QueryDevice) { EGLAttrib device = 0; EGLAttrib angleDevice = 0; if (getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE) { EXPECT_EQ(EGL_TRUE, mQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); EXPECT_EQ(EGL_TRUE, mQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_D3D11_DEVICE_ANGLE, &device)); ID3D11Device *d3d11Device = reinterpret_cast<ID3D11Device*>(device); IDXGIDevice *dxgiDevice = DynamicCastComObject<IDXGIDevice>(d3d11Device); EXPECT_TRUE(dxgiDevice != nullptr); SafeRelease(dxgiDevice); } if (getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE) { EXPECT_EQ(EGL_TRUE, mQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); EXPECT_EQ(EGL_TRUE, mQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_D3D9_DEVICE_ANGLE, &device)); IDirect3DDevice9 *d3d9Device = reinterpret_cast<IDirect3DDevice9*>(device); IDirect3D9 *d3d9 = nullptr; EXPECT_EQ(S_OK, d3d9Device->GetDirect3D(&d3d9)); EXPECT_TRUE(d3d9 != nullptr); SafeRelease(d3d9); } }
// This test attempts to obtain a D3D11 device from a D3D9 configured system and a D3D9 device from // a D3D11 configured system using the eglQueryDeviceAttribEXT function. // If the test is configured to use D3D11 then it should fail to obtain a D3D11 device. // If the test is confitured to use D3D9, then it should fail to obtain a D3D9 device. TYPED_TEST(QueryDisplayAttributeTest, QueryDeviceBadAttrbiute) { EGLAttrib device = 0; EGLAttrib angleDevice = 0; if (getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE) { EXPECT_EQ(EGL_TRUE, mQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); EXPECT_EQ(EGL_FALSE, mQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_D3D9_DEVICE_ANGLE, &device)); } if (getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE) { EXPECT_EQ(EGL_TRUE, mQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); EXPECT_EQ(EGL_FALSE, mQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_D3D11_DEVICE_ANGLE, &device)); } }
TEST_P(CopyTexImageTest, SubImageRGBToL) { // TODO (geofflang): Figure out why CopyTex[Sub]Image doesn't work with // RGB->L on older Intel chips if (isIntel() && getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE) { std::cout << "Test skipped on Intel OpenGL." << std::endl; return; } GLfloat color0[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo0 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color0); GLuint tex = createTextureFromCopyTexImage(fbo0, GL_LUMINANCE); GLfloat color1[] = { 0.5f, 0.25f, 1.0f, 0.75f, }; GLuint fbo1 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color1); copyTextureWithCopyTexSubImage(fbo1, tex, 2, 4, 5, 6, 8, 8); GLubyte expected0[] = { 64, 64, 64, 255, }; verifyResults(tex, expected0, 0, 0); GLubyte expected1[] = { 127, 127, 127, 255, }; verifyResults(tex, expected1, 7, 7); }
TYPED_TEST(UniformTest, UniformArrayLocations) { // TODO(geofflang): Figure out why this is broken on Intel OpenGL if (isIntel() && getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE) { std::cout << "Test skipped on Intel OpenGL." << std::endl; return; } const std::string vertexShader = SHADER_SOURCE ( precision mediump float; uniform float uPosition[4]; void main(void) { gl_Position = vec4(uPosition[0], uPosition[1], uPosition[2], uPosition[3]); }
bool ANGLETest::isOpenGL() const { return getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; }