[Mesa-dev] [Mesa-stable] [PATCH] haiku/swrast: Inherit gl_config, fix flush
Francisco Jerez
currojerez at riseup.net
Thu Nov 14 10:25:52 PST 2013
Alexander von Gluck IV <kallisti5 at unixzen.com> writes:
> * Inherit gl_context so we always have access to it
> * Thanks curro for the idea.
> * Last Haiku cannidate for 10.0.0
If you remove the redundant 'if (!this) {...}', this patch is:
Reviewed-by: Francisco Jerez <currojerez at riseup.net>
> ---
> src/mesa/drivers/haiku/swrast/SoftwareRast.cpp | 56 +++++++++++-------------
> src/mesa/drivers/haiku/swrast/SoftwareRast.h | 3 +-
> 2 files changed, 27 insertions(+), 32 deletions(-)
>
> diff --git a/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp b/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp
> index 52e8e5e..dbd8e72 100644
> --- a/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp
> +++ b/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp
> @@ -72,7 +72,6 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong options,
> fDirectModeEnabled(false),
> fInfo(NULL),
> fInfoLocker("info locker"),
> - fContext(NULL),
> fVisual(NULL),
> fFrameBuffer(NULL),
> fFrontRenderBuffer(NULL),
> @@ -114,34 +113,33 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong options,
> functions.Flush = _Flush;
>
> // create core context
> - fContext = _mesa_create_context(API_OPENGL_COMPAT, fVisual, NULL,
> + // We inherit gl_context to this class
> + _mesa_initialize_context(this, API_OPENGL_COMPAT, fVisual, NULL,
> &functions);
>
> - if (!fContext) {
> + if (!this) {
> ERROR("%s: Failed to create Mesa context!\n", __func__);
> _mesa_destroy_visual(fVisual);
> return;
> }
>
> - fContext->DriverCtx = (void*)this;
> -
> /* Initialize the software rasterizer and helper modules. */
> - _swrast_CreateContext(fContext);
> - _vbo_CreateContext(fContext);
> - _tnl_CreateContext(fContext);
> - _swsetup_CreateContext(fContext);
> - _swsetup_Wakeup(fContext);
> + _swrast_CreateContext(this);
> + _vbo_CreateContext(this);
> + _tnl_CreateContext(this);
> + _swsetup_CreateContext(this);
> + _swsetup_Wakeup(this);
>
> // Use default TCL pipeline
> - TNL_CONTEXT(fContext)->Driver.RunPipeline = _tnl_run_pipeline;
> + TNL_CONTEXT(this)->Driver.RunPipeline = _tnl_run_pipeline;
>
> - _mesa_meta_init(fContext);
> - _mesa_enable_sw_extensions(fContext);
> + _mesa_meta_init(this);
> + _mesa_enable_sw_extensions(this);
>
> - _mesa_compute_version(fContext);
> + _mesa_compute_version(this);
>
> - _mesa_initialize_dispatch_tables(fContext);
> - _mesa_initialize_vbo_vtxfmt(fContext);
> + _mesa_initialize_dispatch_tables(this);
> + _mesa_initialize_vbo_vtxfmt(this);
>
> // create core framebuffer
> fFrameBuffer = _mesa_create_framebuffer(fVisual);
> @@ -199,13 +197,13 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong options,
> MesaSoftwareRast::~MesaSoftwareRast()
> {
> CALLED();
> - _swsetup_DestroyContext(fContext);
> - _swrast_DestroyContext(fContext);
> - _tnl_DestroyContext(fContext);
> - _vbo_DestroyContext(fContext);
> + _swsetup_DestroyContext(this);
> + _swrast_DestroyContext(this);
> + _tnl_DestroyContext(this);
> + _vbo_DestroyContext(this);
> _mesa_destroy_visual(fVisual);
> _mesa_destroy_framebuffer(fFrameBuffer);
> - _mesa_destroy_context(fContext);
> + _mesa_destroy_context(this);
>
> free(fInfo);
> free(fFrameBuffer);
> @@ -220,7 +218,7 @@ MesaSoftwareRast::LockGL()
> CALLED();
> BGLRenderer::LockGL();
>
> - _mesa_make_current(fContext, fFrameBuffer, fFrameBuffer);
> + _mesa_make_current(this, fFrameBuffer, fFrameBuffer);
>
> color_space colorSpace = BScreen(GLView()->Window()).ColorSpace();
>
> @@ -250,7 +248,7 @@ void
> MesaSoftwareRast::UnlockGL()
> {
> CALLED();
> - _mesa_make_current(fContext, NULL, NULL);
> + _mesa_make_current(this, NULL, NULL);
> BGLRenderer::UnlockGL();
> }
>
> @@ -264,7 +262,7 @@ MesaSoftwareRast::SwapBuffers(bool VSync)
> return;
>
> if (fVisual->doubleBufferMode)
> - _mesa_notifySwapBuffers(fContext);
> + _mesa_notifySwapBuffers(this);
>
> if (!fDirectModeEnabled || fInfo == NULL) {
> if (GLView()->LockLooperWithTimeout(1000) == B_OK) {
> @@ -416,7 +414,7 @@ MesaSoftwareRast::_CheckResize(GLuint newWidth, GLuint newHeight)
> return;
> }
>
> - _mesa_resize_framebuffer(fContext, fFrameBuffer, newWidth, newHeight);
> + _mesa_resize_framebuffer(this, fFrameBuffer, newWidth, newHeight);
> fHeight = newHeight;
> fWidth = newWidth;
>
> @@ -546,17 +544,15 @@ void
> MesaSoftwareRast::_Flush(gl_context* ctx)
> {
> CALLED();
> - // TODO: We may want to add the void* DriverCtx back into mtypes.h for
> - // gl_context someday...
> - #if 0
> - MesaSoftwareRast* driverContext = (MesaSoftwareRast*)ctx->DriverCtx;
> + MesaSoftwareRast* driverContext = static_cast<MesaSoftwareRast*>(ctx);
> +
> + //MesaSoftwareRast* driverContext = (MesaSoftwareRast*)ctx->DriverCtx;
> if ((driverContext->fOptions & BGL_DOUBLE) == 0) {
> // TODO: SwapBuffers() can call _CopyToDirect(), which should
> // be always called with with the BGLView drawlocked.
> // This is not always the case if called from here.
> driverContext->SwapBuffers();
> }
> - #endif
> }
>
>
> diff --git a/src/mesa/drivers/haiku/swrast/SoftwareRast.h b/src/mesa/drivers/haiku/swrast/SoftwareRast.h
> index 8ef8493..8f0f018 100644
> --- a/src/mesa/drivers/haiku/swrast/SoftwareRast.h
> +++ b/src/mesa/drivers/haiku/swrast/SoftwareRast.h
> @@ -24,7 +24,7 @@ extern "C" {
> }
>
>
> -class MesaSoftwareRast : public BGLRenderer {
> +class MesaSoftwareRast : public BGLRenderer, public gl_context {
> public:
> MesaSoftwareRast(BGLView* view,
> ulong bgl_options,
> @@ -79,7 +79,6 @@ private:
> BLocker fInfoLocker;
> ulong fOptions;
>
> - gl_context* fContext;
> gl_config* fVisual;
>
> struct gl_framebuffer* fFrameBuffer;
> --
> 1.7.9.5
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-stable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131114/cd352bb0/attachment.pgp>
More information about the mesa-dev
mailing list