blob: bccd07734805edda796360dbe53efb5e8d71afb9 [file] [log] [blame]
Jamie Madill9e54b5a2016-05-25 12:57:39 -04001//
2// Copyright 2016 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6// ContextVk.cpp:
7// Implements the class methods for ContextVk.
8//
9
10#include "libANGLE/renderer/vulkan/ContextVk.h"
11
12#include "common/debug.h"
Jamie Madillacccc6c2016-05-03 17:22:10 -040013#include "libANGLE/renderer/vulkan/BufferVk.h"
14#include "libANGLE/renderer/vulkan/CompilerVk.h"
15#include "libANGLE/renderer/vulkan/ContextVk.h"
16#include "libANGLE/renderer/vulkan/DeviceVk.h"
17#include "libANGLE/renderer/vulkan/FenceNVVk.h"
18#include "libANGLE/renderer/vulkan/FenceSyncVk.h"
19#include "libANGLE/renderer/vulkan/FramebufferVk.h"
20#include "libANGLE/renderer/vulkan/ImageVk.h"
21#include "libANGLE/renderer/vulkan/ProgramVk.h"
22#include "libANGLE/renderer/vulkan/QueryVk.h"
23#include "libANGLE/renderer/vulkan/RenderbufferVk.h"
24#include "libANGLE/renderer/vulkan/RendererVk.h"
25#include "libANGLE/renderer/vulkan/SamplerVk.h"
26#include "libANGLE/renderer/vulkan/ShaderVk.h"
27#include "libANGLE/renderer/vulkan/TextureVk.h"
28#include "libANGLE/renderer/vulkan/TransformFeedbackVk.h"
29#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
Jamie Madill9e54b5a2016-05-25 12:57:39 -040030
31namespace rx
32{
33
Jamie Madillacccc6c2016-05-03 17:22:10 -040034ContextVk::ContextVk(const gl::ContextState &state, RendererVk *renderer)
35 : ContextImpl(state), mRenderer(renderer)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040036{
37}
38
39ContextVk::~ContextVk()
40{
41}
42
43gl::Error ContextVk::initialize()
44{
Jamie Madille09bd5d2016-11-29 16:20:35 -050045 return gl::NoError();
Jamie Madill9e54b5a2016-05-25 12:57:39 -040046}
47
48gl::Error ContextVk::flush()
49{
50 UNIMPLEMENTED();
51 return gl::Error(GL_INVALID_OPERATION);
52}
53
54gl::Error ContextVk::finish()
55{
56 UNIMPLEMENTED();
57 return gl::Error(GL_INVALID_OPERATION);
58}
59
60gl::Error ContextVk::drawArrays(GLenum mode, GLint first, GLsizei count)
61{
62 UNIMPLEMENTED();
63 return gl::Error(GL_INVALID_OPERATION);
64}
65
66gl::Error ContextVk::drawArraysInstanced(GLenum mode,
67 GLint first,
68 GLsizei count,
69 GLsizei instanceCount)
70{
71 UNIMPLEMENTED();
72 return gl::Error(GL_INVALID_OPERATION);
73}
74
75gl::Error ContextVk::drawElements(GLenum mode,
76 GLsizei count,
77 GLenum type,
78 const GLvoid *indices,
79 const gl::IndexRange &indexRange)
80{
81 UNIMPLEMENTED();
82 return gl::Error(GL_INVALID_OPERATION);
83}
84
85gl::Error ContextVk::drawElementsInstanced(GLenum mode,
86 GLsizei count,
87 GLenum type,
88 const GLvoid *indices,
89 GLsizei instances,
90 const gl::IndexRange &indexRange)
91{
92 UNIMPLEMENTED();
93 return gl::Error(GL_INVALID_OPERATION);
94}
95
96gl::Error ContextVk::drawRangeElements(GLenum mode,
97 GLuint start,
98 GLuint end,
99 GLsizei count,
100 GLenum type,
101 const GLvoid *indices,
102 const gl::IndexRange &indexRange)
103{
104 UNIMPLEMENTED();
105 return gl::Error(GL_INVALID_OPERATION);
106}
107
Jiajia Qind9671222016-11-29 16:30:31 +0800108gl::Error ContextVk::drawArraysIndirect(GLenum mode, const GLvoid *indirect)
109{
110 UNIMPLEMENTED();
111 return gl::InternalError() << "DrawArraysIndirect hasn't been implemented for vulkan backend.";
112}
113
114gl::Error ContextVk::drawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect)
115{
116 UNIMPLEMENTED();
117 return gl::InternalError()
118 << "DrawElementsIndirect hasn't been implemented for vulkan backend.";
119}
120
Corentin Wallez87fbe1c2016-08-03 14:41:42 -0400121GLenum ContextVk::getResetStatus()
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400122{
123 UNIMPLEMENTED();
Corentin Wallez87fbe1c2016-08-03 14:41:42 -0400124 return GL_NO_ERROR;
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400125}
126
127std::string ContextVk::getVendorString() const
128{
129 UNIMPLEMENTED();
130 return std::string();
131}
132
133std::string ContextVk::getRendererDescription() const
134{
Jamie Madille09bd5d2016-11-29 16:20:35 -0500135 return mRenderer->getRendererDescription();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400136}
137
138void ContextVk::insertEventMarker(GLsizei length, const char *marker)
139{
140 UNIMPLEMENTED();
141}
142
143void ContextVk::pushGroupMarker(GLsizei length, const char *marker)
144{
145 UNIMPLEMENTED();
146}
147
148void ContextVk::popGroupMarker()
149{
150 UNIMPLEMENTED();
151}
152
153void ContextVk::syncState(const gl::State &state, const gl::State::DirtyBits &dirtyBits)
154{
155 UNIMPLEMENTED();
156}
157
158GLint ContextVk::getGPUDisjoint()
159{
160 UNIMPLEMENTED();
161 return GLint();
162}
163
164GLint64 ContextVk::getTimestamp()
165{
166 UNIMPLEMENTED();
167 return GLint64();
168}
169
Jamie Madille09bd5d2016-11-29 16:20:35 -0500170void ContextVk::onMakeCurrent(const gl::ContextState & /*data*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400171{
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400172}
173
174const gl::Caps &ContextVk::getNativeCaps() const
175{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400176 return mRenderer->getNativeCaps();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400177}
178
179const gl::TextureCapsMap &ContextVk::getNativeTextureCaps() const
180{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400181 return mRenderer->getNativeTextureCaps();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400182}
183
184const gl::Extensions &ContextVk::getNativeExtensions() const
185{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400186 return mRenderer->getNativeExtensions();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400187}
188
189const gl::Limitations &ContextVk::getNativeLimitations() const
190{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400191 return mRenderer->getNativeLimitations();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400192}
193
194CompilerImpl *ContextVk::createCompiler()
195{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400196 return new CompilerVk();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400197}
198
Jamie Madillacccc6c2016-05-03 17:22:10 -0400199ShaderImpl *ContextVk::createShader(const gl::ShaderState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400200{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400201 return new ShaderVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400202}
203
Jamie Madillacccc6c2016-05-03 17:22:10 -0400204ProgramImpl *ContextVk::createProgram(const gl::ProgramState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400205{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400206 return new ProgramVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400207}
208
Jamie Madillacccc6c2016-05-03 17:22:10 -0400209FramebufferImpl *ContextVk::createFramebuffer(const gl::FramebufferState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400210{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400211 return new FramebufferVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400212}
213
214TextureImpl *ContextVk::createTexture(const gl::TextureState &state)
215{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400216 return new TextureVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400217}
218
219RenderbufferImpl *ContextVk::createRenderbuffer()
220{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400221 return new RenderbufferVk();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400222}
223
Jamie Madill8f775602016-11-03 16:45:34 -0400224BufferImpl *ContextVk::createBuffer(const gl::BufferState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400225{
Jamie Madill8f775602016-11-03 16:45:34 -0400226 return new BufferVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400227}
228
Jamie Madillacccc6c2016-05-03 17:22:10 -0400229VertexArrayImpl *ContextVk::createVertexArray(const gl::VertexArrayState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400230{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400231 return new VertexArrayVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400232}
233
234QueryImpl *ContextVk::createQuery(GLenum type)
235{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400236 return new QueryVk(type);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400237}
238
239FenceNVImpl *ContextVk::createFenceNV()
240{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400241 return new FenceNVVk();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400242}
243
244FenceSyncImpl *ContextVk::createFenceSync()
245{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400246 return new FenceSyncVk();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400247}
248
Geoff Lang73bd2182016-07-15 13:01:24 -0400249TransformFeedbackImpl *ContextVk::createTransformFeedback(const gl::TransformFeedbackState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400250{
Geoff Lang73bd2182016-07-15 13:01:24 -0400251 return new TransformFeedbackVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400252}
253
254SamplerImpl *ContextVk::createSampler()
255{
Jamie Madillacccc6c2016-05-03 17:22:10 -0400256 return new SamplerVk();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400257}
258
Sami Väisänene45e53b2016-05-25 10:36:04 +0300259std::vector<PathImpl *> ContextVk::createPaths(GLsizei)
260{
261 return std::vector<PathImpl *>();
262}
263
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400264} // namespace rx