diff --git a/platform/windows/src/headless_backend_osmesa.cpp b/platform/windows/src/headless_backend_osmesa.cpp index c00dc118a..381aac3a0 100644 --- a/platform/windows/src/headless_backend_osmesa.cpp +++ b/platform/windows/src/headless_backend_osmesa.cpp @@ -14,8 +14,9 @@ namespace gl { class OSMesaBackendImpl final : public HeadlessBackend::Impl { public: - OSMesaBackendImpl() { - context = OSMesaCreateContextAttribs(std::initializer_list({OSMESA_FORMAT, + OSMesaBackendImpl() + : buffer(std::make_unique(2048 * 2048 * 4)), + context(OSMesaCreateContextAttribs(std::initializer_list({OSMESA_FORMAT, OSMESA_RGBA, OSMESA_DEPTH_BITS, 24, @@ -23,10 +24,13 @@ public: 8, OSMESA_PROFILE, OSMESA_COMPAT_PROFILE, + OSMESA_CONTEXT_MAJOR_VERSION, + 3, + OSMESA_CONTEXT_MINOR_VERSION, + 0, NULL}) .begin(), - NULL); - } + nullptr)) {} ~OSMesaBackendImpl() final { OSMesaDestroyContext(context); } @@ -36,11 +40,11 @@ public: void activateContext() final { OSMesaMakeCurrent(context, buffer.get(), GL_UNSIGNED_BYTE, 2048, 2048); } - void deactivateContext() final {} + void deactivateContext() final { OSMesaMakeCurrent(nullptr, nullptr, GL_UNSIGNED_BYTE, 0, 0); } private: - std::unique_ptr buffer = std::make_unique(2048 * 2048 * 4); - OSMesaContext context = NULL; + std::unique_ptr buffer; + OSMesaContext context; }; void HeadlessBackend::createImpl() {