Edit

kc3-lang/angle/src/tests/test_utils/angle_test_configs.cpp

Branch :

  • Show log

    Commit

  • Author : Martin Radev
    Date : 2016-08-04 12:25:34
    Hash : 4c4c8e72
    Message : Add compute program compilation and linking support Compute shaders can be now compiled and linked to create programs. Some tests are added to verify successful and unsuccessful compute shader linking. The patch also replaces std::array<int, 3> with a custom struct WorkGroupSize. BUG=angleproject:1442 TEST=angle_end2end_tests TEST=angle_unittests Change-Id: I4ab0ac05755d0167a6d2a798f8d7f1516cf54d84 Reviewed-on: https://chromium-review.googlesource.com/366740 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>

  • src/tests/test_utils/angle_test_configs.cpp
  • //
    // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #include "test_utils/angle_test_configs.h"
    
    namespace angle
    {
    
    PlatformParameters::PlatformParameters()
        : PlatformParameters(2, 0, EGLPlatformParameters())
    {
    }
    
    PlatformParameters::PlatformParameters(EGLint majorVersion, EGLint minorVersion,
                                           const EGLPlatformParameters &eglPlatformParameters)
        : majorVersion(majorVersion),
          minorVersion(minorVersion),
          eglParameters(eglPlatformParameters)
    {
    }
    
    EGLint PlatformParameters::getRenderer() const
    {
        return eglParameters.renderer;
    }
    
    bool operator<(const PlatformParameters &a, const PlatformParameters &b)
    {
        if (a.majorVersion != b.majorVersion)
        {
            return a.majorVersion < b.majorVersion;
        }
    
        if (a.minorVersion != b.minorVersion)
        {
            return a.minorVersion < b.minorVersion;
        }
    
        return a.eglParameters < b.eglParameters;
    }
    
    bool operator==(const PlatformParameters &a, const PlatformParameters &b)
    {
        return (a.majorVersion == b.majorVersion) &&
               (a.minorVersion == b.minorVersion) &&
               (a.eglParameters == b.eglParameters);
    }
    
    std::ostream &operator<<(std::ostream& stream, const PlatformParameters &pp)
    {
        stream << "ES" << pp.majorVersion << "_" ;
        if (pp.minorVersion != 0)
        {
            stream << pp.minorVersion << "_";
        }
    
        switch (pp.eglParameters.renderer)
        {
          case EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE:
            stream << "D3D9";
            break;
          case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE:
            stream << "D3D11";
            break;
          case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE:
            stream << "OPENGL";
            break;
          case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE:
              stream << "OPENGLES";
            break;
          case EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE:
            stream << "DEFAULT";
            break;
          default:
            UNREACHABLE();
            break;
        }
    
        if (pp.eglParameters.majorVersion != EGL_DONT_CARE)
        {
            stream << "_" << pp.eglParameters.majorVersion;
        }
    
        if (pp.eglParameters.minorVersion != EGL_DONT_CARE)
        {
            stream << "_" << pp.eglParameters.minorVersion;
        }
    
        switch (pp.eglParameters.deviceType)
        {
          case EGL_DONT_CARE:
          case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE:
            // default
            break;
    
          case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE:
              stream << "_NULL";
              break;
    
          case EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE:
            stream << "_REFERENCE";
            break;
    
          case EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE:
            stream << "_WARP";
            break;
    
          default:
            UNREACHABLE();
            break;
        }
    
        switch (pp.eglParameters.presentPath)
        {
            case EGL_EXPERIMENTAL_PRESENT_PATH_COPY_ANGLE:
                stream << "_PRESENT_PATH_COPY";
                break;
    
            case EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE:
                stream << "_PRESENT_PATH_FAST";
                break;
    
            case EGL_DONT_CARE:
                // default
                break;
    
            default:
                UNREACHABLE();
                break;
        }
    
        return stream;
    }
    
    // EGL platforms
    namespace egl_platform
    {
    
    EGLPlatformParameters DEFAULT()
    {
        return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE);
    }
    
    EGLPlatformParameters DEFAULT_NULL()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
    }
    
    EGLPlatformParameters D3D9()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D9_NULL()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
    }
    
    EGLPlatformParameters D3D9_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11(EGLenum presentPath)
    {
        return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
                                     EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE, presentPath);
    }
    
    EGLPlatformParameters D3D11_FL11_1()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL11_0()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_1()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_0()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL9_3()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            9, 3,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_NULL()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
    }
    
    EGLPlatformParameters D3D11_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL11_1_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL11_0_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_1_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_0_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL9_3_WARP()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            9, 3,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
    }
    
    EGLPlatformParameters D3D11_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            EGL_DONT_CARE, EGL_DONT_CARE,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL11_1_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL11_0_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            11, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_1_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 1,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL10_0_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            10, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters D3D11_FL9_3_REFERENCE()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
            9, 3,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
    }
    
    EGLPlatformParameters OPENGL()
    {
        return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
    }
    
    
    EGLPlatformParameters OPENGL(EGLint major, EGLint minor)
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE,
            major, minor,
            EGL_DONT_CARE);
    }
    
    EGLPlatformParameters OPENGL_NULL()
    {
        return EGLPlatformParameters(
            EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE,
            0, 0,
            EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
    }
    
    EGLPlatformParameters OPENGLES()
    {
        return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
    }
    
    EGLPlatformParameters OPENGLES(EGLint major, EGLint minor)
    {
        return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, major, minor,
                                     EGL_DONT_CARE);
    }
    
    } // namespace egl_platform
    
    // ANGLE tests platforms
    PlatformParameters ES2_D3D9()
    {
        return PlatformParameters(2, 0, egl_platform::D3D9());
    }
    
    PlatformParameters ES2_D3D9_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D9_REFERENCE());
    }
    
    PlatformParameters ES2_D3D11()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11());
    }
    
    PlatformParameters ES2_D3D11(EGLenum presentPath)
    {
        return PlatformParameters(2, 0, egl_platform::D3D11(presentPath));
    }
    
    PlatformParameters ES2_D3D11_FL11_0()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0());
    }
    
    PlatformParameters ES2_D3D11_FL10_1()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1());
    }
    
    PlatformParameters ES2_D3D11_FL10_0()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0());
    }
    
    PlatformParameters ES2_D3D11_FL9_3()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3());
    }
    
    PlatformParameters ES2_D3D11_WARP()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_WARP());
    }
    
    PlatformParameters ES2_D3D11_FL11_0_WARP()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_WARP());
    }
    
    PlatformParameters ES2_D3D11_FL10_1_WARP()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_WARP());
    }
    
    PlatformParameters ES2_D3D11_FL10_0_WARP()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_WARP());
    }
    
    PlatformParameters ES2_D3D11_FL9_3_WARP()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3_WARP());
    }
    
    PlatformParameters ES2_D3D11_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_REFERENCE());
    }
    
    PlatformParameters ES2_D3D11_FL11_0_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_REFERENCE());
    }
    
    PlatformParameters ES2_D3D11_FL10_1_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_REFERENCE());
    }
    
    PlatformParameters ES2_D3D11_FL10_0_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_REFERENCE());
    }
    
    PlatformParameters ES2_D3D11_FL9_3_REFERENCE()
    {
        return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3_REFERENCE());
    }
    
    PlatformParameters ES3_D3D11()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11());
    }
    
    PlatformParameters ES3_D3D11_FL11_1()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1());
    }
    
    PlatformParameters ES3_D3D11_FL11_0()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0());
    }
    
    PlatformParameters ES3_D3D11_FL10_1()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1());
    }
    
    PlatformParameters ES3_D3D11_FL10_0()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0());
    }
    
    PlatformParameters ES3_D3D11_WARP()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_WARP());
    }
    
    PlatformParameters ES3_D3D11_FL11_1_WARP()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1_WARP());
    }
    
    PlatformParameters ES3_D3D11_FL11_0_WARP()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0_WARP());
    }
    
    PlatformParameters ES3_D3D11_FL10_1_WARP()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_WARP());
    }
    
    PlatformParameters ES3_D3D11_FL10_0_WARP()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0_WARP());
    }
    
    PlatformParameters ES3_D3D11_REFERENCE()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_REFERENCE());
    }
    
    PlatformParameters ES3_D3D11_FL11_1_REFERENCE()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1_REFERENCE());
    }
    
    PlatformParameters ES3_D3D11_FL11_0_REFERENCE()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0_REFERENCE());
    }
    
    PlatformParameters ES3_D3D11_FL10_1_REFERENCE()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_REFERENCE());
    }
    
    PlatformParameters ES3_D3D11_FL10_0_REFERENCE()
    {
        return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0_REFERENCE());
    }
    
    PlatformParameters ES2_OPENGLES()
    {
        return PlatformParameters(2, 0, egl_platform::OPENGLES());
    }
    
    PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor)
    {
        return PlatformParameters(2, 0, egl_platform::OPENGLES(major, minor));
    }
    
    PlatformParameters ES3_OPENGLES()
    {
        return PlatformParameters(3, 0, egl_platform::OPENGLES());
    }
    
    PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor)
    {
        return PlatformParameters(3, 0, egl_platform::OPENGLES(major, minor));
    }
    
    PlatformParameters ES31_OPENGLES()
    {
        return PlatformParameters(3, 1, egl_platform::OPENGLES());
    }
    
    PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor)
    {
        return PlatformParameters(3, 1, egl_platform::OPENGLES(major, minor));
    }
    
    PlatformParameters ES2_OPENGL()
    {
        return PlatformParameters(2, 0, egl_platform::OPENGL());
    }
    
    PlatformParameters ES2_OPENGL(EGLint major, EGLint minor)
    {
        return PlatformParameters(2, 0, egl_platform::OPENGL(major, minor));
    }
    
    PlatformParameters ES3_OPENGL()
    {
        return PlatformParameters(3, 0, egl_platform::OPENGL());
    }
    
    PlatformParameters ES3_OPENGL(EGLint major, EGLint minor)
    {
        return PlatformParameters(3, 0, egl_platform::OPENGL(major, minor));
    }
    
    PlatformParameters ES31_OPENGL()
    {
        return PlatformParameters(3, 1, egl_platform::OPENGL());
    }
    
    PlatformParameters ES31_OPENGL(EGLint major, EGLint minor)
    {
        return PlatformParameters(3, 1, egl_platform::OPENGL(major, minor));
    }
    
    } // namespace angle