Hash :
5093ba67
Author :
Date :
2019-05-14T17:36:36
Implement resource management for GL_EXT_semaphore This implements glGenSemaphoresEXT, glDeleteSemaphoresEXT, and glIsSemaphoreEXT. It's not possible to do anything useful with them yet. Bug: angleproject:3289 Change-Id: I20ad90dbcd3fc573a4650c8531d6e1b8ccf7ca9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623811 Commit-Queue: Michael Spang <spang@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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
//
// Copyright 2015 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.
//
// angle_unittests_utils.h:
// Helpers for mocking and unit testing.
#ifndef TESTS_ANGLE_UNITTESTS_UTILS_H_
#define TESTS_ANGLE_UNITTESTS_UTILS_H_
#include "libANGLE/Surface.h"
#include "libANGLE/renderer/ContextImpl.h"
#include "libANGLE/renderer/EGLImplFactory.h"
#include "libANGLE/renderer/GLImplFactory.h"
namespace rx
{
// Useful when mocking a part of the GLImplFactory class
class NullFactory : public GLImplFactory
{
public:
NullFactory() {}
// Shader creation
CompilerImpl *createCompiler() override { return nullptr; }
ShaderImpl *createShader(const gl::ShaderState &data) override { return nullptr; }
ProgramImpl *createProgram(const gl::ProgramState &data) override { return nullptr; }
// Framebuffer creation
FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override
{
return nullptr;
}
// Texture creation
TextureImpl *createTexture(const gl::TextureState &data) override { return nullptr; }
// Renderbuffer creation
RenderbufferImpl *createRenderbuffer(const gl::RenderbufferState &state) override
{
return nullptr;
}
// Buffer creation
BufferImpl *createBuffer(const gl::BufferState &state) override { return nullptr; }
// Vertex Array creation
VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override
{
return nullptr;
}
// Query and Fence creation
QueryImpl *createQuery(gl::QueryType type) override { return nullptr; }
FenceNVImpl *createFenceNV() override { return nullptr; }
SyncImpl *createSync() override { return nullptr; }
// Transform Feedback creation
TransformFeedbackImpl *createTransformFeedback(const gl::TransformFeedbackState &state) override
{
return nullptr;
}
// Sampler object creation
SamplerImpl *createSampler(const gl::SamplerState &state) override { return nullptr; }
// Program Pipeline creation
ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) override
{
return nullptr;
}
std::vector<PathImpl *> createPaths(GLsizei range) override
{
return std::vector<PathImpl *>();
}
};
// A class with all the factory methods mocked.
class MockGLFactory : public GLImplFactory
{
public:
MOCK_METHOD1(createContext, ContextImpl *(const gl::State &));
MOCK_METHOD0(createCompiler, CompilerImpl *());
MOCK_METHOD1(createShader, ShaderImpl *(const gl::ShaderState &));
MOCK_METHOD1(createProgram, ProgramImpl *(const gl::ProgramState &));
MOCK_METHOD1(createProgramPipeline, ProgramPipelineImpl *(const gl::ProgramPipelineState &));
MOCK_METHOD1(createFramebuffer, FramebufferImpl *(const gl::FramebufferState &));
MOCK_METHOD0(createMemoryObject, MemoryObjectImpl *());
MOCK_METHOD1(createTexture, TextureImpl *(const gl::TextureState &));
MOCK_METHOD1(createRenderbuffer, RenderbufferImpl *(const gl::RenderbufferState &));
MOCK_METHOD1(createBuffer, BufferImpl *(const gl::BufferState &));
MOCK_METHOD1(createVertexArray, VertexArrayImpl *(const gl::VertexArrayState &));
MOCK_METHOD1(createQuery, QueryImpl *(gl::QueryType type));
MOCK_METHOD0(createFenceNV, FenceNVImpl *());
MOCK_METHOD0(createSync, SyncImpl *());
MOCK_METHOD1(createTransformFeedback,
TransformFeedbackImpl *(const gl::TransformFeedbackState &));
MOCK_METHOD1(createSampler, SamplerImpl *(const gl::SamplerState &));
MOCK_METHOD1(createPaths, std::vector<PathImpl *>(GLsizei));
MOCK_METHOD0(createSemaphore, SemaphoreImpl *());
};
class MockEGLFactory : public EGLImplFactory
{
public:
MOCK_METHOD3(createWindowSurface,
SurfaceImpl *(const egl::SurfaceState &,
EGLNativeWindowType,
const egl::AttributeMap &));
MOCK_METHOD2(createPbufferSurface,
SurfaceImpl *(const egl::SurfaceState &, const egl::AttributeMap &));
MOCK_METHOD4(createPbufferFromClientBuffer,
SurfaceImpl *(const egl::SurfaceState &,
EGLenum,
EGLClientBuffer,
const egl::AttributeMap &));
MOCK_METHOD3(createPixmapSurface,
SurfaceImpl *(const egl::SurfaceState &,
NativePixmapType,
const egl::AttributeMap &));
MOCK_METHOD4(createImage,
ImageImpl *(const egl::ImageState &,
const gl::Context *,
EGLenum,
const egl::AttributeMap &));
MOCK_METHOD5(createContext,
ContextImpl *(const gl::State &,
gl::ErrorSet *,
const egl::Config *,
const gl::Context *,
const egl::AttributeMap &));
MOCK_METHOD2(createStreamProducerD3DTexture,
StreamProducerImpl *(egl::Stream::ConsumerType, const egl::AttributeMap &));
};
} // namespace rx
#endif // TESTS_ANGLE_UNITTESTS_UTILS_H_