Hash :
09932e04
Author :
Date :
2020-10-29T00:31:49
Vulkan: Support emulated pre-rotation in dEQP testing
Similarly to end2end tests, the window dimensions are swapped with
emulated prerotation at 90 and 270 degrees, while maintaining to the
application that dimensions are as requested.
The following new command line argument can be used to select an
emulated prerotation:
--emulated-pre-rotation=90
--emulated-pre-rotation=180
--emulated-pre-rotation=270
For example:
$ ./angle_deqp_gles2_tests --use-angle=vulkan \
--deqp-case=*draw* \
--emulated-pre-rotation=270
Additionally, the deqp test expectations can be marked with the
following new tags to add suppressions for failing tests under
prerotation:
PREROTATION
PREROTATION90
PREROTATION180
PREROTATION270
Bug: angleproject:4901
Change-Id: I7a68c1a1e7da4366cde981469c589d8d900c40c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2506810
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
/*-------------------------------------------------------------------------
* drawElements Quality Program Tester Core
* ----------------------------------------
*
* 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 TCU_ANGLE_WIN32_PLATFORM_H_
#define TCU_ANGLE_WIN32_PLATFORM_H_
#include "gluPlatform.hpp"
#include "tcuDefs.hpp"
#include "tcuPlatform.hpp"
#ifndef _EGLUPLATFORM_HPP
# include "egluPlatform.hpp"
#endif
#include "platform/PlatformMethods.h"
#include "tcuANGLENativeDisplayFactory.h"
namespace tcu
{
class ANGLEPlatform : public tcu::Platform, private glu::Platform, private eglu::Platform
{
public:
ANGLEPlatform(angle::LogErrorFunc logErrorFunc, uint32_t preRotation);
~ANGLEPlatform();
bool processEvents() override;
const glu::Platform &getGLPlatform() const override
{
return static_cast<const glu::Platform &>(*this);
}
const eglu::Platform &getEGLPlatform() const override
{
return static_cast<const eglu::Platform &>(*this);
}
private:
// Note: -1 represents EGL_DONT_CARE, but we don't have the EGL headers here.
std::vector<eglw::EGLAttrib> initAttribs(eglw::EGLAttrib type,
eglw::EGLAttrib deviceType = -1,
eglw::EGLAttrib majorVersion = -1,
eglw::EGLAttrib minorVersion = -1);
EventState mEvents;
angle::PlatformMethods mPlatformMethods;
std::vector<const char *> mEnableFeatureOverrides;
};
} // namespace tcu
#endif // TCU_ANGLE_WIN32_PLATFORM_H_