OLD | NEW |
| 1 |
1 /* | 2 /* |
2 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
3 * | 4 * |
4 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 6 * found in the LICENSE file. |
6 */ | 7 */ |
7 | 8 |
8 | 9 #include "NullGLContext.h" |
| 10 #include "gl/GrGLTestInterface.h" |
| 11 #include "gl/GrGLDefines.h" |
9 #include "gl/GrGLInterface.h" | 12 #include "gl/GrGLInterface.h" |
10 #include "GrGLTestInterface.h" | 13 #include "gl/GrGLTypes.h" |
11 #include "SkMutex.h" | 14 #include "SkMutex.h" |
12 #include "SkTDArray.h" | 15 #include "SkTDArray.h" |
13 | 16 |
14 // added to suppress 'no previous prototype' warning and because this code is du
plicated in | |
15 // SkNullGLContext.cpp | |
16 namespace { | 17 namespace { |
17 | 18 |
18 class BufferObj { | 19 class BufferObj { |
19 public: | 20 public: |
20 BufferObj(GrGLuint id) : fID(id), fDataPtr(nullptr), fSize(0), fMapped(false
) {} | 21 BufferObj(GrGLuint id) : fID(id), fDataPtr(nullptr), fSize(0), fMapped(false
) {} |
21 ~BufferObj() { delete[] fDataPtr; } | 22 ~BufferObj() { delete[] fDataPtr; } |
22 | 23 |
23 void allocate(GrGLsizeiptr size, const GrGLchar* dataPtr) { | 24 void allocate(GrGLsizeiptr size, const GrGLchar* dataPtr) { |
24 if (fDataPtr) { | 25 if (fDataPtr) { |
25 SkASSERT(0 != fSize); | 26 SkASSERT(0 != fSize); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 }; | 108 }; |
108 | 109 |
109 /** Null interface implementation */ | 110 /** Null interface implementation */ |
110 class NullInterface : public GrGLTestInterface { | 111 class NullInterface : public GrGLTestInterface { |
111 public: | 112 public: |
112 NullInterface() | 113 NullInterface() |
113 : fCurrArrayBuffer(0) | 114 : fCurrArrayBuffer(0) |
114 , fCurrElementArrayBuffer(0) | 115 , fCurrElementArrayBuffer(0) |
115 , fCurrPixelPackBuffer(0) | 116 , fCurrPixelPackBuffer(0) |
116 , fCurrPixelUnpackBuffer(0) | 117 , fCurrPixelUnpackBuffer(0) |
117 , fCurrProgramID(0) | |
118 , fCurrShaderID(0) | 118 , fCurrShaderID(0) |
119 , fCurrGenericID(0) | 119 , fCurrGenericID(0) |
120 , fCurrUniformLocation(0) { | 120 , fCurrUniformLocation(0) { |
121 this->init(kGL_GrGLStandard); | 121 this->init(kGL_GrGLStandard); |
122 } | 122 } |
123 | 123 |
124 GrGLenum checkFramebufferStatus(GrGLenum target) override { | 124 GrGLenum checkFramebufferStatus(GrGLenum target) override { |
125 return GR_GL_FRAMEBUFFER_COMPLETE; | 125 return GR_GL_FRAMEBUFFER_COMPLETE; |
126 } | 126 } |
127 | 127 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 break; | 178 break; |
179 case GR_GL_PIXEL_PACK_BUFFER: | 179 case GR_GL_PIXEL_PACK_BUFFER: |
180 fCurrPixelPackBuffer = buffer; | 180 fCurrPixelPackBuffer = buffer; |
181 break; | 181 break; |
182 case GR_GL_PIXEL_UNPACK_BUFFER: | 182 case GR_GL_PIXEL_UNPACK_BUFFER: |
183 fCurrPixelUnpackBuffer = buffer; | 183 fCurrPixelUnpackBuffer = buffer; |
184 break; | 184 break; |
185 } | 185 } |
186 } | 186 } |
187 | 187 |
188 // deleting a bound buffer has the side effect of binding 0 | 188 // deleting a bound buffer has the side effect of binding 0 |
189 GrGLvoid deleteBuffers(GrGLsizei n, const GrGLuint* ids) override { | 189 GrGLvoid deleteBuffers(GrGLsizei n, const GrGLuint* ids) override { |
190 for (int i = 0; i < n; ++i) { | 190 for (int i = 0; i < n; ++i) { |
191 if (ids[i] == fCurrArrayBuffer) { | 191 if (ids[i] == fCurrArrayBuffer) { |
192 fCurrArrayBuffer = 0; | 192 fCurrArrayBuffer = 0; |
193 } | 193 } |
194 if (ids[i] == fCurrElementArrayBuffer) { | 194 if (ids[i] == fCurrElementArrayBuffer) { |
195 fCurrElementArrayBuffer = 0; | 195 fCurrElementArrayBuffer = 0; |
196 } | 196 } |
197 if (ids[i] == fCurrPixelPackBuffer) { | 197 if (ids[i] == fCurrPixelPackBuffer) { |
198 fCurrPixelPackBuffer = 0; | 198 fCurrPixelPackBuffer = 0; |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 const char* NullInterface::kExtensions[] = { | 598 const char* NullInterface::kExtensions[] = { |
599 "GL_ARB_framebuffer_object", | 599 "GL_ARB_framebuffer_object", |
600 "GL_ARB_blend_func_extended", | 600 "GL_ARB_blend_func_extended", |
601 "GL_ARB_timer_query", | 601 "GL_ARB_timer_query", |
602 "GL_ARB_draw_buffers", | 602 "GL_ARB_draw_buffers", |
603 "GL_ARB_occlusion_query", | 603 "GL_ARB_occlusion_query", |
604 "GL_EXT_stencil_wrap", | 604 "GL_EXT_stencil_wrap", |
605 nullptr, // signifies the end of the array. | 605 nullptr, // signifies the end of the array. |
606 }; | 606 }; |
607 | 607 |
| 608 class NullGLContext : public sk_gpu_test::GLContext { |
| 609 public: |
| 610 NullGLContext() { this->init(new NullInterface); } |
| 611 ~NullGLContext() override { this->teardown(); } |
| 612 |
| 613 private: |
| 614 void onPlatformMakeCurrent() const override {}; |
| 615 void onPlatformSwapBuffers() const override {} |
| 616 GrGLFuncPtr onPlatformGetProcAddress(const char*) const override { return nu
llptr; } |
| 617 }; |
608 } // anonymous namespace | 618 } // anonymous namespace |
609 | 619 |
610 const GrGLInterface* GrGLCreateNullInterface() { return new NullInterface; } | 620 namespace sk_gpu_test { |
| 621 GLContext* CreateNullGLContext() { |
| 622 GLContext* ctx = new NullGLContext(); |
| 623 if (ctx->isValid()) { |
| 624 return ctx; |
| 625 } |
| 626 delete ctx; |
| 627 return nullptr; |
| 628 } |
| 629 } // namespace sk_gpu_test |
| 630 |
OLD | NEW |