diff options
Diffstat (limited to 'mesalib/src/mesa/drivers')
-rw-r--r-- | mesalib/src/mesa/drivers/common/meta.h | 4 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/common/meta_blit.c | 15 | ||||
-rwxr-xr-x | mesalib/src/mesa/drivers/dri/common/dri_util.c | 4 |
3 files changed, 17 insertions, 6 deletions
diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h index 007f1040b..765f8dfe4 100644 --- a/mesalib/src/mesa/drivers/common/meta.h +++ b/mesalib/src/mesa/drivers/common/meta.h @@ -270,7 +270,7 @@ struct blit_state struct fb_tex_blit_state { GLint baseLevelSave, maxLevelSave; - GLuint sampler, samplerSave; + GLuint sampler, samplerSave, stencilSamplingSave; GLuint tempTex; }; @@ -407,7 +407,7 @@ _mesa_meta_fb_tex_blit_begin(const struct gl_context *ctx, struct fb_tex_blit_state *blit); extern void -_mesa_meta_fb_tex_blit_end(const struct gl_context *ctx, GLenum target, +_mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target, struct fb_tex_blit_state *blit); extern GLboolean diff --git a/mesalib/src/mesa/drivers/common/meta_blit.c b/mesalib/src/mesa/drivers/common/meta_blit.c index 707269dd6..5929619f3 100644 --- a/mesalib/src/mesa/drivers/common/meta_blit.c +++ b/mesalib/src/mesa/drivers/common/meta_blit.c @@ -273,7 +273,7 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx, samples); } else { ralloc_asprintf_append(&sample_resolve, - " out_color = sample_%d_0 / %f;\n", + " gl_FragColor = sample_%d_0 / %f;\n", samples, (float)samples); } } @@ -446,6 +446,7 @@ blitframebuffer_texture(struct gl_context *ctx, fb_tex_blit.baseLevelSave = texObj->BaseLevel; fb_tex_blit.maxLevelSave = texObj->MaxLevel; + fb_tex_blit.stencilSamplingSave = texObj->StencilSampling; if (glsl_version) { setup_glsl_blit_framebuffer(ctx, blit, rb, target); @@ -576,7 +577,7 @@ _mesa_meta_fb_tex_blit_begin(const struct gl_context *ctx, } void -_mesa_meta_fb_tex_blit_end(const struct gl_context *ctx, GLenum target, +_mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target, struct fb_tex_blit_state *blit) { /* Restore texture object state, the texture binding will @@ -585,6 +586,16 @@ _mesa_meta_fb_tex_blit_end(const struct gl_context *ctx, GLenum target, if (target != GL_TEXTURE_RECTANGLE_ARB) { _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, blit->baseLevelSave); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, blit->maxLevelSave); + + if (ctx->Extensions.ARB_stencil_texturing) { + const struct gl_texture_object *texObj = + _mesa_get_current_tex_object(ctx, target); + + if (texObj->StencilSampling != blit->stencilSamplingSave) + _mesa_TexParameteri(target, GL_DEPTH_STENCIL_TEXTURE_MODE, + blit->stencilSamplingSave ? + GL_STENCIL_INDEX : GL_DEPTH_COMPONENT); + } } _mesa_BindSampler(ctx->Texture.CurrentUnit, blit->samplerSave); diff --git a/mesalib/src/mesa/drivers/dri/common/dri_util.c b/mesalib/src/mesa/drivers/dri/common/dri_util.c index bb07a9541..f4fc1b1a8 100755 --- a/mesalib/src/mesa/drivers/dri/common/dri_util.c +++ b/mesalib/src/mesa/drivers/dri/common/dri_util.c @@ -52,7 +52,7 @@ #include "main/errors.h" #include "main/macros.h" -PUBLIC const char __dri2ConfigOptions[] = +const char __dri2ConfigOptions[] = DRI_CONF_BEGIN DRI_CONF_SECTION_PERFORMANCE DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1) @@ -736,7 +736,7 @@ driSwapBuffers(__DRIdrawable *pdp) /** Core interface */ const __DRIcoreExtension driCoreExtension = { - /*.base =*/ { __DRI_CORE, __DRI_CORE_VERSION }, + /*.base =*/ { __DRI_CORE, 1 }, /*.createNewScreen =*/ NULL, /*.destroyScreen =*/ driDestroyScreen, |