Mesa (master): nv50: set BORDER_COLOR_SRGB in sampler objects

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Thu Apr 18 18:37:26 UTC 2013


Module: Mesa
Branch: master
Commit: 246ff8f887e10a2828fb43104a06ba6f2505b74d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=246ff8f887e10a2828fb43104a06ba6f2505b74d

Author: Christoph Bumiller <christoph.bumiller at speed.at>
Date:   Sat Apr 13 15:04:55 2013 +0200

nv50: set BORDER_COLOR_SRGB in sampler objects

---

 src/gallium/drivers/nv50/nv50_state.c       |   30 +++++++++++++++++---------
 src/gallium/drivers/nv50/nv50_texture.xml.h |   24 ++++++++++++++-------
 2 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c
index 819b0a2..cbde4b1 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -24,6 +24,7 @@
 #include "util/u_helpers.h"
 #include "util/u_inlines.h"
 #include "util/u_transfer.h"
+#include "util/u_format_srgb.h"
 
 #include "tgsi/tgsi_parse.h"
 
@@ -456,7 +457,7 @@ void *
 nv50_sampler_state_create(struct pipe_context *pipe,
                           const struct pipe_sampler_state *cso)
 {
-   struct nv50_tsc_entry *so = CALLOC_STRUCT(nv50_tsc_entry);
+   struct nv50_tsc_entry *so = MALLOC_STRUCT(nv50_tsc_entry);
    float f[2];
 
    so->id = -1;
@@ -466,20 +467,13 @@ nv50_sampler_state_create(struct pipe_context *pipe,
                  (nv50_tsc_wrap_mode(cso->wrap_t) << 3) |
                  (nv50_tsc_wrap_mode(cso->wrap_r) << 6));
 
-   if (nouveau_screen(pipe->screen)->class_3d >= NVE4_3D_CLASS) {
-      if (cso->seamless_cube_map)
-         so->tsc[1] |= NVE4_TSC_1_CUBE_SEAMLESS;
-      if (!cso->normalized_coords)
-         so->tsc[1] |= NVE4_TSC_1_FORCE_NONNORMALIZED_COORDS;
-   }
-
    switch (cso->mag_img_filter) {
    case PIPE_TEX_FILTER_LINEAR:
-      so->tsc[1] |= NV50_TSC_1_MAGF_LINEAR;
+      so->tsc[1] = NV50_TSC_1_MAGF_LINEAR;
       break;
    case PIPE_TEX_FILTER_NEAREST:
    default:
-      so->tsc[1] |= NV50_TSC_1_MAGF_NEAREST;
+      so->tsc[1] = NV50_TSC_1_MAGF_NEAREST;
       break;
    }
 
@@ -506,6 +500,13 @@ nv50_sampler_state_create(struct pipe_context *pipe,
       break;
    }
 
+   if (nouveau_screen(pipe->screen)->class_3d >= NVE4_3D_CLASS) {
+      if (cso->seamless_cube_map)
+         so->tsc[1] |= NVE4_TSC_1_CUBE_SEAMLESS;
+      if (!cso->normalized_coords)
+         so->tsc[1] |= NVE4_TSC_1_FORCE_NONNORMALIZED_COORDS;
+   }
+
    if (cso->max_anisotropy >= 16)
       so->tsc[0] |= (7 << 20);
    else
@@ -532,9 +533,16 @@ nv50_sampler_state_create(struct pipe_context *pipe,
 
    f[0] = CLAMP(cso->min_lod, 0.0f, 15.0f);
    f[1] = CLAMP(cso->max_lod, 0.0f, 15.0f);
-   so->tsc[2] |=
+   so->tsc[2] =
       (((int)(f[1] * 256.0f) & 0xfff) << 12) | ((int)(f[0] * 256.0f) & 0xfff);
 
+   so->tsc[2] |=
+      util_format_linear_float_to_srgb_8unorm(cso->border_color.f[0]) << 24;
+   so->tsc[3] =
+      util_format_linear_float_to_srgb_8unorm(cso->border_color.f[1]) << 12;
+   so->tsc[3] |=
+      util_format_linear_float_to_srgb_8unorm(cso->border_color.f[2]) << 20;
+
    so->tsc[4] = fui(cso->border_color.f[0]);
    so->tsc[5] = fui(cso->border_color.f[1]);
    so->tsc[6] = fui(cso->border_color.f[2]);
diff --git a/src/gallium/drivers/nv50/nv50_texture.xml.h b/src/gallium/drivers/nv50/nv50_texture.xml.h
index 63daf9e..31eab9b 100644
--- a/src/gallium/drivers/nv50/nv50_texture.xml.h
+++ b/src/gallium/drivers/nv50/nv50_texture.xml.h
@@ -1,5 +1,5 @@
-#ifndef RNNDB_NV50_TEXTURE_XML
-#define RNNDB_NV50_TEXTURE_XML
+#ifndef NV50_TEXTURE_XML
+#define NV50_TEXTURE_XML
 
 /* Autogenerated file, DO NOT EDIT manually!
 
@@ -8,12 +8,12 @@ http://0x04.net/cgit/index.cgi/rules-ng-ng
 git clone git://0x04.net/rules-ng-ng
 
 The rules-ng-ng source files this header was generated from are:
-- rnndb/nv50_texture.xml (   8180 bytes, from 2012-07-31 11:07:50)
-- ./rnndb/copyright.xml  (   6452 bytes, from 2011-07-10 21:35:25)
-- ./rnndb/nvchipsets.xml (   3736 bytes, from 2012-07-31 11:01:16)
-- ./rnndb/nv50_defs.xml  (   5468 bytes, from 2011-07-10 21:35:25)
+- rnndb/nv50_texture.xml (   8648 bytes, from 2013-04-13 12:49:11)
+- rnndb/copyright.xml    (   6452 bytes, from 2011-08-11 18:25:12)
+- rnndb/nvchipsets.xml   (   3954 bytes, from 2013-03-26 01:26:43)
+- rnndb/nv50_defs.xml    (  16652 bytes, from 2013-04-04 10:57:15)
 
-Copyright (C) 2006-2012 by the following authors:
+Copyright (C) 2006-2013 by the following authors:
 - Artur Huillet <arthur.huillet at free.fr> (ahuillet)
 - Ben Skeggs (darktama, darktama_)
 - B. R. <koala_br at users.sourceforge.net> (koala_br)
@@ -277,6 +277,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define NV50_TSC_2_MIN_LOD__SHIFT				0
 #define NV50_TSC_2_MAX_LOD__MASK				0x00fff000
 #define NV50_TSC_2_MAX_LOD__SHIFT				12
+#define NV50_TSC_2_BORDER_COLOR_SRGB_RED__MASK			0xff000000
+#define NV50_TSC_2_BORDER_COLOR_SRGB_RED__SHIFT			24
+
+#define NV50_TSC_3						0x0000000c
+#define NV50_TSC_3_BORDER_COLOR_SRGB_GREEN__MASK		0x000ff000
+#define NV50_TSC_3_BORDER_COLOR_SRGB_GREEN__SHIFT		12
+#define NV50_TSC_3_BORDER_COLOR_SRGB_BLUE__MASK			0x0ff00000
+#define NV50_TSC_3_BORDER_COLOR_SRGB_BLUE__SHIFT		20
 
 #define NV50_TSC_4						0x00000010
 #define NV50_TSC_4_BORDER_COLOR_RED__MASK			0xffffffff
@@ -295,4 +303,4 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define NV50_TSC_7_BORDER_COLOR_ALPHA__SHIFT			0
 
 
-#endif /* RNNDB_NV50_TEXTURE_XML */
+#endif /* NV50_TEXTURE_XML */




More information about the mesa-commit mailing list