On 05/02/2011 07:03 AM, Marek Olšák wrote:
---
  src/gallium/include/pipe/p_defines.h        |    1 +
  src/gallium/include/pipe/p_state.h          |    1 +
  src/mesa/state_tracker/st_atom_rasterizer.c |    6 +++++-
  src/mesa/state_tracker/st_extensions.c      |    4 ++++
  4 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/gallium/include/pipe/p_defines.h 
b/src/gallium/include/pipe/p_defines.h
index 431a7fb..176fee9 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -465,6 +465,7 @@ enum pipe_cap {
     PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR = 44,
     PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL = 45,
     PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46,
+   PIPE_CAP_SEAMLESS_CUBE_MAP = 47
  };

  /* Shader caps not specific to any single stage */
diff --git a/src/gallium/include/pipe/p_state.h 
b/src/gallium/include/pipe/p_state.h
index 0c1f509..26e8a8e 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -101,6 +101,7 @@ struct pipe_rasterizer_state
     unsigned line_smooth:1;
     unsigned line_stipple_enable:1;
     unsigned line_last_pixel:1;
+   unsigned seamless_cube_map:1;

Shouldn't this be sampler state and not rasterizer state? The AMD extension lets this option be set per texture. Though, I don't know if non-AMD hardware supports that mode.


     /**
      * Use the first vertex of a primitive as the provoking vertex for
diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c 
b/src/mesa/state_tracker/st_atom_rasterizer.c
index 250cbb2..e19b465 100644
--- a/src/mesa/state_tracker/st_atom_rasterizer.c
+++ b/src/mesa/state_tracker/st_atom_rasterizer.c
@@ -257,6 +257,9 @@ static void update_raster_state( struct st_context *st )
     /* _NEW_FRAG_CLAMP */
     raster->clamp_fragment_color = ctx->Color._ClampFragmentColor;

+   /* _NEW_SEAMLESS_CUBE_MAP */
+   raster->seamless_cube_map = ctx->Texture.CubeMapSeamless;
+
     raster->gl_rasterization_rules = 1;

     cso_set_rasterizer(st->cso_context, raster);
@@ -273,7 +276,8 @@ const struct st_tracked_state st_update_rasterizer = {
         _NEW_POLYGON |
         _NEW_PROGRAM |
         _NEW_SCISSOR |
-       _NEW_FRAG_CLAMP),      /* mesa state dependencies*/
+       _NEW_FRAG_CLAMP |
+       _NEW_SEAMLESS_CUBE_MAP),  /* mesa state dependencies*/
        ST_NEW_VERTEX_PROGRAM,  /* state tracker dependencies */
     },
     update_raster_state     /* update function */
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 030bbc7..8bdf89c 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -595,4 +595,8 @@ void st_init_extensions(struct st_context *st)
                                     PIPE_BIND_SAMPLER_VIEW)) {
        ctx->Extensions.EXT_packed_float = GL_TRUE;
     }
+
+   if (screen->get_param(screen, PIPE_CAP_SEAMLESS_CUBE_MAP)) {
+      ctx->Extensions.ARB_seamless_cube_map = GL_TRUE;
+   }
  }

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

Reply via email to