Mesa (master): radeonsi: add support for Hawaii asics (v2)

2013-11-15 Thread Alex Deucher
Module: Mesa
Branch: master
Commit: f5778f152b250cb233f4bee021baae916e504afe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f5778f152b250cb233f4bee021baae916e504afe

Author: Alex Deucher alexander.deuc...@amd.com
Date:   Tue Sep 24 12:12:29 2013 -0400

radeonsi: add support for Hawaii asics (v2)

Update additional register fields.

Reviewed-by: Michel Dänzer michel.daen...@amd.com
Signed-off-by: Alex Deucher alexander.deuc...@amd.com

---

 src/gallium/drivers/radeonsi/radeonsi_pipe.c  |2 ++
 src/gallium/drivers/radeonsi/si_state.c   |4 
 src/gallium/drivers/radeonsi/sid.h|9 +
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c |1 +
 src/gallium/winsys/radeon/drm/radeon_winsys.h |1 +
 5 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index b79a58e..1f92791 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -258,6 +258,7 @@ const char *r600_get_llvm_processor_name(enum radeon_family 
family)
case CHIP_BONAIRE: return bonaire;
case CHIP_KABINI: return kabini;
case CHIP_KAVERI: return kaveri;
+   case CHIP_HAWAII: return hawaii;
default: return ;
 #endif
}
@@ -274,6 +275,7 @@ static const char *r600_get_family_name(enum radeon_family 
family)
case CHIP_BONAIRE: return AMD BONAIRE;
case CHIP_KAVERI: return AMD KAVERI;
case CHIP_KABINI: return AMD KABINI;
+   case CHIP_HAWAII: return AMD HAWAII;
default: return AMD unknown;
}
 }
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 72368d8..2742836 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3136,6 +3136,10 @@ void si_init_config(struct r600_context *rctx)
si_pm4_set_reg(pm4, R_028350_PA_SC_RASTER_CONFIG, 
0x1612);
si_pm4_set_reg(pm4, R_028354_PA_SC_RASTER_CONFIG_1, 
0x);
break;
+   case CHIP_HAWAII:
+   si_pm4_set_reg(pm4, R_028350_PA_SC_RASTER_CONFIG, 
0x3a00161a);
+   si_pm4_set_reg(pm4, R_028354_PA_SC_RASTER_CONFIG_1, 
0x002e);
+   break;
case CHIP_KAVERI:
/* XXX todo */
case CHIP_KABINI:
diff --git a/src/gallium/drivers/radeonsi/sid.h 
b/src/gallium/drivers/radeonsi/sid.h
index 021f4eb..aab39fc 100644
--- a/src/gallium/drivers/radeonsi/sid.h
+++ b/src/gallium/drivers/radeonsi/sid.h
@@ -5403,6 +5403,8 @@
 #define V_02803C_X_ADDR_SURF_P8_32X32_16X16 0x0C
 #define V_02803C_X_ADDR_SURF_P8_32X32_16X32 0x0D
 #define V_02803C_X_ADDR_SURF_P8_32X64_32X32 0x0E
+#define V_02803C_X_ADDR_SURF_P16_32X32_8X16 0x10
+#define V_02803C_X_ADDR_SURF_P16_32X32_16X160x11
 #define   S_02803C_BANK_WIDTH(x)  (((x)  
0x03)  13)
 #define   G_02803C_BANK_WIDTH(x)  (((x)  
13)  0x03)
 #define   C_02803C_BANK_WIDTH 
0x9FFF
@@ -5731,6 +5733,13 @@
 #define V_028350_RASTER_CONFIG_PKR_YSEL_1   0x01
 #define V_028350_RASTER_CONFIG_PKR_YSEL_2   0x02
 #define V_028350_RASTER_CONFIG_PKR_YSEL_3   0x03
+#define   S_028350_PKR_XSEL2(x)   (((x)  
0x03)  14)
+#define   G_028350_PKR_XSEL2(x)   (((x)  
14)  0x03)
+#define   C_028350_PKR_XSEL2  
0x3FFF
+#define V_028350_RASTER_CONFIG_PKR_XSEL2_0  0x00
+#define V_028350_RASTER_CONFIG_PKR_XSEL2_1  0x01
+#define V_028350_RASTER_CONFIG_PKR_XSEL2_2  0x02
+#define V_028350_RASTER_CONFIG_PKR_XSEL2_3  0x03
 #define   S_028350_SC_MAP(x)  (((x)  
0x03)  16)
 #define   G_028350_SC_MAP(x)  (((x)  
16)  0x03)
 #define   C_028350_SC_MAP 
0xFFFC
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c 
b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 8a8f180..1860810 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -330,6 +330,7 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
 case CHIP_BONAIRE:
 case CHIP_KAVERI:
 case CHIP_KABINI:
+case CHIP_HAWAII:
 ws-info.chip_class = CIK;
 break;
 }
diff --git 

Mesa (master): radeonsi: add Hawaii pci ids

2013-11-15 Thread Alex Deucher
Module: Mesa
Branch: master
Commit: 469b42ee21d6bc530200c76cb0e73b0b461ab6e8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=469b42ee21d6bc530200c76cb0e73b0b461ab6e8

Author: Alex Deucher alexander.deuc...@amd.com
Date:   Tue Sep 24 12:13:42 2013 -0400

radeonsi: add Hawaii pci ids

Reviewed-by: Michel Dänzer michel.daen...@amd.com
Signed-off-by: Alex Deucher alexander.deuc...@amd.com

---

 include/pci_ids/radeonsi_pci_ids.h |   13 +
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/include/pci_ids/radeonsi_pci_ids.h 
b/include/pci_ids/radeonsi_pci_ids.h
index 0fdd1ad..7b42d5e 100644
--- a/include/pci_ids/radeonsi_pci_ids.h
+++ b/include/pci_ids/radeonsi_pci_ids.h
@@ -118,3 +118,16 @@ CHIPSET(0x1317, KAVERI_1317, KAVERI)
 CHIPSET(0x131B, KAVERI_131B, KAVERI)
 CHIPSET(0x131C, KAVERI_131C, KAVERI)
 CHIPSET(0x131D, KAVERI_131D, KAVERI)
+
+CHIPSET(0x67A0, HAWAII_67A0, HAWAII)
+CHIPSET(0x67A1, HAWAII_67A1, HAWAII)
+CHIPSET(0x67A2, HAWAII_67A2, HAWAII)
+CHIPSET(0x67A8, HAWAII_67A8, HAWAII)
+CHIPSET(0x67A9, HAWAII_67A9, HAWAII)
+CHIPSET(0x67AA, HAWAII_67AA, HAWAII)
+CHIPSET(0x67B0, HAWAII_67B0, HAWAII)
+CHIPSET(0x67B1, HAWAII_67B1, HAWAII)
+CHIPSET(0x67B8, HAWAII_67B8, HAWAII)
+CHIPSET(0x67B9, HAWAII_67B9, HAWAII)
+CHIPSET(0x67BA, HAWAII_67BA, HAWAII)
+CHIPSET(0x67BE, HAWAII_67BE, HAWAII)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): tools/trace: Several bugfixes/improvements to dump_state.py

2013-11-15 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 420ccf7b8f33c92657479462478db787c431d750
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=420ccf7b8f33c92657479462478db787c431d750

Author: José Fonseca jfons...@vmware.com
Date:   Fri Nov 15 15:42:02 2013 +

tools/trace: Several bugfixes/improvements to dump_state.py

- Don't crash with user memory pointers.

- Support old bind_*_sampler_* methods.  Useful when comparing dumps
  from old branches.

- Misc.

---

 src/gallium/tools/trace/dump_state.py |   58 +++-
 1 files changed, 49 insertions(+), 9 deletions(-)

diff --git a/src/gallium/tools/trace/dump_state.py 
b/src/gallium/tools/trace/dump_state.py
index 8c3bdab..293d609 100755
--- a/src/gallium/tools/trace/dump_state.py
+++ b/src/gallium/tools/trace/dump_state.py
@@ -104,7 +104,7 @@ class Struct:
 return obj
 
 def __repr__(self):
-return repr(self.__json__)
+return repr(self.__json__())
 
 
 class Translator(model.Visitor):
@@ -239,11 +239,12 @@ class Context(Dispatcher):
 self._state.vs.shader = None
 self._state.gs.shader = None
 self._state.fs.shader = None
-self._state.sampler = {}
 self._state.vs.sampler = []
 self._state.gs.sampler = []
 self._state.fs.sampler = []
-self._state.sampler_views = {}
+self._state.vs.sampler_views = []
+self._state.gs.sampler_views = []
+self._state.fs.sampler_views = []
 self._state.vs.constant_buffer = []
 self._state.gs.constant_buffer = []
 self._state.fs.constant_buffer = []
@@ -280,7 +281,21 @@ class Context(Dispatcher):
 pass
 
 def bind_sampler_states(self, shader, start, num_states, states):
-self._state.sampler[shader] = states
+# FIXME: Handle non-zero start
+assert start == 0
+self._get_stage_state(shader).sampler = states
+
+def bind_vertex_sampler_states(self, num_states, states):
+# XXX: deprecated method
+self._state.vs.sampler = states
+
+def bind_geometry_sampler_states(self, num_states, states):
+# XXX: deprecated method
+self._state.gs.sampler = states
+
+def bind_fragment_sampler_states(self, num_states, states):
+# XXX: deprecated method
+self._state.fs.sampler = states
 
 def create_rasterizer_state(self, state):
 return state
@@ -399,7 +414,21 @@ class Context(Dispatcher):
 pass
 
 def set_sampler_views(self, shader, start, num, views):
-self._state.sampler_views[shader] = views
+# FIXME: Handle non-zero start
+assert start == 0
+self._get_stage_state(shader).sampler_views = views
+
+def set_fragment_sampler_views(self, num, views):
+# XXX: deprecated
+self._state.fs.sampler_views = views
+
+def set_geometry_sampler_views(self, num, views):
+# XXX: deprecated
+self._state.gs.sampler_views = views
+
+def set_vertex_sampler_views(self, num, views):
+# XXX: deprecated
+self._state.vs.sampler_views = views
 
 def set_vertex_buffers(self, start_slot, num_buffers, buffers):
 self._update(self._state.vertex_buffers, start_slot, num_buffers, 
buffers)
@@ -432,6 +461,10 @@ class Context(Dispatcher):
 
 assert struct.calcsize(format) == index_size
 
+if self._state.index_buffer.buffer is None:
+# Could happen with index in user memory
+return 0, 0
+
 data = self._state.index_buffer.buffer.data
 max_index, min_index = 0, 0x
 
@@ -535,8 +568,11 @@ class Context(Dispatcher):
 register = registers.setdefault(file_, set())
 register.add(int(index))
 
+if 'SAMP' in registers and 'SVIEW' not in registers:
+registers['SVIEW'] = registers['SAMP']
+
 mapping = [
-(CONST, constant_buffer),
+#(CONST, constant_buffer),
 (SAMP, sampler),
 (SVIEW, sampler_views),
 ]
@@ -599,9 +635,9 @@ class Context(Dispatcher):
 def transfer_inline_write(self, resource, level, usage, box, stride, 
layer_stride, data):
 if resource is not None and resource.target == PIPE_BUFFER:
 data = data.getValue()
-assert len(data) == box.width
+assert len(data) = box.width
 assert box.x + box.width = len(resource.data)
-resource.data[box.x : box.x + box.width] = data
+resource.data[box.x : box.x + box.width] = data[:box.width]
 
 def flush(self, flags):
 # Return a fake fence
@@ -667,7 +703,11 @@ class Interpreter(parser.TraceDumper):
 pass
 
 def lookup_object(self, address):
-return self.objects[address]
+try:
+return self.objects[address]
+except KeyError:
+# Could happen, e.g., with user memory pointers
+return address
 
 def 

Mesa (master): trace: Dump user_buffer members.

2013-11-15 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: c5a05a6aefb0c2dd34bf8b42a7ef3051dcc891c2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c5a05a6aefb0c2dd34bf8b42a7ef3051dcc891c2

Author: José Fonseca jfons...@vmware.com
Date:   Fri Nov 15 15:32:33 2013 +

trace: Dump user_buffer members.

---

 src/gallium/drivers/trace/tr_dump_state.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/trace/tr_dump_state.c 
b/src/gallium/drivers/trace/tr_dump_state.c
index 22f1d27..374e32f 100644
--- a/src/gallium/drivers/trace/tr_dump_state.c
+++ b/src/gallium/drivers/trace/tr_dump_state.c
@@ -619,6 +619,7 @@ void trace_dump_vertex_buffer(const struct 
pipe_vertex_buffer *state)
trace_dump_member(uint, state, stride);
trace_dump_member(uint, state, buffer_offset);
trace_dump_member(resource_ptr, state, buffer);
+   trace_dump_member(ptr, state, user_buffer);
 
trace_dump_struct_end();
 }
@@ -639,6 +640,7 @@ void trace_dump_index_buffer(const struct pipe_index_buffer 
*state)
trace_dump_member(uint, state, index_size);
trace_dump_member(uint, state, offset);
trace_dump_member(resource_ptr, state, buffer);
+   trace_dump_member(ptr, state, user_buffer);
 
trace_dump_struct_end();
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Fix derived vertex state not being updated in glCallList()

2013-11-15 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: ff353c218a1ab1fd3fb797a4780612ec4b0451d8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff353c218a1ab1fd3fb797a4780612ec4b0451d8

Author: Fredrik Höglund fred...@kde.org
Date:   Mon Nov 11 18:54:15 2013 +0100

mesa: Fix derived vertex state not being updated in glCallList()

AEcontext::NewState is not always set when the vertex array state
is changed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71492
Cc: 10.0 mesa-sta...@lists.freedesktop.org
Reviewed-by: José Fonseca jfons...@vmware.com
Reviewed-by: Brian Paul bri...@vmware.com

---

 src/mesa/main/api_arrayelt.c |   22 --
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
index 6822465..c9d4d03 100644
--- a/src/mesa/main/api_arrayelt.c
+++ b/src/mesa/main/api_arrayelt.c
@@ -1469,6 +1469,18 @@ check_vbo(AEcontext *actx, struct gl_buffer_object *vbo)
 }
 
 
+static inline void
+update_derived_client_arrays(struct gl_context *ctx)
+{
+   struct gl_array_object *arrayObj = ctx-Array.ArrayObj;
+
+   if (arrayObj-NewArrays) {
+  _mesa_update_array_object_client_arrays(ctx, arrayObj);
+  arrayObj-NewArrays = 0;
+   }
+}
+
+
 /**
  * Make a list of per-vertex functions to call for each glArrayElement call.
  * These functions access the array data (i.e. glVertex, glColor, glNormal,
@@ -1486,12 +1498,6 @@ _ae_update_state(struct gl_context *ctx)
 
actx-nr_vbos = 0;
 
-   if (arrayObj-NewArrays) {
-  /* update the derived client arrays */
-  _mesa_update_array_object_client_arrays(ctx, arrayObj);
-  arrayObj-NewArrays = 0;
-   }
-
/* conventional vertex arrays */
if (arrayObj-_VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) {
   aa-array = arrayObj-_VertexAttrib[VERT_ATTRIB_COLOR_INDEX];
@@ -1618,6 +1624,8 @@ _ae_map_vbos(struct gl_context *ctx)
if (actx-mapped_vbos)
   return;
 
+   update_derived_client_arrays(ctx);
+
if (actx-NewState)
   _ae_update_state(ctx);
 
@@ -1669,6 +1677,8 @@ _ae_ArrayElement(GLint elt)
const struct _glapi_table * const disp = GET_DISPATCH();
GLboolean do_map;
 
+   update_derived_client_arrays(ctx);
+
/* If PrimitiveRestart is enabled and the index is the RestartIndex
 * then we call PrimitiveRestartNV and return.
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl: Rework interface block linking.

2013-11-15 Thread Paul Berry
Module: Mesa
Branch: master
Commit: f38ac41ed48fefe82360520c9d33ba9261a3e642
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f38ac41ed48fefe82360520c9d33ba9261a3e642

Author: Paul Berry stereotype...@gmail.com
Date:   Tue Oct 29 14:41:32 2013 -0700

glsl: Rework interface block linking.

Previously, when doing intrastage and interstage interface block
linking, we only checked the interface type; this prevented us from
catching some link errors.

We now check the following additional constraints:

- For intrastage linking, the presence/absence of interface names must
  match.

- For shader ins/outs, the interface names themselves must match when
  doing intrastage linking (note: it's not clear from the spec whether
  this is necessary, but Mesa's implementation currently relies on
  it).

- Array vs. nonarray must be consistent, taking into account the
  special rules for vertex-geometry linkage.

- Array sizes must be consistent (exception: during intrastage
  linking, an unsized array matches a sized array).

Note: validate_interstage_interface_blocks currently handles both
uniforms and in/out variables.  As a result, if all three shader types
are present (VS, GS, and FS), and a uniform interface block is
mentioned in the VS and FS but not the GS, it won't be validated.  I
plan to address this in later patches.

Fixes the following piglit tests in spec/glsl-1.50/linker:
- interface-blocks-vs-fs-array-size-mismatch
- interface-vs-array-to-fs-unnamed
- interface-vs-unnamed-to-fs-array
- intrastage-interface-unnamed-array

v2: Simplify logic in intrastage_match() for handling array sizes.
Make extra_array_level const.  Use an unnamed temporary
interface_block_definition in validate_interstage_interface_blocks()'s
first call to definitions-store().

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: Ian Romanick ian.d.roman...@intel.com
Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/link_interface_blocks.cpp |  271 +---
 1 files changed, 251 insertions(+), 20 deletions(-)

diff --git a/src/glsl/link_interface_blocks.cpp 
b/src/glsl/link_interface_blocks.cpp
index 4f1c9d3..a7fceb9 100644
--- a/src/glsl/link_interface_blocks.cpp
+++ b/src/glsl/link_interface_blocks.cpp
@@ -30,13 +30,211 @@
 #include glsl_symbol_table.h
 #include linker.h
 #include main/macros.h
+#include program/hash_table.h
+
+
+namespace {
+
+/**
+ * Information about a single interface block definition that we need to keep
+ * track of in order to check linkage rules.
+ *
+ * Note: this class is expected to be short lived, so it doesn't make copies
+ * of the strings it references; it simply borrows the pointers from the
+ * ir_variable class.
+ */
+struct interface_block_definition
+{
+   /**
+* Extract an interface block definition from an ir_variable that
+* represents either the interface instance (for named interfaces), or a
+* member of the interface (for unnamed interfaces).
+*/
+   explicit interface_block_definition(const ir_variable *var)
+  : type(var-get_interface_type()),
+instance_name(NULL),
+array_size(-1)
+   {
+  if (var-is_interface_instance()) {
+ instance_name = var-name;
+ if (var-type-is_array())
+array_size = var-type-length;
+  }
+   }
+
+   /**
+* Interface block type
+*/
+   const glsl_type *type;
+
+   /**
+* For a named interface block, the instance name.  Otherwise NULL.
+*/
+   const char *instance_name;
+
+   /**
+* For an interface block array, the array size (or 0 if unsized).
+* Otherwise -1.
+*/
+   int array_size;
+};
+
+
+/**
+ * Check if two interfaces match, according to intrastage interface matching
+ * rules.  If they do, and the first interface uses an unsized array, it will
+ * be updated to reflect the array size declared in the second interface.
+ */
+bool
+intrastage_match(interface_block_definition *a,
+ const interface_block_definition *b,
+ ir_variable_mode mode)
+{
+   /* Types must match. */
+   if (a-type != b-type)
+  return false;
+
+   /* Presence/absence of interface names must match. */
+   if ((a-instance_name == NULL) != (b-instance_name == NULL))
+  return false;
+
+   /* For uniforms, instance names need not match.  For shader ins/outs,
+* it's not clear from the spec whether they need to match, but
+* Mesa's implementation relies on them matching.
+*/
+   if (a-instance_name != NULL  mode != ir_var_uniform 
+   strcmp(a-instance_name, b-instance_name) != 0) {
+  return false;
+   }
+
+   /* Array vs. nonarray must be consistent, and sizes must be
+* consistent, with the exception that unsized arrays match sized
+* arrays.
+*/
+   if ((a-array_size == -1) != (b-array_size == -1))
+  return false;
+   if (b-array_size != 0) {
+  if (a-array_size == 0)
+ a-array_size = b-array_size;
+  else if (a-array_size != b-array_size)

Mesa (master): i965: Fix vertical alignment for multisampled buffers.

2013-11-15 Thread Paul Berry
Module: Mesa
Branch: master
Commit: b4c3b833ec8ec6787658ea90365ff565cd8846c7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4c3b833ec8ec6787658ea90365ff565cd8846c7

Author: Paul Berry stereotype...@gmail.com
Date:   Tue Nov 12 10:55:18 2013 -0800

i965: Fix vertical alignment for multisampled buffers.

From the Sandy Bridge PRM, Vol 1 Part 1 7.18.3.4 (Alignment Unit
Size):

j [vertical alignment] = 4 for any render target surface is
multisampled (4x)

From the Ivy Bridge PRM, Vol 4 Part 1 2.12.2.1 (SURFACE_STATE for most
messages), under the Surface Vertical Alignment heading:

This field is intended to be set to VALIGN_4 if the surface was
rendered as a depth buffer, for a multisampled (4x) render target,
or for a multisampled (8x) render target, since these surfaces
support only alignment of 4.

Back in 2012 when we added multisampling support to the i965 driver,
we forgot to update the logic for computing the vertical alignment, so
we were often using a vertical alignment of 2 for multisampled
buffers, leading to subtle rendering errors.

Note that the specs also require a vertical alignment of 4 for all
Y-tiled render target surfaces; I plan to address that in a separate
patch.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53077
Cc: mesa-sta...@lists.freedesktop.org

Reviewed-by: Kenneth Graunke kenn...@whitecape.org
Reviewed-by: Eric Anholt e...@anholt.net

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c |   11 +++
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c 
b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index d912862..d05dbeb 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -86,7 +86,7 @@ intel_horizontal_texture_alignment_unit(struct brw_context 
*brw,
 
 static unsigned int
 intel_vertical_texture_alignment_unit(struct brw_context *brw,
- gl_format format)
+  gl_format format, bool multisampled)
 {
/**
 * From the Alignment Unit Size section of various specs, namely:
@@ -110,8 +110,6 @@ intel_vertical_texture_alignment_unit(struct brw_context 
*brw,
 *
 * On SNB+, non-special cases can be overridden by setting the SURFACE_STATE
 * Surface Vertical Alignment field to VALIGN_2 or VALIGN_4.
-*
-* We currently don't support multisampling.
 */
if (_mesa_is_format_compressed(format))
   return 4;
@@ -119,6 +117,9 @@ intel_vertical_texture_alignment_unit(struct brw_context 
*brw,
if (format == MESA_FORMAT_S8)
   return brw-gen = 7 ? 8 : 4;
 
+   if (multisampled)
+  return 4;
+
GLenum base_format = _mesa_get_format_base_format(format);
 
if (brw-gen = 6 
@@ -276,8 +277,10 @@ brw_miptree_layout_texture_3d(struct brw_context *brw,
 void
 brw_miptree_layout(struct brw_context *brw, struct intel_mipmap_tree *mt)
 {
+   bool multisampled = mt-num_samples  1;
mt-align_w = intel_horizontal_texture_alignment_unit(brw, mt-format);
-   mt-align_h = intel_vertical_texture_alignment_unit(brw, mt-format);
+   mt-align_h =
+  intel_vertical_texture_alignment_unit(brw, mt-format, multisampled);
 
switch (mt-target) {
case GL_TEXTURE_CUBE_MAP:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): main: Fix MaxUniformComponents for geometry shaders.

2013-11-15 Thread Paul Berry
Module: Mesa
Branch: master
Commit: 46e9f78efcb6ccc25ea59d83624aaa5077254a85
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=46e9f78efcb6ccc25ea59d83624aaa5077254a85

Author: Paul Berry stereotype...@gmail.com
Date:   Wed Nov 13 14:24:09 2013 -0800

main: Fix MaxUniformComponents for geometry shaders.

For both vertex and fragment shaders we default MaxUniformComponents
to 4 * MAX_UNIFORMS.  It makes sense to do this for geometry shaders
too; if back-ends have different limits they can override them as
necessary.

Fixes piglit test:
spec/glsl-1.50/built-in constants/gl_MaxGeometryUniformComponents

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: Kenneth Graunke kenn...@whitecape.org
Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/mesa/main/context.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index d005d23..8cbc935 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -494,7 +494,7 @@ init_program_limits(struct gl_context *ctx, GLenum type,
   prog-MaxParameters = MAX_VERTEX_PROGRAM_PARAMS;
   prog-MaxAttribs = MAX_VERTEX_GENERIC_ATTRIBS;
   prog-MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
-  prog-MaxUniformComponents = MAX_GEOMETRY_UNIFORM_COMPONENTS;
+  prog-MaxUniformComponents = 4 * MAX_UNIFORMS;
   prog-MaxInputComponents = 16 * 4; /* old limit not to break tnl and 
swrast */
   prog-MaxOutputComponents = 16 * 4; /* old limit not to break tnl and 
swrast */
   break;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/llvm: Free libelf resources

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: a2b93da84bda2b92108cf3b9c253fec114b69dc2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2b93da84bda2b92108cf3b9c253fec114b69dc2

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:20 2013 -0600

radeon/llvm: Free libelf resources

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/radeon/radeon_llvm_emit.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c 
b/src/gallium/drivers/radeon/radeon_llvm_emit.c
index 8bf278b..d2e5642 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.c
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c
@@ -173,6 +173,9 @@ unsigned radeon_llvm_compile(LLVMModuleRef M, struct 
radeon_llvm_binary *binary,
}
}
 
+   if (elf){
+   elf_end(elf);
+   }
LLVMDisposeMemoryBuffer(out_buffer);
LLVMDisposeTargetMachine(tm);
return 0;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeonsi/compute: Free program and program. kernels on shutdown

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 35dad4a1e235b2bf7fb3ecdb82aed0214db69a35
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=35dad4a1e235b2bf7fb3ecdb82aed0214db69a35

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:22 2013 -0600

radeonsi/compute: Free program and program.kernels on shutdown

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/radeonsi/radeonsi_compute.c |   16 +++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_compute.c 
b/src/gallium/drivers/radeonsi/radeonsi_compute.c
index 49caa2c..e7bf5a4 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_compute.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_compute.c
@@ -245,7 +245,21 @@ static void radeonsi_launch_grid(
 }
 
 
-static void si_delete_compute_state(struct pipe_context *ctx, void* state){}
+static void si_delete_compute_state(struct pipe_context *ctx, void* state){
+   struct si_pipe_compute *program = (struct si_pipe_compute *)state;
+
+   if (!state) {
+   return;
+   }
+
+   if (program-kernels) {
+   FREE(program-kernels);
+   }
+
+   //And then free the program itself.
+   FREE(program);
+}
+
 static void si_set_compute_resources(struct pipe_context * ctx_,
unsigned start, unsigned count,
struct pipe_surface ** surfaces) { }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeonsi/compute: Dispose of LLVM module after compiling kernels

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 4c6ac9e61452ffc49f8e360fc879deec8e04bbb5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c6ac9e61452ffc49f8e360fc879deec8e04bbb5

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:23 2013 -0600

radeonsi/compute: Dispose of LLVM module after compiling kernels

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/radeonsi/radeonsi_compute.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_compute.c 
b/src/gallium/drivers/radeonsi/radeonsi_compute.c
index e7bf5a4..5df972f 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_compute.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_compute.c
@@ -49,6 +49,7 @@ static void *radeonsi_create_compute_state(
LLVMModuleRef mod = radeon_llvm_get_kernel_module(i, code,
header-num_bytes);
si_compile_llvm(rctx, program-kernels[i], mod);
+   LLVMDisposeModule(mod);
}
 
return program;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium/pipe_loader: un-reference udev resources when we' re done with them.

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 598f61ba28bcfd220104e18e89973768babeaac3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=598f61ba28bcfd220104e18e89973768babeaac3

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:24 2013 -0600

gallium/pipe_loader: un-reference udev resources when we're done with them.

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 .../auxiliary/pipe-loader/pipe_loader_drm.c|3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c 
b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
index 339d7bf..927fb24 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
@@ -88,6 +88,9 @@ find_drm_pci_id(struct pipe_loader_drm_device *ddev)
   ddev-base.u.pci.chip_id) != 2)
   goto fail;
 
+   udev_device_unref(device);
+   udev_unref(udev);
+
return TRUE;
 
   fail:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): clover: Support multiple devices in clCreateContextFromType( ) v2

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 17af4dd52b0530b671fb7ae64345500f62ed7ee3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=17af4dd52b0530b671fb7ae64345500f62ed7ee3

Author: Tom Stellard thomas.stell...@amd.com
Date:   Thu Apr 11 10:37:55 2013 -0400

clover: Support multiple devices in clCreateContextFromType() v2

v2:
  - Use clGetDeviceIDs to query devices.

Reviewed-by: Francisco Jerez curroje...@riseup.net

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/state_trackers/clover/api/context.cpp |   12 +---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/clover/api/context.cpp 
b/src/gallium/state_trackers/clover/api/context.cpp
index 7b020a6..a78c00b 100644
--- a/src/gallium/state_trackers/clover/api/context.cpp
+++ b/src/gallium/state_trackers/clover/api/context.cpp
@@ -61,18 +61,24 @@ clCreateContextFromType(const cl_context_properties 
*d_props,
 void *user_data, cl_int *r_errcode) try {
cl_platform_id d_platform;
cl_uint num_platforms;
-   cl_device_id d_dev;
cl_int ret;
+   std::vectorcl_device_id devs;
+   cl_uint num_devices;
 
ret = clGetPlatformIDs(1, d_platform, num_platforms);
if (ret || !num_platforms)
   throw error(CL_INVALID_PLATFORM);
 
-   ret = clGetDeviceIDs(d_platform, type, 1, d_dev, 0);
+   ret = clGetDeviceIDs(d_platform, type, 0, NULL, num_devices);
+   if (ret)
+  throw error(CL_DEVICE_NOT_FOUND);
+   devs.resize(num_devices);
+   ret = clGetDeviceIDs(d_platform, type, num_devices, devs.data(), 0);
if (ret)
   throw error(CL_DEVICE_NOT_FOUND);
 
-   return clCreateContext(d_props, 1, d_dev, pfn_notify, user_data, 
r_errcode);
+   return clCreateContext(d_props, num_devices, devs.data(), pfn_notify,
+  user_data, r_errcode);
 
 } catch (error e) {
ret_error(r_errcode, e);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/llvm: Free created llvm memory buffer

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: d41b10f811a89c76248f195a6b4ade62322b8c3c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d41b10f811a89c76248f195a6b4ade62322b8c3c

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:21 2013 -0600

radeon/llvm: Free created llvm memory buffer

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/radeon/radeon_llvm_util.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.c 
b/src/gallium/drivers/radeon/radeon_llvm_util.c
index 7192dee..f2b3e13 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_util.c
+++ b/src/gallium/drivers/radeon/radeon_llvm_util.c
@@ -42,6 +42,7 @@ LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * 
bitcode,
buf = LLVMCreateMemoryBufferWithMemoryRangeCopy((const char*)bitcode,
bitcode_len, radeon);
LLVMParseBitcodeInContext(ctx, buf, module, NULL);
+   LLVMDisposeMemoryBuffer(buf);
return module;
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/llvm: fix spelling error

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: df482fe02f6732fb6fe7ae0a509b3c66e655bd5b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=df482fe02f6732fb6fe7ae0a509b3c66e655bd5b

Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov  6 16:49:19 2013 -0600

radeon/llvm: fix spelling error

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 .../drivers/radeon/radeon_setup_tgsi_llvm.c|2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c 
b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
index 286ccdd..57026bf 100644
--- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
+++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
@@ -1379,7 +1379,7 @@ void radeon_llvm_finalize_module(struct 
radeon_llvm_context * ctx)
LLVMAddAggressiveDCEPass(gallivm-passmgr);
LLVMAddCFGSimplificationPass(gallivm-passmgr);
 
-   /* Run the passs */
+   /* Run the pass */
LLVMRunFunctionPassManager(gallivm-passmgr, ctx-main_fn);
 
LLVMDisposeBuilder(gallivm-builder);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): svga: do primitive trimming in translate_indices()

2013-11-15 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 79984b9928d665ce617a1e4551e53d415bd4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=79984b9928d665ce617a1e4551e53d415bd4

Author: Brian Paul bri...@vmware.com
Date:   Wed Nov 13 11:26:15 2013 -0700

svga: do primitive trimming in translate_indices()

The index translation code expects the number of indexes to be
consistent with the primitive type (ex: a multiple of 3 for
PIPE_PRIM_TRIANGLES).  If it's not, we can write out of bounds
in the destination buffer.

Fixes failed assertions in the pipebuffer debug code found with
Piglit primitive-restart-draw-mode test.

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: José Fonseca jfons...@vmware.com

---

 src/gallium/drivers/svga/svga_draw_elements.c |   15 ---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_draw_elements.c 
b/src/gallium/drivers/svga/svga_draw_elements.c
index fb5f1c9..f6603be 100644
--- a/src/gallium/drivers/svga/svga_draw_elements.c
+++ b/src/gallium/drivers/svga/svga_draw_elements.c
@@ -24,6 +24,7 @@
  **/
 
 #include util/u_inlines.h
+#include util/u_prim.h
 #include indices/u_indices.h
 
 #include svga_cmd.h
@@ -37,17 +38,25 @@
 
 static enum pipe_error
 translate_indices(struct svga_hwtnl *hwtnl, struct pipe_resource *src,
-  unsigned offset, unsigned nr, unsigned index_size,
+  unsigned offset, unsigned prim, unsigned nr,
+  unsigned index_size,
   u_translate_func translate, struct pipe_resource **out_buf)
 {
struct pipe_context *pipe = hwtnl-svga-pipe;
struct pipe_transfer *src_transfer = NULL;
struct pipe_transfer *dst_transfer = NULL;
-   unsigned size = index_size * nr;
+   unsigned size;
const void *src_map = NULL;
struct pipe_resource *dst = NULL;
void *dst_map = NULL;
 
+   /* Need to trim vertex count to make sure we don't write too much data
+* to the dst buffer in the translate() call.
+*/
+   u_trim_pipe_prim(prim, nr);
+
+   size = index_size * nr;
+
dst = pipe_buffer_create(pipe-screen,
 PIPE_BIND_INDEX_BUFFER, PIPE_USAGE_STATIC, size);
if (dst == NULL)
@@ -180,7 +189,7 @@ svga_hwtnl_draw_range_elements(struct svga_hwtnl *hwtnl,
   ret = translate_indices(hwtnl,
   index_buffer,
   start * index_size,
-  gen_nr, gen_size, gen_func, gen_buf);
+  gen_prim, gen_nr, gen_size, gen_func, gen_buf);
   if (ret != PIPE_OK)
  goto done;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): svga: remove unused vars in svga_hwtnl_simple_draw_range_elements()

2013-11-15 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 2bc1680665473c648e8b75a98d77be7c3f07379d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2bc1680665473c648e8b75a98d77be7c3f07379d

Author: Brian Paul bri...@vmware.com
Date:   Fri Nov 15 10:25:19 2013 -0700

svga: remove unused vars in svga_hwtnl_simple_draw_range_elements()

And simplify the code.

Reviewed-by: Jose Fonseca jfons...@vmware.com

---

 src/gallium/drivers/svga/svga_draw_elements.c |   14 ++
 1 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_draw_elements.c 
b/src/gallium/drivers/svga/svga_draw_elements.c
index f6603be..411b8d9 100644
--- a/src/gallium/drivers/svga/svga_draw_elements.c
+++ b/src/gallium/drivers/svga/svga_draw_elements.c
@@ -100,16 +100,14 @@ svga_hwtnl_simple_draw_range_elements(struct svga_hwtnl 
*hwtnl,
   unsigned prim, unsigned start,
   unsigned count)
 {
-   struct pipe_resource *upload_buffer = NULL;
SVGA3dPrimitiveRange range;
unsigned hw_prim;
unsigned hw_count;
unsigned index_offset = start * index_size;
-   enum pipe_error ret = PIPE_OK;
 
hw_prim = svga_translate_prim(prim, count, hw_count);
if (hw_count == 0)
-  goto done;
+  return PIPE_OK; /* nothing to draw */
 
/* We should never see user-space buffers in the driver.  The vbuf
 * module should have converted them into real buffers.
@@ -124,15 +122,7 @@ svga_hwtnl_simple_draw_range_elements(struct svga_hwtnl 
*hwtnl,
range.indexWidth = index_size;
range.indexBias = index_bias;
 
-   ret = svga_hwtnl_prim(hwtnl, range, min_index, max_index, index_buffer);
-   if (ret != PIPE_OK)
-  goto done;
-
-done:
-   if (upload_buffer)
-  pipe_resource_reference(upload_buffer, NULL);
-
-   return ret;
+   return svga_hwtnl_prim(hwtnl, range, min_index, max_index, index_buffer);
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: remove duplicated prototypes in varray.h

2013-11-15 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 2253fed4a05ece30e47b32a5f450f8192dba9497
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2253fed4a05ece30e47b32a5f450f8192dba9497

Author: Brian Paul bri...@vmware.com
Date:   Tue Nov 12 15:09:44 2013 -0700

mesa: remove duplicated prototypes in varray.h

---

 src/mesa/main/varray.h |6 --
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index 3b9f39a..bc820ed 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -110,12 +110,6 @@ extern void GLAPIENTRY
 _mesa_VertexPointer(GLint size, GLenum type, GLsizei stride,
 const GLvoid *ptr);
 
-extern void GLAPIENTRY
-_mesa_UnlockArraysEXT( void );
-
-extern void GLAPIENTRY
-_mesa_LockArraysEXT(GLint first, GLsizei count);
-
 
 extern void GLAPIENTRY
 _mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): indices: add comments, assertions in u_indices.c file

2013-11-15 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 491d6397fcbe8eabfdd69500b91dbc6efc4dd894
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=491d6397fcbe8eabfdd69500b91dbc6efc4dd894

Author: Brian Paul bri...@vmware.com
Date:   Wed Nov 13 11:24:41 2013 -0700

indices: add comments, assertions in u_indices.c file

Reviewed-by: José Fonseca jfons...@vmware.com
Reviewed-by: Roland Scheidegger srol...@vmware.com

---

 src/gallium/auxiliary/indices/u_indices.c |   26 ++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/indices/u_indices.c 
b/src/gallium/auxiliary/indices/u_indices.c
index 30b54b9..1b33f41 100644
--- a/src/gallium/auxiliary/indices/u_indices.c
+++ b/src/gallium/auxiliary/indices/u_indices.c
@@ -42,6 +42,27 @@ static void translate_memcpy_uint( const void *in,
 }
   
 
+/**
+ * Translate indexes when a driver can't support certain types
+ * of drawing.  Example include:
+ * - Translate 1-byte indexes into 2-byte indexes
+ * - Translate PIPE_PRIM_QUADS into PIPE_PRIM_TRIANGLES when the hardware
+ *   doesn't support the former.
+ * - Translate from first provoking vertex to last provoking vertex and
+ *   vice versa.
+ *
+ * \param hw_mask  mask of (1  PIPE_PRIM_x) flags indicating which types
+ * of primitives are supported by the hardware.
+ * \param prim  incoming PIPE_PRIM_x
+ * \param in_index_size  bytes per index value (1, 2 or 4)
+ * \param nr  number of incoming vertices
+ * \param in_pv  incoming provoking vertex convention (PV_FIRST or PV_LAST)
+ * \param out_pv  desired provoking vertex convention (PV_FIRST or PV_LAST)
+ * \param out_prim  returns new PIPE_PRIM_x we'll translate to
+ * \param out_index_size  returns bytes per new index value (2 or 4)
+ * \param out_nr  returns number of new vertices
+ * \param out_translate  returns the translation function to use by the caller
+ */
 int u_index_translator( unsigned hw_mask,
 unsigned prim,
 unsigned in_index_size,
@@ -57,6 +78,10 @@ int u_index_translator( unsigned hw_mask,
unsigned out_idx;
int ret = U_TRANSLATE_NORMAL;
 
+   assert(in_index_size == 1 ||
+  in_index_size == 2 ||
+  in_index_size == 4);
+
u_index_init();
 
in_idx = in_size_idx(in_index_size);
@@ -67,6 +92,7 @@ int u_index_translator( unsigned hw_mask,
in_index_size == *out_index_size 
in_pv == out_pv) 
{
+  /* Index translation not really needed */
   if (in_index_size == 4)
  *out_translate = translate_memcpy_uint;
   else

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): svga: mark dest image as defined in svga_surface_copy()

2013-11-15 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 3969330b47c5b7f7843f356db0a10962553339a6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3969330b47c5b7f7843f356db0a10962553339a6

Author: Brian Paul bri...@vmware.com
Date:   Thu Nov 14 13:33:52 2013 -0700

svga: mark dest image as defined in svga_surface_copy()

After we blit/copy to a dest texture image we need to mark it as
being defined.  This fixes broken mipmap generation for quite a
few texture formats.  Mipgen involves making texture views and
svga_texture_view_surface() skips texture images that are undefined.

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: José Fonseca jfons...@vmware.com
Reviewed-by: Roland Scheidegger srol...@vmware.com

---

 src/gallium/drivers/svga/svga_pipe_blit.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c 
b/src/gallium/drivers/svga/svga_pipe_blit.c
index ff1017c..dbb9f4b 100644
--- a/src/gallium/drivers/svga/svga_pipe_blit.c
+++ b/src/gallium/drivers/svga/svga_pipe_blit.c
@@ -148,6 +148,8 @@ static void svga_surface_copy(struct pipe_context *pipe,
 
 #endif
 
+   /* Mark the destination image as being defined */
+   svga_define_texture_level(dtex, dst_face, dst_level);
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/llvm: Free elf_buffer after use

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 2be85e2492b6ad7e04884525904a7ec22cde0ddc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2be85e2492b6ad7e04884525904a7ec22cde0ddc

Author: Aaron Watry awa...@gmail.com
Date:   Thu Nov 14 12:17:44 2013 -0600

radeon/llvm: Free elf_buffer after use

Prevents a memory leak.

v2: Remove null check

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/radeon/radeon_llvm_emit.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c 
b/src/gallium/drivers/radeon/radeon_llvm_emit.c
index d2e5642..92e7dbc 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.c
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c
@@ -176,6 +176,7 @@ unsigned radeon_llvm_compile(LLVMModuleRef M, struct 
radeon_llvm_binary *binary,
if (elf){
elf_end(elf);
}
+   FREE(elf_buffer);
LLVMDisposeMemoryBuffer(out_buffer);
LLVMDisposeTargetMachine(tm);
return 0;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r600/llvm: Free binary.code/binary. config in r600_llvm_compile

2013-11-15 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 01f3622c740173d4001eb421b74d4d60a0c7fd12
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=01f3622c740173d4001eb421b74d4d60a0c7fd12

Author: Aaron Watry awa...@gmail.com
Date:   Thu Nov 14 12:17:43 2013 -0600

r600/llvm: Free binary.code/binary.config in r600_llvm_compile

radeon_llvm_compile allocates memory for binary.code, binary.config,
or neither depending on what's being done.

We need to make sure to free that memory after it's no longer needed.

v2: Don't bother checking for null before FREE()

CC: 10.0 mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/r600/r600_llvm.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_llvm.c 
b/src/gallium/drivers/r600/r600_llvm.c
index f6784eb..6860faa 100644
--- a/src/gallium/drivers/r600/r600_llvm.c
+++ b/src/gallium/drivers/r600/r600_llvm.c
@@ -864,6 +864,9 @@ unsigned r600_llvm_compile(
}
}
 
+   FREE(binary.code);
+   FREE(binary.config);
+
return r;
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i915: Actually enable __DRI2rendererQueryExtensionRec

2013-11-15 Thread Ian Romanick
Module: Mesa
Branch: master
Commit: 96a3527a63eaa3c031d2b091dcf6ec8a608f3fde
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96a3527a63eaa3c031d2b091dcf6ec8a608f3fde

Author: Ian Romanick ian.d.roman...@intel.com
Date:   Mon Nov 11 11:12:08 2013 -0800

i915: Actually enable __DRI2rendererQueryExtensionRec

More rebase fail.  This code was written long before i915 and i965 were
split, so most of the code in i9[16]5/intel_screen.c only needed to
exist in one place.  It looks like I fixed n-1 of those places after
rebasing on the split.

I only found this from the defined-but-not-used warning for
intelRendererQueryExtension.  I noticed this while fixing the other,
related warnings.

(Note: During review, we decided to *not* pick this back to 10.0.)

Signed-off-by: Ian Romanick ian.d.roman...@intel.com
Cc: Daniel Vetter dan...@ffwll.ch
Reviewed-by: Kenneth Graunke kenn...@whitecape.org
Acked-by: Paul Berry stereotype...@gmail.com

---

 src/mesa/drivers/dri/i915/intel_screen.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/intel_screen.c 
b/src/mesa/drivers/dri/i915/intel_screen.c
index 87f53e7..7f1fc6b 100644
--- a/src/mesa/drivers/dri/i915/intel_screen.c
+++ b/src/mesa/drivers/dri/i915/intel_screen.c
@@ -790,6 +790,7 @@ static const __DRIextension *intelScreenExtensions[] = {
 intelTexBufferExtension.base,
 intelFlushExtension.base,
 intelImageExtension.base,
+intelRendererQueryExtension.base,
 dri2ConfigQueryExtension.base,
 NULL
 };

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Move cache_used_by_gpu flag setting to brw_finish_batch.

2013-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 720d935fff1c7f49ce35369e00266cf2f333cdba
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=720d935fff1c7f49ce35369e00266cf2f333cdba

Author: Kenneth Graunke kenn...@whitecape.org
Date:   Tue Oct 15 19:21:34 2013 -0700

i965: Move cache_used_by_gpu flag setting to brw_finish_batch.

It really makes more sense here.

Signed-off-by: Kenneth Graunke kenn...@whitecape.org
Reviewed-by: Eric Anholt e...@anholt.net

---

 src/mesa/drivers/dri/i965/intel_batchbuffer.c |   12 ++--
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c 
b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
index 6d1ae79..9cdbe9e 100644
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
@@ -198,12 +198,6 @@ brw_new_batch(struct brw_context *brw)
 
brw-ib.type = -1;
 
-   /* Mark that the current program cache BO has been used by the GPU.
-* It will be reallocated if we need to put new programs in for the
-* next batch.
-*/
-   brw-cache.bo_used_by_gpu = true;
-
/* We need to periodically reap the shader time results, because rollover
 * happens every few seconds.  We also want to see results every once in a
 * while, because many programs won't cleanly destroy our context, so the
@@ -232,6 +226,12 @@ brw_finish_batch(struct brw_context *brw)
   drm_intel_bo_unreference(brw-curbe.curbe_bo);
   brw-curbe.curbe_bo = NULL;
}
+
+   /* Mark that the current program cache BO has been used by the GPU.
+* It will be reallocated if we need to put new programs in for the
+* next batch.
+*/
+   brw-cache.bo_used_by_gpu = true;
 }
 
 /* TODO: Push this whole function into bufmgr.

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Rework brw_new_batch to actually start a new batch.

2013-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 4ec982ad012a563b7acf9ee8c7fd61140f24ea9d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ec982ad012a563b7acf9ee8c7fd61140f24ea9d

Author: Kenneth Graunke kenn...@whitecape.org
Date:   Tue Oct 15 19:23:53 2013 -0700

i965: Rework brw_new_batch to actually start a new batch.

Previously, brw_new_batch was called just after execbuf, but before
intel_batchbuffer_reset.  Essentially, it prepared for the creation of a
new batch, that wasn't yet available, and which it didn't create.  This
was a bit awkward.

This patch makes brw_new_batch call intel_batchbuffer_reset as the very
first operation.  This means that brw_new_batch actually creates a new
batchbuffer, and thus has it available.  It brings the creation of the
new batchbuffer and BRW_NEW_BATCH flagging together into one place.

Signed-off-by: Kenneth Graunke kenn...@whitecape.org
Reviewed-by: Eric Anholt e...@anholt.net

---

 src/mesa/drivers/dri/i965/intel_batchbuffer.c |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c 
b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
index 9cdbe9e..fb0b45b 100644
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
@@ -178,6 +178,9 @@ do_batch_dump(struct brw_context *brw)
 static void
 brw_new_batch(struct brw_context *brw)
 {
+   /* Create a new batchbuffer and reset the associated state: */
+   intel_batchbuffer_reset(brw);
+
/* If the kernel supports hardware contexts, then most hardware state is
 * preserved between batches; we only need to re-emit state that is required
 * to be in every batch.  Otherwise we need to re-emit all the state that
@@ -286,7 +289,6 @@ do_flush_locked(struct brw_context *brw)
   fprintf(stderr, intel_do_flush_locked failed: %s\n, strerror(-ret));
   exit(1);
}
-   brw_new_batch(brw);
 
return ret;
 }
@@ -339,9 +341,8 @@ _intel_batchbuffer_flush(struct brw_context *brw,
   drm_intel_bo_wait_rendering(brw-batch.bo);
}
 
-   /* Reset the buffer:
-*/
-   intel_batchbuffer_reset(brw);
+   /* Start a new batch buffer. */
+   brw_new_batch(brw);
 
return ret;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): clover: Remove dead file from Makefile.sources.

2013-11-15 Thread Matt Turner
Module: Mesa
Branch: master
Commit: fc51e7ac58d7aeab0b455e9d39b6547c2b954494
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc51e7ac58d7aeab0b455e9d39b6547c2b954494

Author: Matt Turner matts...@gmail.com
Date:   Mon Nov 11 15:54:16 2013 -0800

clover: Remove dead file from Makefile.sources.

Reviewed-by: Francisco Jerez curroje...@riseup.net
Reviewed-by: Tom Stellard thomas.stell...@amd.com
Reviewed-by: Emil Velikov emil.l.veli...@gmail.com

---

 src/gallium/state_trackers/clover/Makefile.sources |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/clover/Makefile.sources 
b/src/gallium/state_trackers/clover/Makefile.sources
index 520f52f..42b3345 100644
--- a/src/gallium/state_trackers/clover/Makefile.sources
+++ b/src/gallium/state_trackers/clover/Makefile.sources
@@ -13,7 +13,6 @@ CPP_SOURCES := \
core/object.hpp \
core/error.hpp \
core/compiler.hpp \
-   core/geometry.hpp \
core/device.hpp \
core/device.cpp \
core/context.hpp \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl: Apply the transformation 1/rsq(x) == sqrt(x) in opt_algebraic.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: aa6d7bc6d601c8803b136f427b8d86aa1043450c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa6d7bc6d601c8803b136f427b8d86aa1043450c

Author: Eric Anholt e...@anholt.net
Date:   Thu Nov  7 12:15:13 2013 -0800

glsl: Apply the transformation 1/rsq(x) == sqrt(x) in opt_algebraic.

The comment was stale, because the lowering in question wasn't happening
in lower_instructions.cpp.  Presumably if the lowering ever moves there,
we can plumb the lowering mask through to opt_algebraic.

total instructions in shared programs: 1618696 - 1616810 (-0.12%)
instructions in affected programs: 243018 - 241132 (-0.78%)
GAINED:0
LOST:  0

Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/opt_algebraic.cpp |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
index 448f27e..05a5899 100644
--- a/src/glsl/opt_algebraic.cpp
+++ b/src/glsl/opt_algebraic.cpp
@@ -420,10 +420,11 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   if (op_expr[0]  op_expr[0]-operation == ir_unop_rcp)
 return op_expr[0]-operands[0];
 
-  /* FINISHME: We should do rcp(rsq(x)) - sqrt(x) for some
-   * backends, except that some backends will have done sqrt -
-   * rcp(rsq(x)) and we don't want to undo it for them.
+  /* While ir_to_mesa.cpp will lower sqrt(x) to rcp(rsq(x)), it does so at
+   * its IR level, so we can always apply this transformation.
*/
+  if (op_expr[0]  op_expr[0]-operation == ir_unop_rsq)
+ return sqrt(op_expr[0]-operands[0]);
 
   /* As far as we know, all backends are OK with rsq. */
   if (op_expr[0]  op_expr[0]-operation == ir_unop_sqrt) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl: Apply the transformation (a a) - a in opt_algebraic.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 58a98d32e451762934ca8c38135357f36e29654f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=58a98d32e451762934ca8c38135357f36e29654f

Author: Eric Anholt e...@anholt.net
Date:   Thu Oct 31 09:32:42 2013 -0700

glsl: Apply the transformation (a  a) - a in opt_algebraic.

Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/opt_algebraic.cpp |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
index 3da27e5..ea3c386 100644
--- a/src/glsl/opt_algebraic.cpp
+++ b/src/glsl/opt_algebraic.cpp
@@ -357,7 +357,6 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   break;
 
case ir_binop_logic_and:
-  /* FINISHME: Also simplify (a  a) to (a). */
   if (is_vec_one(op_const[0])) {
 return ir-operands[1];
   } else if (is_vec_one(op_const[1])) {
@@ -371,6 +370,9 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   */
  return logic_not(logic_or(op_expr[0]-operands[0],
op_expr[1]-operands[0]));
+  } else if (ir-operands[0]-equals(ir-operands[1])) {
+ /* (a  a) == a */
+ return ir-operands[0];
   }
   break;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl: Apply the transformation (a ^^ a) - false in opt_algebraic.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 477f8cd08bb8467d28fdfd6c25fe358957e3da58
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=477f8cd08bb8467d28fdfd6c25fe358957e3da58

Author: Eric Anholt e...@anholt.net
Date:   Thu Nov  7 12:10:25 2013 -0800

glsl: Apply the transformation (a ^^ a) - false in opt_algebraic.

Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/opt_algebraic.cpp |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
index ea3c386..448f27e 100644
--- a/src/glsl/opt_algebraic.cpp
+++ b/src/glsl/opt_algebraic.cpp
@@ -377,7 +377,6 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   break;
 
case ir_binop_logic_xor:
-  /* FINISHME: Also simplify (a ^^ a) to (false). */
   if (is_vec_zero(op_const[0])) {
 return ir-operands[1];
   } else if (is_vec_zero(op_const[1])) {
@@ -386,6 +385,9 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
 return logic_not(ir-operands[1]);
   } else if (is_vec_one(op_const[1])) {
 return logic_not(ir-operands[0]);
+  } else if (ir-operands[0]-equals(ir-operands[1])) {
+ /* (a ^^ a) == false */
+return ir_constant::zero(mem_ctx, ir-type);
   }
   break;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl: Move the CSE equality functions to the ir class.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 8957c6b887ff09f44e7b491e7a0551e94a265b8d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8957c6b887ff09f44e7b491e7a0551e94a265b8d

Author: Eric Anholt e...@anholt.net
Date:   Wed Oct 30 23:56:18 2013 -0700

glsl: Move the CSE equality functions to the ir class.

I want to reuse them in opt_algebraic.

v2: Merge in Chris Forbes's break fix.

Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/Makefile.sources |1 +
 src/glsl/ir.h |   22 +
 src/glsl/ir_equals.cpp|  198 +
 src/glsl/opt_cse.cpp  |  180 +
 4 files changed, 222 insertions(+), 179 deletions(-)

diff --git a/src/glsl/Makefile.sources b/src/glsl/Makefile.sources
index 744b0ad..2e81ded 100644
--- a/src/glsl/Makefile.sources
+++ b/src/glsl/Makefile.sources
@@ -33,6 +33,7 @@ LIBGLSL_FILES = \
$(GLSL_SRCDIR)/ir_clone.cpp \
$(GLSL_SRCDIR)/ir_constant_expression.cpp \
$(GLSL_SRCDIR)/ir.cpp \
+   $(GLSL_SRCDIR)/ir_equals.cpp \
$(GLSL_SRCDIR)/ir_expression_flattening.cpp \
$(GLSL_SRCDIR)/ir_function_can_inline.cpp \
$(GLSL_SRCDIR)/ir_function_detect_recursion.cpp \
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 2f06fb9..7859702 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -139,6 +139,16 @@ public:
virtual class ir_jump *  as_jump() { return NULL; }
/*@}*/
 
+   /**
+* IR equality method: Return true if the referenced instruction would
+* return the same value as this one.
+*
+* This intended to be used for CSE and algebraic optimizations, on rvalues
+* in particular.  No support for other instruction types (assignments,
+* jumps, calls, etc.) is planned.
+*/
+   virtual bool equals(ir_instruction *ir);
+
 protected:
ir_instruction()
{
@@ -1405,6 +1415,8 @@ public:
   return this;
}
 
+   virtual bool equals(ir_instruction *ir);
+
virtual ir_expression *clone(void *mem_ctx, struct hash_table *ht) const;
 
/**
@@ -1739,6 +1751,8 @@ public:
 
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
 
+   virtual bool equals(ir_instruction *ir);
+
/**
 * Return a string representing the ir_texture_opcode.
 */
@@ -1843,6 +1857,8 @@ public:
 
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
 
+   virtual bool equals(ir_instruction *ir);
+
bool is_lvalue() const
{
   return val-is_lvalue()  !mask.has_duplicates;
@@ -1907,6 +1923,8 @@ public:
   return this;
}
 
+   virtual bool equals(ir_instruction *ir);
+
/**
 * Get the variable that is ultimately referenced by an r-value
 */
@@ -1965,6 +1983,8 @@ public:
   return this;
}
 
+   virtual bool equals(ir_instruction *ir);
+
/**
 * Get the variable that is ultimately referenced by an r-value
 */
@@ -2099,6 +2119,8 @@ public:
 
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
 
+   virtual bool equals(ir_instruction *ir);
+
/**
 * Get a particular component of a constant as a specific type
 *
diff --git a/src/glsl/ir_equals.cpp b/src/glsl/ir_equals.cpp
new file mode 100644
index 000..7cfe1e6
--- /dev/null
+++ b/src/glsl/ir_equals.cpp
@@ -0,0 +1,198 @@
+/*
+ * Copyright © 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the Software),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include ir.h
+
+/**
+ * Helper for checking equality when one instruction might be NULL, since you
+ * can't access a's vtable in that case.
+ */
+static bool
+possibly_null_equals(ir_instruction *a, ir_instruction *b)
+{
+   if (!a || !b)
+  return !a  !b;
+
+   return a-equals(b);
+}
+
+/**
+ * The base equality function: Return not equal for anything we don't know
+ * about.
+ */
+bool
+ir_instruction::equals(ir_instruction *ir)
+{
+   return false;
+}
+
+bool

Mesa (master): glsl: Apply the transformation (a || a) - a in opt_algebraic.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: ee2704826264eba22d095c3e1e03a8532b7bd1e6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee2704826264eba22d095c3e1e03a8532b7bd1e6

Author: Eric Anholt e...@anholt.net
Date:   Thu Oct 31 00:10:32 2013 -0700

glsl: Apply the transformation (a || a) - a in opt_algebraic.

total instructions in shared programs: 1732385 - 1732373 (-0.00%)
instructions in affected programs: 416 - 404 (-2.88%)
GAINED:0
LOST:  0

(That's 4 already-short fragment shaders in dota2)

Reviewed-by: Jordan Justen jordan.l.jus...@intel.com

---

 src/glsl/opt_algebraic.cpp |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
index a07e153..3da27e5 100644
--- a/src/glsl/opt_algebraic.cpp
+++ b/src/glsl/opt_algebraic.cpp
@@ -388,7 +388,6 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   break;
 
case ir_binop_logic_or:
-  /* FINISHME: Also simplify (a || a) to (a). */
   if (is_vec_zero(op_const[0])) {
 return ir-operands[1];
   } else if (is_vec_zero(op_const[1])) {
@@ -407,6 +406,9 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
   */
  return logic_not(logic_and(op_expr[0]-operands[0],
 op_expr[1]-operands[0]));
+  } else if (ir-operands[0]-equals(ir-operands[1])) {
+ /* (a || a) == a */
+ return ir-operands[0];
   }
   break;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Dynamically allocate the storage for program local parameters.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: e5885c119de1e508099cce1c9f8ff00fab88
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5885c119de1e508099cce1c9f8ff00fab88

Author: Eric Anholt e...@anholt.net
Date:   Fri Sep 20 10:13:32 2013 -0700

mesa: Dynamically allocate the storage for program local parameters.

The array was 64kb per struct gl_program, plus we statically stored a copy
of one on disk for _mesa_DummyProgram.  Given that most struct gl_programs
we generate are for GLSL shaders that don't have local parameters, this
was a waste.

Since you can store and fetch parameters beyond what the program actually
uses, we do have to do a late allocation if necessary at
GetProgramLocalParameter time.

Reduces peak memory usage in the dota2 trace I made by 76MB (4.5%)

Reviewed-by: Brian Paul bri...@vmware.com
Reviewed-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/main/arbprogram.c   |6 ++
 src/mesa/main/mtypes.h   |   11 +--
 src/mesa/program/program.c   |   12 +++-
 src/mesa/program/program_parse.y |7 +++
 4 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c
index 51a2993..8bd3f0b 100644
--- a/src/mesa/main/arbprogram.c
+++ b/src/mesa/main/arbprogram.c
@@ -265,6 +265,12 @@ get_local_param_pointer(struct gl_context *ctx, const char 
*func,
   return GL_FALSE;
}
 
+   if (!prog-LocalParams) {
+  prog-LocalParams = calloc(maxParams, sizeof(float[4]));
+  if (!prog-LocalParams)
+ return GL_FALSE;
+   }
+
*param = prog-LocalParams[index];
return GL_TRUE;
 }
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 0f470da..67c4996 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2035,8 +2035,15 @@ struct gl_program
 
/** Named parameters, constants, etc. from program text */
struct gl_program_parameter_list *Parameters;
-   /** Numbered local parameters */
-   GLfloat LocalParams[MAX_PROGRAM_LOCAL_PARAMS][4];
+
+   /**
+* Local parameters used by the program.
+*
+* It's dynamically allocated because it is rarely used (just
+* assembly-style programs), and MAX_PROGRAM_LOCAL_PARAMS entries once it's
+* allocated.
+*/
+   GLfloat (*LocalParams)[4];
 
/** Map from sampler unit to texture unit (set by glUniform1i()) */
GLubyte SamplerUnits[MAX_SAMPLERS];
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index b7b5140..01f8c6f 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -349,6 +349,7 @@ _mesa_delete_program(struct gl_context *ctx, struct 
gl_program *prog)
   return;
 
free(prog-String);
+   free(prog-LocalParams);
 
if (prog-Instructions) {
   _mesa_free_instructions(prog-Instructions, prog-NumInstructions);
@@ -477,7 +478,16 @@ _mesa_clone_program(struct gl_context *ctx, const struct 
gl_program *prog)
 
if (prog-Parameters)
   clone-Parameters = _mesa_clone_parameter_list(prog-Parameters);
-   memcpy(clone-LocalParams, prog-LocalParams, sizeof(clone-LocalParams));
+   if (prog-LocalParams) {
+  clone-LocalParams = malloc(MAX_PROGRAM_LOCAL_PARAMS *
+  sizeof(float[4]));
+  if (!clone-LocalParams) {
+ _mesa_reference_program(ctx, clone, NULL);
+ return NULL;
+  }
+  memcpy(clone-LocalParams, prog-LocalParams,
+ MAX_PROGRAM_LOCAL_PARAMS * sizeof(float[4]));
+   }
clone-IndirectRegisterFiles = prog-IndirectRegisterFiles;
clone-NumInstructions = prog-NumInstructions;
clone-NumTemporaries = prog-NumTemporaries;
diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index a76db4e..03c0a3d 100644
--- a/src/mesa/program/program_parse.y
+++ b/src/mesa/program/program_parse.y
@@ -25,6 +25,7 @@
 #include stdlib.h
 #include string.h
 
+#include main/macros.h
 #include main/mtypes.h
 #include main/imports.h
 #include program/program.h
@@ -2559,6 +2560,12 @@ initialize_symbol_from_param(struct gl_program *prog,
param_var-type = at_param;
param_var-param_binding_type = PROGRAM_STATE_VAR;
 
+   /* Dynamically allocate LocalParams, since it's a large array to have
+* statically in every gl_program otherwise.
+*/
+   if (state_tokens[1] == STATE_LOCAL  !prog-LocalParams)
+  prog-LocalParams = calloc(MAX_PROGRAM_LOCAL_PARAMS, sizeof(float[4]));
+
/* If we are adding a STATE_ENV or STATE_LOCAL that has multiple elements,
 * we need to unroll it and call add_state_reference() for each row
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Update a comment about valid values of a field.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: fddc17ab365370f9afb6b44fb3e2bbf68d450968
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fddc17ab365370f9afb6b44fb3e2bbf68d450968

Author: Eric Anholt e...@anholt.net
Date:   Wed Nov 13 13:36:30 2013 -0800

mesa: Update a comment about valid values of a field.

Notably, ENV and LOCAL aren't used any more (replaced by STATE_VAR), but
apparently CONSTANT is.

Reviewed-by: Brian Paul bri...@vmware.com
Reviewed-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/program/program_parser.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/program/program_parser.h 
b/src/mesa/program/program_parser.h
index ca36bb6..04c64f4 100644
--- a/src/mesa/program/program_parser.h
+++ b/src/mesa/program/program_parser.h
@@ -44,7 +44,7 @@ struct asm_symbol {
unsigned output_binding;   /** Output / result register number. */
 
/**
-* One of PROGRAM_STATE_VAR, PROGRAM_LOCAL_PARAM, or PROGRAM_ENV_PARAM.
+* One of PROGRAM_STATE_VAR or PROGRAM_CONSTANT.
 */
unsigned param_binding_type;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Remove PROGRAM_ENV_PARAM enum.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: bb1f0969756fbb827c4b2520c632daa15342b064
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb1f0969756fbb827c4b2520c632daa15342b064

Author: Eric Anholt e...@anholt.net
Date:   Wed Nov 13 13:41:28 2013 -0800

mesa: Remove PROGRAM_ENV_PARAM enum.

This has been replaced with referring to env parameters using
PROGRAM_STATE_VAR and _mesa_load_state_parameters.

Reviewed-by: Brian Paul bri...@vmware.com
Reviewed-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/drivers/dri/i915/i915_fragprog.c  |8 
 src/mesa/drivers/dri/r200/r200_vertprog.c  |1 -
 src/mesa/main/mtypes.h |8 +++-
 src/mesa/program/prog_execute.c|5 -
 src/mesa/program/prog_print.c  |5 -
 src/mesa/program/program.c |3 ---
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp |7 +--
 src/mesa/state_tracker/st_mesa_to_tgsi.c   |5 +
 8 files changed, 5 insertions(+), 37 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c 
b/src/mesa/drivers/dri/i915/i915_fragprog.c
index fcdca75..dff4b9f 100644
--- a/src/mesa/drivers/dri/i915/i915_fragprog.c
+++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
@@ -160,14 +160,6 @@ src_vector(struct i915_fragment_program *p,
   /* Various paramters and env values.  All emitted to
* hardware as program constants.
*/
-
-   case PROGRAM_ENV_PARAM:
-  src =
- i915_emit_param4fv(p,
-p-ctx-FragmentProgram.Parameters[source-
-   Index]);
-  break;
-
case PROGRAM_CONSTANT:
case PROGRAM_STATE_VAR:
case PROGRAM_UNIFORM:
diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c 
b/src/mesa/drivers/dri/r200/r200_vertprog.c
index 5f15a57..2397473 100644
--- a/src/mesa/drivers/dri/r200/r200_vertprog.c
+++ b/src/mesa/drivers/dri/r200/r200_vertprog.c
@@ -210,7 +210,6 @@ static unsigned long t_src_class(gl_register_file file)
case PROGRAM_INPUT:
   return VSF_IN_CLASS_ATTR;
 
-   case PROGRAM_ENV_PARAM:
case PROGRAM_CONSTANT:
case PROGRAM_STATE_VAR:
   return VSF_IN_CLASS_PARAM;
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 82c915f..0f470da 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1930,10 +1930,9 @@ struct gl_perf_monitor_state
  * NOTE: first four tokens must fit into 2 bits (see t_vb_arbprogram.c)
  * All values should fit in a 4-bit field.
  *
- * NOTE: PROGRAM_ENV_PARAM, PROGRAM_STATE_VAR,
- * PROGRAM_CONSTANT, and PROGRAM_UNIFORM can all be considered to
- * be uniform variables since they can only be set outside glBegin/End.
- * They're also all stored in the same Parameters array.
+ * NOTE: PROGRAM_STATE_VAR, PROGRAM_CONSTANT, and PROGRAM_UNIFORM can all be
+ * considered to be uniform variables since they can only be set outside
+ * glBegin/End.  They're also all stored in the same Parameters array.
  */
 typedef enum
 {
@@ -1941,7 +1940,6 @@ typedef enum
PROGRAM_ARRAY,   /** Arrays  Matrixes */
PROGRAM_INPUT,   /** machine-Inputs[] */
PROGRAM_OUTPUT,  /** machine-Outputs[] */
-   PROGRAM_ENV_PARAM,   /** gl_program-Parameters[] */
PROGRAM_STATE_VAR,   /** gl_program-Parameters[] */
PROGRAM_CONSTANT,/** gl_program-Parameters[] */
PROGRAM_UNIFORM, /** gl_program-Parameters[] */
diff --git a/src/mesa/program/prog_execute.c b/src/mesa/program/prog_execute.c
index 4a64147..115525e 100644
--- a/src/mesa/program/prog_execute.c
+++ b/src/mesa/program/prog_execute.c
@@ -118,11 +118,6 @@ get_src_register_pointer(const struct prog_src_register 
*source,
  return ZeroVec;
   return machine-Outputs[reg];
 
-   case PROGRAM_ENV_PARAM:
-  if (reg = MAX_PROGRAM_ENV_PARAMS)
- return ZeroVec;
-  return machine-EnvParams[reg];
-
case PROGRAM_STATE_VAR:
   /* Fallthrough */
case PROGRAM_CONSTANT:
diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c
index e503cb6..fa120cc 100644
--- a/src/mesa/program/prog_print.c
+++ b/src/mesa/program/prog_print.c
@@ -50,8 +50,6 @@ _mesa_register_file_name(gl_register_file f)
switch (f) {
case PROGRAM_TEMPORARY:
   return TEMP;
-   case PROGRAM_ENV_PARAM:
-  return ENV;
case PROGRAM_STATE_VAR:
   return STATE;
case PROGRAM_INPUT:
@@ -380,9 +378,6 @@ reg_string(gl_register_file f, GLint index, 
gl_prog_print_mode mode,
   case PROGRAM_TEMPORARY:
  sprintf(str, temp%d, index);
  break;
-  case PROGRAM_ENV_PARAM:
- sprintf(str, program.env[%s%d], addr, index);
- break;
   case PROGRAM_CONSTANT: /* extension */
  sprintf(str, constant[%s%d], addr, index);
  break;
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index e8bb7d7..b7b5140 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -909,9 +909,6 @@ 

Mesa (master): mesa: Remove PROGRAM_LOCAL_PARAM enum.

2013-11-15 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 33b0455211019988fe418cca5dfac62c7902c861
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=33b0455211019988fe418cca5dfac62c7902c861

Author: Eric Anholt e...@anholt.net
Date:   Wed Nov 13 13:38:37 2013 -0800

mesa: Remove PROGRAM_LOCAL_PARAM enum.

This has been replaced with referring to local parameters using
PROGRAM_STATE_VAR and _mesa_load_state_parameters.

Reviewed-by: Brian Paul bri...@vmware.com
Reviewed-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/drivers/dri/i915/i915_fragprog.c  |3 ---
 src/mesa/drivers/dri/r200/r200_vertprog.c  |1 -
 src/mesa/main/mtypes.h |1 -
 src/mesa/program/prog_execute.c|5 -
 src/mesa/program/prog_print.c  |5 -
 src/mesa/program/program.c |3 ---
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp |7 +--
 src/mesa/state_tracker/st_mesa_to_tgsi.c   |5 +
 8 files changed, 2 insertions(+), 28 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c 
b/src/mesa/drivers/dri/i915/i915_fragprog.c
index 67eff76..fcdca75 100644
--- a/src/mesa/drivers/dri/i915/i915_fragprog.c
+++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
@@ -160,9 +160,6 @@ src_vector(struct i915_fragment_program *p,
   /* Various paramters and env values.  All emitted to
* hardware as program constants.
*/
-   case PROGRAM_LOCAL_PARAM:
-  src = i915_emit_param4fv(p, program-Base.LocalParams[source-Index]);
-  break;
 
case PROGRAM_ENV_PARAM:
   src =
diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c 
b/src/mesa/drivers/dri/r200/r200_vertprog.c
index 461b7cb..5f15a57 100644
--- a/src/mesa/drivers/dri/r200/r200_vertprog.c
+++ b/src/mesa/drivers/dri/r200/r200_vertprog.c
@@ -210,7 +210,6 @@ static unsigned long t_src_class(gl_register_file file)
case PROGRAM_INPUT:
   return VSF_IN_CLASS_ATTR;
 
-   case PROGRAM_LOCAL_PARAM:
case PROGRAM_ENV_PARAM:
case PROGRAM_CONSTANT:
case PROGRAM_STATE_VAR:
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 41ffdb7..82c915f 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1941,7 +1941,6 @@ typedef enum
PROGRAM_ARRAY,   /** Arrays  Matrixes */
PROGRAM_INPUT,   /** machine-Inputs[] */
PROGRAM_OUTPUT,  /** machine-Outputs[] */
-   PROGRAM_LOCAL_PARAM, /** gl_program-LocalParams[] */
PROGRAM_ENV_PARAM,   /** gl_program-Parameters[] */
PROGRAM_STATE_VAR,   /** gl_program-Parameters[] */
PROGRAM_CONSTANT,/** gl_program-Parameters[] */
diff --git a/src/mesa/program/prog_execute.c b/src/mesa/program/prog_execute.c
index 560332a..4a64147 100644
--- a/src/mesa/program/prog_execute.c
+++ b/src/mesa/program/prog_execute.c
@@ -118,11 +118,6 @@ get_src_register_pointer(const struct prog_src_register 
*source,
  return ZeroVec;
   return machine-Outputs[reg];
 
-   case PROGRAM_LOCAL_PARAM:
-  if (reg = MAX_PROGRAM_LOCAL_PARAMS)
- return ZeroVec;
-  return machine-CurProgram-LocalParams[reg];
-
case PROGRAM_ENV_PARAM:
   if (reg = MAX_PROGRAM_ENV_PARAMS)
  return ZeroVec;
diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c
index fa9063f..e503cb6 100644
--- a/src/mesa/program/prog_print.c
+++ b/src/mesa/program/prog_print.c
@@ -50,8 +50,6 @@ _mesa_register_file_name(gl_register_file f)
switch (f) {
case PROGRAM_TEMPORARY:
   return TEMP;
-   case PROGRAM_LOCAL_PARAM:
-  return LOCAL;
case PROGRAM_ENV_PARAM:
   return ENV;
case PROGRAM_STATE_VAR:
@@ -385,9 +383,6 @@ reg_string(gl_register_file f, GLint index, 
gl_prog_print_mode mode,
   case PROGRAM_ENV_PARAM:
  sprintf(str, program.env[%s%d], addr, index);
  break;
-  case PROGRAM_LOCAL_PARAM:
- sprintf(str, program.local[%s%d], addr, index);
- break;
   case PROGRAM_CONSTANT: /* extension */
  sprintf(str, constant[%s%d], addr, index);
  break;
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index a102ec1..e8bb7d7 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -912,9 +912,6 @@ _mesa_valid_register_index(const struct gl_context *ctx,
case PROGRAM_ENV_PARAM:
   return index = 0  index  (GLint) c-MaxEnvParams;
 
-   case PROGRAM_LOCAL_PARAM:
-  return index = 0  index  (GLint) c-MaxLocalParams;
-
case PROGRAM_UNIFORM:
case PROGRAM_STATE_VAR:
   /* aka constant buffer */
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 0eaf746..78baf89 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -70,8 +70,7 @@ extern C {
 }
 
 #define PROGRAM_IMMEDIATE PROGRAM_FILE_MAX
-#define PROGRAM_ANY_CONST ((1  PROGRAM_LOCAL_PARAM) |  \
-   (1  PROGRAM_ENV_PARAM) |\
+#define PROGRAM_ANY_CONST ((1  

Mesa (10.0): 51 new commits

2013-11-15 Thread Ian Romanick
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3fd32619d7143ed7db21fa402d38e681520f82c2
Author: Aaron Watry awa...@gmail.com
Date:   Thu Nov 14 12:17:44 2013 -0600

radeon/llvm: Free elf_buffer after use

Prevents a memory leak.

v2: Remove null check

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit 2be85e2492b6ad7e04884525904a7ec22cde0ddc)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a87dc278e5b521ed6d4e30afa24bcc54df72d2e
Author: Aaron Watry awa...@gmail.com
Date:   Thu Nov 14 12:17:43 2013 -0600

r600/llvm: Free binary.code/binary.config in r600_llvm_compile

radeon_llvm_compile allocates memory for binary.code, binary.config,
or neither depending on what's being done.

We need to make sure to free that memory after it's no longer needed.

v2: Don't bother checking for null before FREE()

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit 01f3622c740173d4001eb421b74d4d60a0c7fd12)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f843604b6a71a9809db8839d36750fbbdec25bc1
Author: Aaron Watry awa...@gmail.com
Date:   Thu Nov 14 12:17:42 2013 -0600

r600/llvm: initialize radeon_llvm_binary

use memset to initialize to 0's... otherwise code_size and config_size
could be uninitialized when read later in this method.

It's also hard to do NULL checks on uninitialized pointers.

Reviewed-by: Tom Stellard thomas.stell...@amd.com

v2: Fix indentation

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit dd73b99420de17651001e0a4d937f1f66fbef14c)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9f8b782788f4f1b27fb2015b1cf226660a17271
Author: Brian Paul bri...@vmware.com
Date:   Thu Nov 14 13:33:52 2013 -0700

svga: mark dest image as defined in svga_surface_copy()

After we blit/copy to a dest texture image we need to mark it as
being defined.  This fixes broken mipmap generation for quite a
few texture formats.  Mipgen involves making texture views and
svga_texture_view_surface() skips texture images that are undefined.

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: José Fonseca jfons...@vmware.com
Reviewed-by: Roland Scheidegger srol...@vmware.com
(cherry picked from commit 3969330b47c5b7f7843f356db0a10962553339a6)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfff838429060986a0813d74a87ca81b0406df95
Author: Brian Paul bri...@vmware.com
Date:   Wed Nov 13 11:26:15 2013 -0700

svga: do primitive trimming in translate_indices()

The index translation code expects the number of indexes to be
consistent with the primitive type (ex: a multiple of 3 for
PIPE_PRIM_TRIANGLES).  If it's not, we can write out of bounds
in the destination buffer.

Fixes failed assertions in the pipebuffer debug code found with
Piglit primitive-restart-draw-mode test.

Cc: 10.0 mesa-sta...@lists.freedesktop.org

Reviewed-by: José Fonseca jfons...@vmware.com
(cherry picked from commit 79984b9928d665ce617a1e4551e53d415bd4)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=11982ca08dd8ef5111bf2155e52c3de8d2840431
Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov 6 16:49:24 2013 -0600

gallium/pipe_loader: un-reference udev resources when we're done with them.

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit 598f61ba28bcfd220104e18e89973768babeaac3)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=713966c82f8051575d53c8da918ec9365b087dda
Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov 6 16:49:23 2013 -0600

radeonsi/compute: Dispose of LLVM module after compiling kernels

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit 4c6ac9e61452ffc49f8e360fc879deec8e04bbb5)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a98fc6abecc7bce02b3de4861f49db38daff775
Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov 6 16:49:22 2013 -0600

radeonsi/compute: Free program and program.kernels on shutdown

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit 35dad4a1e235b2bf7fb3ecdb82aed0214db69a35)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=531637feee3c4fa378f2fe25399cff833592b269
Author: Aaron Watry awa...@gmail.com
Date:   Wed Nov 6 16:49:21 2013 -0600

radeon/llvm: Free created llvm memory buffer

v2: Fix indentation

Reviewed-by: Tom Stellard thomas.stell...@amd.com

CC: 10.0 mesa-sta...@lists.freedesktop.org
(cherry picked from commit d41b10f811a89c76248f195a6b4ade62322b8c3c)

URL:  

Mesa (master): i965: Add missing break in SHADER_OPCODE_GEN7_SCRATCH_READ case.

2013-11-15 Thread Vinson Lee
Module: Mesa
Branch: master
Commit: b570c4229fe9c621b56bb9475d77a344039444d4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b570c4229fe9c621b56bb9475d77a344039444d4

Author: Vinson Lee v...@freedesktop.org
Date:   Thu Nov 14 22:47:33 2013 -0800

i965: Add missing break in SHADER_OPCODE_GEN7_SCRATCH_READ case.

Fixes Missing break in switch defect reported by Coverity.

Signed-off-by: Vinson Lee v...@freedesktop.org
Reviewed-by: Matt Turner matts...@gmail.com
Reviewed-by: Eric Anholt e...@anholt.net
Cc: 10.0 mesa-sta...@lists.freedesktop.org

---

 .../drivers/dri/i965/brw_schedule_instructions.cpp |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp 
b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
index 39a5266..a4fae0d 100644
--- a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
@@ -335,6 +335,8 @@ schedule_node::set_latency_gen7(bool is_haswell)
* then around 140.  Presumably this is cache hit vs miss.
*/
   latency = 50;
+  break;
+
case SHADER_OPCODE_UNTYPED_ATOMIC:
   /* Test code:
*   mov(8)g1121ud   0xud   { align1 WE_all 1Q };

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Assert that IF with cmod is Gen6 only.

2013-11-15 Thread Matt Turner
Module: Mesa
Branch: master
Commit: e133c0103d4336c47911e89cc8a17a1c78bfdbb8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e133c0103d4336c47911e89cc8a17a1c78bfdbb8

Author: Matt Turner matts...@gmail.com
Date:   Thu Nov 14 10:36:12 2013 -0800

i965: Assert that IF with cmod is Gen6 only.

Reviewed-by: Kenneth Graunke kenn...@whitecape.org
Reviewed-by: Eric Anholt e...@anholt.net

---

 src/mesa/drivers/dri/i965/brw_fs.cpp   |4 ++--
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp |4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp 
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index f89390c..795e01e 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -193,11 +193,11 @@ fs_visitor::IF(uint32_t predicate)
return inst;
 }
 
-/** Gen6+ IF with embedded comparison. */
+/** Gen6 IF with embedded comparison. */
 fs_inst *
 fs_visitor::IF(fs_reg src0, fs_reg src1, uint32_t condition)
 {
-   assert(brw-gen = 6);
+   assert(brw-gen == 6);
fs_inst *inst = new(mem_ctx) fs_inst(BRW_OPCODE_IF,
 reg_null_d, src0, src1);
inst-conditional_mod = condition;
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp 
b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index a036e2d..423f693 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -177,11 +177,11 @@ vec4_visitor::IF(uint32_t predicate)
return inst;
 }
 
-/** Gen6+ IF with embedded comparison. */
+/** Gen6 IF with embedded comparison. */
 vec4_instruction *
 vec4_visitor::IF(src_reg src0, src_reg src1, uint32_t condition)
 {
-   assert(brw-gen = 6);
+   assert(brw-gen == 6);
 
vec4_instruction *inst;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit