On 02/25/2016 02:40 AM, Brian Paul wrote:
On 02/24/2016 04:35 PM, Miklós Máté wrote:
This fixes post-processing in SW:KotOR.

Can you elaborate on exactly what's happening and why this change fixes things?
Sometimes no texture is bound during the post-processing, which results in msamp=0, and segfault a few lines later.




v2: fix const-ness

Signed-off-by: Miklós Máté <mtm...@gmail.com>
---
  src/mesa/state_tracker/st_atom_sampler.c | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
index 82dcf5e..52187d0 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -133,7 +133,7 @@ convert_sampler(struct st_context *st,
  {
     const struct gl_texture_object *texobj;
     struct gl_context *ctx = st->ctx;
-   struct gl_sampler_object *msamp;
+   const struct gl_sampler_object *msamp;
     GLenum texBaseFormat;

     texobj = ctx->Texture.Unit[texUnit]._Current;
@@ -144,6 +144,10 @@ convert_sampler(struct st_context *st,
     texBaseFormat = _mesa_texture_base_format(texobj);

     msamp = _mesa_get_samplerobj(ctx, texUnit);
+   if (!msamp) {
+      /* handle the fallback texture */
+      msamp = &texobj->Sampler;
+   }

     memset(sampler, 0, sizeof(*sampler));
     sampler->wrap_s = gl_wrap_xlate(msamp->WrapS);


I'm guessing that _mesa_get_samplerobj() returns NULL only if there's no currently active texture for the given unit. If so, maybe the msamp assignment should get moved into the earlier "if (!texobj)" test.
Yes, you're right. I now moved the assignment.

MM
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to