Mesa (master): Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/ mesa

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 7d2cb9a53c288ddafdf9cfd1b3162bcbb903de96
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d2cb9a53c288ddafdf9cfd1b3162bcbb903de96

Author: Stéphane Marchesin 
Date:   Mon Jun  6 20:42:30 2011 -0700

Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa

---



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


Mesa (master): i915g: Do generic remapping.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: abb436526974bd090853c0927ece0839f9143393
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=abb436526974bd090853c0927ece0839f9143393

Author: Stéphane Marchesin 
Date:   Mon Jun  6 20:40:16 2011 -0700

i915g: Do generic remapping.

With complex shaders there are often "holes" in the fs inputs, and we only
have 8 tex coorsd to map those to. To fix this, we remap fs inputs to [0..8].
This lets us to run many more GLSL programs.

---

 src/gallium/drivers/i915/i915_context.h   |6 +
 src/gallium/drivers/i915/i915_fpc_translate.c |  170 ++---
 src/gallium/drivers/i915/i915_state_derived.c |   35 +++---
 3 files changed, 119 insertions(+), 92 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_context.h 
b/src/gallium/drivers/i915/i915_context.h
index dacf50e..964948e 100644
--- a/src/gallium/drivers/i915/i915_context.h
+++ b/src/gallium/drivers/i915/i915_context.h
@@ -124,6 +124,12 @@ struct i915_fragment_shader
 * Else, the bitmask indicates which components are occupied by immediates.
 */
ubyte constant_flags[I915_MAX_CONSTANT];
+
+   /**
+* The mapping between generics and hw texture coords.
+* We need to share this between the vertex and fragment stages.
+**/
+   int generic_mapping[I915_TEX_UNITS];
 };
 
 
diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c 
b/src/gallium/drivers/i915/i915_fpc_translate.c
index 51766cd..27f1008 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -133,7 +133,21 @@ i915_program_error(struct i915_fp_compile *p, const char 
*msg, ...)
p->error = 1;
 }
 
-
+static uint get_mapping(struct i915_fragment_shader* fs, int unit)
+{
+   int i;
+   for (i = 0; i < I915_TEX_UNITS; i++)
+   {
+  if (fs->generic_mapping[i] == -1) {
+ fs->generic_mapping[i] = unit;
+ return i;
+  }
+  if (fs->generic_mapping[i] == unit)
+ return i;
+   }
+   debug_printf("Exceeded max generics\n");
+   return 0;
+}
 
 /**
  * Construct a ureg for the given source register.  Will emit
@@ -141,7 +155,8 @@ i915_program_error(struct i915_fp_compile *p, const char 
*msg, ...)
  */
 static uint
 src_vector(struct i915_fp_compile *p,
-   const struct tgsi_full_src_register *source)
+   const struct tgsi_full_src_register *source,
+   struct i915_fragment_shader* fs)
 {
uint index = source->Register.Index;
uint src = 0, sem_name, sem_ind;
@@ -192,15 +207,11 @@ src_vector(struct i915_fp_compile *p,
  src = swizzle(src, W, W, W, W);
  break;
   case TGSI_SEMANTIC_GENERIC:
- if (sem_ind < 8)
-/* a texcoord */
-src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, 
D0_CHANNEL_ALL);
- else if ( (sem_ind >= 10) && (sem_ind < 18) )
-/* a varying */
-src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind - 10, 
D0_CHANNEL_ALL);
- else
-debug_printf("%s: unhandled generic %d\n", __func__, sem_ind);
- break;
+ {
+int real_tex_unit = get_mapping(fs, sem_ind);
+src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + real_tex_unit, 
D0_CHANNEL_ALL);
+break;
+ }
   default:
  i915_program_error(p, "Bad source->Index");
  return 0;
@@ -342,13 +353,14 @@ translate_tex_src_target(struct i915_fp_compile *p, uint 
tex)
 static void
 emit_tex(struct i915_fp_compile *p,
  const struct tgsi_full_instruction *inst,
- uint opcode)
+ uint opcode,
+ struct i915_fragment_shader* fs)
 {
uint texture = inst->Texture.Texture;
uint unit = inst->Src[1].Register.Index;
uint tex = translate_tex_src_target( p, texture );
uint sampler = i915_emit_decl(p, REG_TYPE_S, unit, tex);
-   uint coord = src_vector( p, &inst->Src[0]);
+   uint coord = src_vector( p, &inst->Src[0], fs);
 
i915_emit_texld( p,
 get_result_vector( p, &inst->Dst[0] ),
@@ -367,15 +379,16 @@ emit_tex(struct i915_fp_compile *p,
 static void
 emit_simple_arith(struct i915_fp_compile *p,
   const struct tgsi_full_instruction *inst,
-  uint opcode, uint numArgs)
+  uint opcode, uint numArgs,
+  struct i915_fragment_shader* fs)
 {
uint arg1, arg2, arg3;
 
assert(numArgs <= 3);
 
-   arg1 = (numArgs < 1) ? 0 : src_vector( p, &inst->Src[0] );
-   arg2 = (numArgs < 2) ? 0 : src_vector( p, &inst->Src[1] );
-   arg3 = (numArgs < 3) ? 0 : src_vector( p, &inst->Src[2] );
+   arg1 = (numArgs < 1) ? 0 : src_vector( p, &inst->Src[0], fs );
+   arg2 = (numArgs < 2) ? 0 : src_vector( p, &inst->Src[1], fs );
+   arg3 = (numArgs < 3) ? 0 : src_vector( p, &inst->Src[2], fs );
 
i915_emit_arith( p,
 opcode,
@@ -391,7 +404,8 @@ emit_simple_arith(struct i915_fp_compile *p,
 static void
 emit_simple_arith_swap2(struct i915_fp_compile *p,

Mesa (7.10): darwin: Set VG_LIB_{NAME,GLOB} to fix make install

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: ca9ab0a6a1e469ed418a2f71a4c4843226d657d3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca9ab0a6a1e469ed418a2f71a4c4843226d657d3

Author: Jeremy Huddleston 
Date:   Mon Jun  6 19:54:55 2011 -0400

darwin: Set VG_LIB_{NAME,GLOB} to fix make install

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 22c320aa2c459474a0d220a40b849bf7e4864251)

---

 configs/darwin |   22 --
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/configs/darwin b/configs/darwin
index 9c126ea..3cf1110 100644
--- a/configs/darwin
+++ b/configs/darwin
@@ -31,18 +31,20 @@ CXXFLAGS =  -ggdb3 -Os -Wall -fno-strict-aliasing \
-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) 
$(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 
 # Library names (actual file names)
-GL_LIB_NAME = libGL.dylib
-GLU_LIB_NAME = libGLU.dylib
-GLUT_LIB_NAME = libglut.dylib
-GLW_LIB_NAME = libGLw.dylib
-OSMESA_LIB_NAME = libOSMesa.dylib
+GL_LIB_NAME = lib$(GL_LIB).dylib
+GLU_LIB_NAME = lib$(GLU_LIB).dylib
+GLUT_LIB_NAME = lib$(GLUT_LIB).dylib
+GLW_LIB_NAME = lib$(GLW_LIB).dylib
+OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib
+VG_LIB_NAME = lib$(VG_LIB).dylib
 
 # globs used to install the lib and all symlinks
-GL_LIB_GLOB = libGL.*dylib
-GLU_LIB_GLOB = libGLU.*dylib
-GLUT_LIB_GLOB = libglut.*dylib
-GLW_LIB_GLOB = libGLw.*dylib
-OSMESA_LIB_GLOB = libOSMesa.*dylib
+GL_LIB_GLOB = lib$(GL_LIB).*dylib
+GLU_LIB_GLOB = lib$(GLU_LIB).*dylib
+GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib
+GLW_LIB_GLOB = lib$(GLW_LIB).*dylib
+OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib
+VG_LIB_GLOB = lib$(VG_LIB).*.dylib
 
 GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext 
-lm -lpthread
 OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)

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


Mesa (master): darwin: Set VG_LIB_{NAME,GLOB} to fix make install

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: master
Commit: 22c320aa2c459474a0d220a40b849bf7e4864251
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=22c320aa2c459474a0d220a40b849bf7e4864251

Author: Jeremy Huddleston 
Date:   Mon Jun  6 19:54:55 2011 -0400

darwin: Set VG_LIB_{NAME,GLOB} to fix make install

Signed-off-by: Jeremy Huddleston 

---

 configs/darwin |   22 --
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/configs/darwin b/configs/darwin
index 9c126ea..3cf1110 100644
--- a/configs/darwin
+++ b/configs/darwin
@@ -31,18 +31,20 @@ CXXFLAGS =  -ggdb3 -Os -Wall -fno-strict-aliasing \
-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) 
$(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 
 # Library names (actual file names)
-GL_LIB_NAME = libGL.dylib
-GLU_LIB_NAME = libGLU.dylib
-GLUT_LIB_NAME = libglut.dylib
-GLW_LIB_NAME = libGLw.dylib
-OSMESA_LIB_NAME = libOSMesa.dylib
+GL_LIB_NAME = lib$(GL_LIB).dylib
+GLU_LIB_NAME = lib$(GLU_LIB).dylib
+GLUT_LIB_NAME = lib$(GLUT_LIB).dylib
+GLW_LIB_NAME = lib$(GLW_LIB).dylib
+OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib
+VG_LIB_NAME = lib$(VG_LIB).dylib
 
 # globs used to install the lib and all symlinks
-GL_LIB_GLOB = libGL.*dylib
-GLU_LIB_GLOB = libGLU.*dylib
-GLUT_LIB_GLOB = libglut.*dylib
-GLW_LIB_GLOB = libGLw.*dylib
-OSMESA_LIB_GLOB = libOSMesa.*dylib
+GL_LIB_GLOB = lib$(GL_LIB).*dylib
+GLU_LIB_GLOB = lib$(GLU_LIB).*dylib
+GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib
+GLW_LIB_GLOB = lib$(GLW_LIB).*dylib
+OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib
+VG_LIB_GLOB = lib$(VG_LIB).*.dylib
 
 GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext 
-lm -lpthread
 OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)

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


Mesa (master): r600g: optimise the draw emission packets for r600/eg

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: ca01fe007d3962386cb98aef762d5a2ff114e4aa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca01fe007d3962386cb98aef762d5a2ff114e4aa

Author: Dave Airlie 
Date:   Mon Jun  6 20:03:13 2011 +1000

r600g: optimise the draw emission packets for r600/eg

This just reduces code size a bit for this chunk.

Signed-off-by: Dave Airlie 

---

 src/gallium/winsys/r600/drm/evergreen_hw_context.c |   33 ++-
 src/gallium/winsys/r600/drm/r600_hw_context.c  |   34 +++-
 2 files changed, 37 insertions(+), 30 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c 
b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
index 7a1be87..3cf41c1 100644
--- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c
+++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
@@ -1143,6 +1143,7 @@ void evergreen_context_draw(struct r600_context *ctx, 
const struct r600_draw *dr
unsigned ndwords = 7;
struct r600_block *dirty_block = NULL;
struct r600_block *next_block;
+   uint32_t *pm4;
 
if (draw->indices) {
ndwords = 11;
@@ -1184,24 +1185,26 @@ void evergreen_context_draw(struct r600_context *ctx, 
const struct r600_draw *dr
}
 
/* draw packet */
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_index_type;
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NUM_INSTANCES, 0, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_instances;
+   pm4 = &ctx->pm4[ctx->pm4_cdwords];
+   pm4[0] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing);
+   pm4[1] = draw->vgt_index_type;
+   pm4[2] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing);
+   pm4[3] = draw->vgt_num_instances;
if (draw->indices) {
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX, 3, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->indices_bo_offset + 
r600_bo_offset(draw->indices);
-   ctx->pm4[ctx->pm4_cdwords++] = 0;
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices;
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator;
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = 0;
-   r600_context_bo_reloc(ctx, &ctx->pm4[ctx->pm4_cdwords - 1], 
draw->indices);
+   pm4[4] = PKT3(PKT3_DRAW_INDEX, 3, ctx->predicate_drawing);
+   pm4[5] = draw->indices_bo_offset + 
r600_bo_offset(draw->indices);
+   pm4[6] = 0;
+   pm4[7] = draw->vgt_num_indices;
+   pm4[8] = draw->vgt_draw_initiator;
+   pm4[9] = PKT3(PKT3_NOP, 0, ctx->predicate_drawing);
+   pm4[10] = 0;
+   r600_context_bo_reloc(ctx, &pm4[10], draw->indices);
} else {
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX_AUTO, 1, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices;
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator;
+   pm4[4] = PKT3(PKT3_DRAW_INDEX_AUTO, 1, ctx->predicate_drawing);
+   pm4[5] = draw->vgt_num_indices;
+   pm4[6] = draw->vgt_draw_initiator;
}
+   ctx->pm4_cdwords += ndwords;
 
ctx->flags |= (R600_CONTEXT_DRAW_PENDING | 
R600_CONTEXT_DST_CACHES_DIRTY);
 
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
index c5551b2..cb244f2 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -1347,6 +1347,7 @@ void r600_context_draw(struct r600_context *ctx, const 
struct r600_draw *draw)
unsigned ndwords = 7;
struct r600_block *dirty_block = NULL;
struct r600_block *next_block;
+   uint32_t *pm4;
 
if (draw->indices) {
ndwords = 11;
@@ -1389,24 +1390,27 @@ void r600_context_draw(struct r600_context *ctx, const 
struct r600_draw *draw)
}
 
/* draw packet */
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_index_type;
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NUM_INSTANCES, 0, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_instances;
+   pm4 = &ctx->pm4[ctx->pm4_cdwords];
+
+   pm4[0] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing);
+   pm4[1] = draw->vgt_index_type;
+   pm4[2] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing);
+   pm4[3] = draw->vgt_num_instances;
if (draw->indices) {
-   ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX, 3, 
ctx->predicate_drawing);
-   ctx->pm4[ctx->pm4_cdwords++] = draw->indice

Mesa (master): r600g: use an enabled list to track enabled blocks.

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: 63184bc8b278ba82f5462798b323774c67a019e6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=63184bc8b278ba82f5462798b323774c67a019e6

Author: Dave Airlie 
Date:   Fri Jun  3 09:59:12 2011 +1000

r600g: use an enabled list to track enabled blocks.

At the end of flushing we were scanning over 450 blocks
with generally about 50 enabled. This reduces the scanning
to just the list of enabled blocks.

Signed-off-by: Dave Airlie 

---

 src/gallium/drivers/r600/r600.h|2 +
 src/gallium/winsys/r600/drm/evergreen_hw_context.c |   46 +++-
 src/gallium/winsys/r600/drm/r600_hw_context.c  |   42 --
 src/gallium/winsys/r600/drm/r600_priv.h|1 +
 4 files changed, 56 insertions(+), 35 deletions(-)

diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h
index cc70600..b1444bf 100644
--- a/src/gallium/drivers/r600/r600.h
+++ b/src/gallium/drivers/r600/r600.h
@@ -188,6 +188,7 @@ struct r600_block_reloc {
 
 struct r600_block {
struct list_headlist;
+   struct list_headenable_list;
unsignedstatus;
unsignedflags;
unsignedstart_offset;
@@ -251,6 +252,7 @@ struct r600_context {
unsignednblocks;
struct r600_block   **blocks;
struct list_headdirty;
+   struct list_headenable_list;
unsignedpm4_ndwords;
unsignedpm4_cdwords;
unsignedpm4_dirty_cdwords;
diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c 
b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
index 7072461..7a1be87 100644
--- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c
+++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
@@ -43,31 +43,31 @@
 static const struct r600_reg evergreen_config_reg_list[] = {
{R_008958_VGT_PRIMITIVE_TYPE, 0, 0, 0},
{R_008A14_PA_CL_ENHANCE, 0, 0, 0},
-   {R_008C00_SQ_CONFIG, 0, 0, 0},
-   {R_008C04_SQ_GPR_RESOURCE_MGMT_1, 0, 0, 0},
-   {R_008C08_SQ_GPR_RESOURCE_MGMT_2, 0, 0, 0},
-   {R_008C0C_SQ_THREAD_RESOURCE_MGMT, 0, 0, 0},
-   {R_008C18_SQ_THREAD_RESOURCE_MGMT_1, 0, 0, 0},
-   {R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, 0, 0, 0},
-   {R_008C20_SQ_STACK_RESOURCE_MGMT_1, 0, 0, 0},
-   {R_008C24_SQ_STACK_RESOURCE_MGMT_2, 0, 0, 0},
-   {R_008C28_SQ_STACK_RESOURCE_MGMT_3, 0, 0, 0},
-   {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, 0, 0, 0},
-   {R_009100_SPI_CONFIG_CNTL, 0, 0, 0},
-   {R_00913C_SPI_CONFIG_CNTL_1, 0, 0, 0},
+   {R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C08_SQ_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C0C_SQ_THREAD_RESOURCE_MGMT, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C18_SQ_THREAD_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C20_SQ_STACK_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C24_SQ_STACK_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C28_SQ_STACK_RESOURCE_MGMT_3, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
 };
 
 
 static const struct r600_reg cayman_config_reg_list[] = {
{R_008958_VGT_PRIMITIVE_TYPE, 0, 0, 0},
{R_008A14_PA_CL_ENHANCE, 0, 0, 0},
-   {R_008C00_SQ_CONFIG, 0, 0, 0},
-   {R_008C04_SQ_GPR_RESOURCE_MGMT_1, 0, 0, 0},
-   {CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, 0, 0, 0},
-   {CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, 0, 0, 0},
-   {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, 0, 0, 0},
-   {R_009100_SPI_CONFIG_CNTL, 0, 0, 0},
-   {R_00913C_SPI_CONFIG_CNTL_1, 0, 0, 0},
+   {R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 
0},
+   {CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 
0},
+   {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0},
+   {R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
 };
 
 static const struct r600_reg evergreen_ctl_const_list[] = {
@@ -904,6 +904,10 @@ int evergreen_context_init(struct r600_context *ctx, 
struct radeon *radeon)
ctx->radeon = radeon;
LIST_INITHEAD(&ctx->query_list);
 
+   /* init dirty list */
+   LIST_INITHEAD(&ctx->dirty);
+   LIST_INITHEAD(&ctx->enable_list);
+
ctx->range = calloc(NUM_RANGES, sizeof(struct r600_range));
 

Mesa (master): r600g: split out block init

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: be7af43f5a725b65701ab1e37a5c373d715be9b0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=be7af43f5a725b65701ab1e37a5c373d715be9b0

Author: Dave Airlie 
Date:   Mon Jun  6 14:33:23 2011 +1000

r600g: split out block init

This just splits this function up as pre-cursor to reusing
the internals of it.

Signed-off-by: Dave Airlie 

---

 src/gallium/winsys/r600/drm/r600_hw_context.c |  101 +---
 1 files changed, 55 insertions(+), 46 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 2039e8a..41d32d8 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -79,6 +79,60 @@ static void INLINE r600_context_fence_wraparound(struct 
r600_context *ctx, unsig
}
 }
 
+static void r600_init_block(struct r600_context *ctx,
+   struct r600_block *block,
+   const struct r600_reg *reg, int index, int nreg,
+   unsigned opcode, unsigned offset_base)
+{
+   int i = index;
+   int j, n = nreg;
+
+   /* initialize block */
+   block->status |= R600_BLOCK_STATUS_DIRTY; /* dirty all blocks at start 
*/
+   block->start_offset = reg[i].offset;
+   block->pm4[block->pm4_ndwords++] = PKT3(opcode, n, 0);
+   block->pm4[block->pm4_ndwords++] = (block->start_offset - offset_base) 
>> 2;
+   block->reg = &block->pm4[block->pm4_ndwords];
+   block->pm4_ndwords += n;
+   block->nreg = n;
+   block->nreg_dirty = n;
+   block->flags = 0;
+   LIST_INITHEAD(&block->list);
+
+   for (j = 0; j < n; j++) {
+   if (reg[i+j].flags & REG_FLAG_DIRTY_ALWAYS) {
+   block->flags |= REG_FLAG_DIRTY_ALWAYS;
+   }
+   if (reg[i+j].flags & REG_FLAG_NEED_BO) {
+   block->nbo++;
+   assert(block->nbo < R600_BLOCK_MAX_BO);
+   block->pm4_bo_index[j] = block->nbo;
+   block->pm4[block->pm4_ndwords++] = PKT3(PKT3_NOP, 0, 0);
+   block->pm4[block->pm4_ndwords++] = 0x;
+   if (reg[i+j].flags & REG_FLAG_RV6XX_SBU) {
+   block->reloc[block->nbo].flush_flags = 0;
+   block->reloc[block->nbo].flush_mask = 0;
+   } else {
+   block->reloc[block->nbo].flush_flags = 
reg[i+j].flush_flags;
+   block->reloc[block->nbo].flush_mask = 
reg[i+j].flush_mask;
+   }
+   block->reloc[block->nbo].bo_pm4_index = 
block->pm4_ndwords - 1;
+   }
+   if ((ctx->radeon->family > CHIP_R600) &&
+   (ctx->radeon->family < CHIP_RV770) && reg[i+j].flags & 
REG_FLAG_RV6XX_SBU) {
+   block->pm4[block->pm4_ndwords++] = 
PKT3(PKT3_SURFACE_BASE_UPDATE, 0, 0);
+   block->pm4[block->pm4_ndwords++] = reg[i+j].flush_flags;
+   }
+   }
+   for (j = 0; j < n; j++) {
+   if (reg[i+j].flush_flags) {
+   block->pm4_flush_ndwords += 7;
+   }
+   }
+   /* check that we stay in limit */
+   assert(block->pm4_ndwords < R600_BLOCK_MAX_REG);
+}
+
 int r600_context_add_block(struct r600_context *ctx, const struct r600_reg 
*reg, unsigned nreg,
   unsigned opcode, unsigned offset_base)
 {
@@ -87,8 +141,6 @@ int r600_context_add_block(struct r600_context *ctx, const 
struct r600_reg *reg,
int offset;
 
for (unsigned i = 0, n = 0; i < nreg; i += n) {
-   u32 j;
-
/* ignore new block balise */
if (reg[i].offset == GROUP_FORCE_NEW_BLOCK) {
n = 1;
@@ -131,50 +183,7 @@ int r600_context_add_block(struct r600_context *ctx, const 
struct r600_reg *reg,
range->blocks[CTX_BLOCK_ID(reg[i + j].offset)] = block;
}
 
-   /* initialize block */
-   block->status |= R600_BLOCK_STATUS_DIRTY; /* dirty all blocks 
at start */
-   block->start_offset = reg[i].offset;
-   block->pm4[block->pm4_ndwords++] = PKT3(opcode, n, 0);
-   block->pm4[block->pm4_ndwords++] = (block->start_offset - 
offset_base) >> 2;
-   block->reg = &block->pm4[block->pm4_ndwords];
-   block->pm4_ndwords += n;
-   block->nreg = n;
-   block->nreg_dirty = n;
-   block->flags = 0;
-   LIST_INITHEAD(&block->list);
-
-   for (j = 0; j < n; j++) {
-   if (reg[i+j].flags & REG_FLAG_DIRTY_ALWAYS) {
-   block->flags |= REG_FLAG_DIRTY_ALWAYS;
-   }
-   if (reg[i+j].

Mesa (master): r600g/winsys: overhaul resource range/blocks.

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: f356bb74de7ab9ad1085a0fc2f16c1dae4ff171e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f356bb74de7ab9ad1085a0fc2f16c1dae4ff171e

Author: Dave Airlie 
Date:   Mon Jun  6 18:00:36 2011 +1000

r600g/winsys: overhaul resource range/blocks.

There isn't much point taking the overhead of range/block lookups on resources
we aren't going to be getting resource registers at wierd offsets.

Signed-off-by: Dave Airlie 

---

 src/gallium/drivers/r600/r600.h|4 +
 src/gallium/winsys/r600/drm/evergreen_hw_context.c |   50 -
 src/gallium/winsys/r600/drm/r600_hw_context.c  |  118 ++--
 src/gallium/winsys/r600/drm/r600_priv.h|3 +-
 4 files changed, 110 insertions(+), 65 deletions(-)

diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h
index 5d6240a..cc70600 100644
--- a/src/gallium/drivers/r600/r600.h
+++ b/src/gallium/drivers/r600/r600.h
@@ -267,6 +267,10 @@ struct r600_context {
unsignednum_dest_buffers;
unsignedflags;
boolean predicate_drawing;
+   struct r600_range ps_resources;
+   struct r600_range vs_resources;
+   struct r600_range fs_resources;
+   int num_ps_resources, num_vs_resources, num_fs_resources;
 };
 
 struct r600_draw {
diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c 
b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
index 701d4e9..7072461 100644
--- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c
+++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
@@ -817,7 +817,7 @@ static const struct r600_reg cayman_context_reg_list[] = {
 };
 
 /* SHADER RESOURCE R600/R700 */
-static int evergreen_state_resource_init(struct r600_context *ctx, u32 offset)
+static int r600_resource_range_init(struct r600_context *ctx, struct 
r600_range *range, unsigned offset, unsigned nblocks, unsigned stride)
 {
struct r600_reg r600_shader_resource[] = {
{R_03_RESOURCE0_WORD0, 0, 0, 0},
@@ -831,10 +831,7 @@ static int evergreen_state_resource_init(struct 
r600_context *ctx, u32 offset)
};
unsigned nreg = Elements(r600_shader_resource);
 
-   for (int i = 0; i < nreg; i++) {
-   r600_shader_resource[i].offset += offset;
-   }
-   return r600_context_add_block(ctx, r600_shader_resource, nreg, 
PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET);
+   return r600_resource_init(ctx, range, offset, nblocks, stride, 
r600_shader_resource, nreg, EVERGREEN_RESOURCE_OFFSET);
 }
 
 /* SHADER SAMPLER R600/R700 */
@@ -960,24 +957,19 @@ int evergreen_context_init(struct r600_context *ctx, 
struct radeon *radeon)
if (r)
goto out_err;
}
-   /* PS RESOURCE */
-   for (int j = 0, offset = 0; j < 176; j++, offset += 0x20) {
-   r = evergreen_state_resource_init(ctx, offset);
-   if (r)
-   goto out_err;
-   }
-   /* VS RESOURCE */
-   for (int j = 0, offset = 0x1600; j < 160; j++, offset += 0x20) {
-   r = evergreen_state_resource_init(ctx, offset);
-   if (r)
-   goto out_err;
-   }
-   /* FS RESOURCE */
-   for (int j = 0, offset = 0x7C00; j < 16; j++, offset += 0x20) {
-   r = evergreen_state_resource_init(ctx, offset);
-   if (r)
-   goto out_err;
-   }
+
+   ctx->num_ps_resources = 176;
+   ctx->num_vs_resources = 160;
+   ctx->num_fs_resources = 16;
+   r = r600_resource_range_init(ctx, &ctx->ps_resources, 0, 176, 0x20);
+   if (r)
+   goto out_err;
+   r = r600_resource_range_init(ctx, &ctx->vs_resources, 0x1600, 160, 
0x20);
+   if (r)
+   goto out_err;
+   r = r600_resource_range_init(ctx, &ctx->fs_resources, 0x7C00, 16, 0x20);
+   if (r)
+   goto out_err;
 
/* PS loop const */
evergreen_loop_const_init(ctx, 0);
@@ -1025,23 +1017,23 @@ out_err:
 
 void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, 
struct r600_pipe_resource_state *state, unsigned rid)
 {
-   unsigned offset = R_03_SQ_TEX_RESOURCE_WORD0_0 + 0x20 * rid;
+   struct r600_block *block = ctx->ps_resources.blocks[rid];
 
-   r600_context_pipe_state_set_resource(ctx, state, offset);
+   r600_context_pipe_state_set_resource(ctx, state, block);
 }
 
 void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, 
struct r600_pipe_resource_state *state, unsigned rid)
 {
-   unsigned offset = R_03_SQ_TEX_RESOURCE_WORD0_0 + 0x1600 + 0x20 * 
rid;
+   struct r600_block *block = ctx->vs_resources.blocks[rid];
 
-   r600_context_pipe_state_set_resource(ctx, state, offset);
+   r600_context_pipe_state_set_resource(ctx, state, block);
 }
 
 void evergreen_context_pipe_state_set_fs_resource(struct r

Mesa (master): r600g: move resource setting to its own structures.

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: cf0f02e501eb2eb8edcf2c4f6db826b0cdd31c9b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf0f02e501eb2eb8edcf2c4f6db826b0cdd31c9b

Author: Dave Airlie 
Date:   Fri Jun  3 15:34:31 2011 +1000

r600g: move resource setting to its own structures.

resource setting could be a fair bit more lightweight,
this patch just separates the resource structs from the standard
reg tracking structs in the driver, later patches will improve
the winsys.

Signed-off-by: Dave Airlie 

---

 src/gallium/drivers/r600/evergreen_state.c |  106 
 src/gallium/drivers/r600/r600.h|   18 ++-
 src/gallium/drivers/r600/r600_pipe.h   |   20 ++--
 src/gallium/drivers/r600/r600_state.c  |   94 --
 src/gallium/drivers/r600/r600_state_common.c   |   16 ++--
 src/gallium/winsys/r600/drm/evergreen_hw_context.c |6 +-
 src/gallium/winsys/r600/drm/r600_hw_context.c  |   50 +-
 src/gallium/winsys/r600/drm/r600_priv.h|2 +-
 8 files changed, 140 insertions(+), 172 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 54f5410..17abdff 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -380,9 +380,8 @@ static struct pipe_sampler_view 
*evergreen_create_sampler_view(struct pipe_conte
struct pipe_resource 
*texture,
const struct 
pipe_sampler_view *state)
 {
-   struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
struct r600_pipe_sampler_view *resource = 
CALLOC_STRUCT(r600_pipe_sampler_view);
-   struct r600_pipe_state *rstate;
+   struct r600_pipe_resource_state *rstate;
const struct util_format_description *desc;
struct r600_resource_texture *tmp;
struct r600_resource *rbuffer;
@@ -438,35 +437,27 @@ static struct pipe_sampler_view 
*evergreen_create_sampler_view(struct pipe_conte
array_mode = tmp->array_mode[0];
tile_type = tmp->tile_type;
 
-   r600_pipe_state_add_reg(rstate, R_03_RESOURCE0_WORD0,
-   S_03_DIM(r600_tex_dim(texture->target)) |
-   S_03_PITCH((pitch / 8) - 1) |
-   S_03_NON_DISP_TILING_ORDER(tile_type) |
-   S_03_TEX_WIDTH(texture->width0 - 1), 
0x, NULL);
-   r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1,
-   S_030004_TEX_HEIGHT(texture->height0 - 1) |
-   S_030004_TEX_DEPTH(texture->depth0 - 1) |
-   S_030004_ARRAY_MODE(array_mode),
-   0x, NULL);
-   r600_pipe_state_add_reg(rstate, R_030008_RESOURCE0_WORD2,
-   (tmp->offset[0] + r600_bo_offset(bo[0])) >> 8, 
0x, bo[0]);
-   r600_pipe_state_add_reg(rstate, R_03000C_RESOURCE0_WORD3,
-   (tmp->offset[1] + r600_bo_offset(bo[1])) >> 8, 
0x, bo[1]);
-   r600_pipe_state_add_reg(rstate, R_030010_RESOURCE0_WORD4,
-   word4 |
-   
S_030010_SRF_MODE_ALL(V_030010_SRF_MODE_ZERO_CLAMP_MINUS_ONE) |
-   S_030010_ENDIAN_SWAP(endian) |
-   S_030010_BASE_LEVEL(state->u.tex.first_level), 
0x, NULL);
-   r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5,
-   S_030014_LAST_LEVEL(state->u.tex.last_level) |
-   S_030014_BASE_ARRAY(0) |
-   S_030014_LAST_ARRAY(0), 0x, NULL);
-   r600_pipe_state_add_reg(rstate, R_030018_RESOURCE0_WORD6,
-   S_030018_MAX_ANISO(4 /* max 16 samples */),
-   0x, NULL);
-   r600_pipe_state_add_reg(rstate, R_03001C_RESOURCE0_WORD7,
-   S_03001C_DATA_FORMAT(format) |
-   
S_03001C_TYPE(V_03001C_SQ_TEX_VTX_VALID_TEXTURE), 0x, NULL);
+   rstate->bo[0] = bo[0];
+   rstate->bo[1] = bo[1];
+   rstate->val[0] = (S_03_DIM(r600_tex_dim(texture->target)) |
+ S_03_PITCH((pitch / 8) - 1) |
+ S_03_NON_DISP_TILING_ORDER(tile_type) |
+ S_03_TEX_WIDTH(texture->width0 - 1));
+   rstate->val[1] = (S_030004_TEX_HEIGHT(texture->height0 - 1) |
+ S_030004_TEX_DEPTH(texture->depth0 - 1) |
+ S_030004_ARRAY_MODE(array_mode));
+   rstate->val[2] = (tmp->offset[0] + r600_bo_offset(bo[0])) >> 8;
+   rstate->val[3] = (tmp->offset[1] + r600_bo_offset(bo[1])) >> 8;
+   

Mesa (master): r600g: don' t need to call the packet dirty function if not dirty.

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: 6cd3534676a58e92ac479eee7040df2ad27fdac0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6cd3534676a58e92ac479eee7040df2ad27fdac0

Author: Dave Airlie 
Date:   Fri Jun  3 15:24:55 2011 +1000

r600g: don't need to call the packet dirty function if not dirty.

also fix a unneeded dirty check and add a dirty check speedup.

Signed-off-by: Dave Airlie 

---

 src/gallium/winsys/r600/drm/evergreen_hw_context.c |7 ---
 src/gallium/winsys/r600/drm/r600_hw_context.c  |   20 
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c 
b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
index cf8ae51..aa789e6 100644
--- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c
+++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
@@ -1066,8 +1066,8 @@ static inline void 
evergreen_context_pipe_state_set_sampler(struct r600_context
block->reg[i] = state->regs[i].value;
}
}
-
-   r600_context_dirty_block(ctx, block, dirty, 2);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, 2);
 }
 
 static inline void evergreen_context_ps_partial_flush(struct r600_context *ctx)
@@ -1119,7 +1119,8 @@ static inline void 
evergreen_context_pipe_state_set_sampler_border(struct r600_c
if (dirty & R600_BLOCK_STATUS_DIRTY)
evergreen_context_ps_partial_flush(ctx);
 
-   r600_context_dirty_block(ctx, block, dirty, 4);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, 4);
 }
 
 void evergreen_context_pipe_state_set_ps_sampler(struct r600_context *ctx, 
struct r600_pipe_state *state, unsigned id)
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
index a3c8945..4c21d60 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -920,13 +920,14 @@ void r600_context_reg(struct r600_context *ctx,
dirty |= R600_BLOCK_STATUS_DIRTY;
block->reg[id] = new_val;
}
-   r600_context_dirty_block(ctx, block, dirty, id);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, id);
 }
 
 void r600_context_dirty_block(struct r600_context *ctx, struct r600_block 
*block,
  int dirty, int index)
 {
-   if (dirty && (index + 1) > block->nreg_dirty)
+   if ((index + 1) > block->nreg_dirty)
block->nreg_dirty = index + 1;
 
if ((dirty != (block->status & R600_BLOCK_STATUS_DIRTY)) || 
!(block->status & R600_BLOCK_STATUS_ENABLED)) {
@@ -970,7 +971,8 @@ void r600_context_pipe_state_set(struct r600_context *ctx, 
struct r600_pipe_stat
dirty |= R600_BLOCK_STATUS_DIRTY;
}
 
-   r600_context_dirty_block(ctx, block, dirty, id);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, id);
}
 }
 
@@ -998,7 +1000,7 @@ void r600_context_pipe_state_set_resource(struct 
r600_context *ctx, struct r600_
dirty = block->status & R600_BLOCK_STATUS_DIRTY;
 
for (i = 0; i < num_regs; i++) {
-   if (block->reg[i] != state->regs[i].value) {
+   if (dirty || (block->reg[i] != state->regs[i].value)) {
dirty |= R600_BLOCK_STATUS_DIRTY;
block->reg[i] = state->regs[i].value;
}
@@ -1045,7 +1047,8 @@ void r600_context_pipe_state_set_resource(struct 
r600_context *ctx, struct r600_
state->regs[2].bo->bo->binding |= BO_BOUND_TEXTURE;
}
}
-   r600_context_dirty_block(ctx, block, dirty, num_regs - 1);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, num_regs - 1);
 }
 
 void r600_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct 
r600_pipe_state *state, unsigned rid)
@@ -1091,7 +1094,8 @@ static inline void 
r600_context_pipe_state_set_sampler(struct r600_context *ctx,
}
}
 
-   r600_context_dirty_block(ctx, block, dirty, 2);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, 2);
 }
 
 static inline void r600_context_ps_partial_flush(struct r600_context *ctx)
@@ -1135,8 +1139,8 @@ static inline void 
r600_context_pipe_state_set_sampler_border(struct r600_contex
 * will end up using the new border color. */
if (dirty & R600_BLOCK_STATUS_DIRTY)
r600_context_ps_partial_flush(ctx);
-
-   r600_context_dirty_block(ctx, block, dirty, 3);
+   if (dirty)
+   r600_context_dirty_block(ctx, block, dirty, 3);
 }
 
 void r600_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct 
r600_pipe_state *state, unsigned id)

___
mesa-commit mailing list
mesa-c

Mesa (master): r600g: only call bo loop if nbos is positive.

2011-06-06 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: eb4bb48ef41483750fa678ab21ef52accbf4e628
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb4bb48ef41483750fa678ab21ef52accbf4e628

Author: Dave Airlie 
Date:   Mon Jun  6 11:15:10 2011 +1000

r600g: only call bo loop if nbos is positive.

we don't need to loop over all the registers unless we have
some bos in the block, also avoid setting the ctx flags,
and move the optional stuff down below this chunk.

Signed-off-by: Dave Airlie 

---

 src/gallium/winsys/r600/drm/r600_hw_context.c |   36 +---
 1 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 4c21d60..1be4854 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -1183,31 +1183,33 @@ void r600_context_block_emit_dirty(struct r600_context 
*ctx, struct r600_block *
 {
int id;
int optional = block->nbo == 0 && !(block->flags & 
REG_FLAG_DIRTY_ALWAYS);
-   int cp_dwords = block->pm4_ndwords, start_dword;
-   int new_dwords;
+   int cp_dwords = block->pm4_ndwords, start_dword = 0;
+   int new_dwords = 0;
 
if (block->nreg_dirty == 0 && optional) {
goto out;
}
 
-   optional &= (block->nreg_dirty != block->nreg);
-
-   ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH;
-   for (int j = 0; j < block->nreg; j++) {
-   if (block->pm4_bo_index[j]) {
-   /* find relocation */
-   id = block->pm4_bo_index[j];
-   r600_context_bo_reloc(ctx,
-   
&block->pm4[block->reloc[id].bo_pm4_index],
-   block->reloc[id].bo);
-   r600_context_bo_flush(ctx,
-   block->reloc[id].flush_flags,
-   block->reloc[id].flush_mask,
-   block->reloc[id].bo);
+   if (block->nbo) {
+   ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH;
+
+   for (int j = 0; j < block->nreg; j++) {
+   if (block->pm4_bo_index[j]) {
+   /* find relocation */
+   id = block->pm4_bo_index[j];
+   r600_context_bo_reloc(ctx,
+ 
&block->pm4[block->reloc[id].bo_pm4_index],
+ block->reloc[id].bo);
+   r600_context_bo_flush(ctx,
+ 
block->reloc[id].flush_flags,
+ 
block->reloc[id].flush_mask,
+ block->reloc[id].bo);
+   }
}
+   ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH;
}
-   ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH;
 
+   optional &= (block->nreg_dirty != block->nreg);
if (optional) {
new_dwords = block->nreg_dirty;
start_dword = ctx->pm4_cdwords;

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


Mesa (master): i915g: implement more opcodes.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 2292025c49f2165b59f578c926d320913b08b1b5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2292025c49f2165b59f578c926d320913b08b1b5

Author: Stéphane Marchesin 
Date:   Mon Jun  6 12:32:17 2011 -0700

i915g: implement more opcodes.

---

 src/gallium/drivers/i915/i915_fpc_translate.c |   94 +---
 1 files changed, 82 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c 
b/src/gallium/drivers/i915/i915_fpc_translate.c
index 695a396..51766cd 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -501,6 +501,17 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_const4fv(p, cos_constants), 0);
   break;
 
+  case TGSI_OPCODE_DP2:
+  src0 = src_vector(p, &inst->Src[0]);
+  src1 = src_vector(p, &inst->Src[1]);
+
+  i915_emit_arith(p,
+  A0_DP3,
+  get_result_vector(p, &inst->Dst[0]),
+  get_result_flags(inst), 0,
+  swizzle(src0, X, Y, ZERO, ZERO), src1, 0);
+  break;
+
case TGSI_OPCODE_DP3:
   emit_simple_arith(p, inst, A0_DP3, 2);
   break;
@@ -706,7 +717,7 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_arith(p,
   A0_RCP,
   get_result_vector(p, &inst->Dst[0]),
- get_result_flags(inst), 0,
+  get_result_flags(inst), 0,
   swizzle(src0, X, X, X, X), 0, 0);
   break;
 
@@ -784,13 +795,36 @@ i915_translate_instruction(struct i915_fp_compile *p,
   }
   break;
 
-   case TGSI_OPCODE_SGE:
-  emit_simple_arith(p, inst, A0_SGE, 2);
+   case TGSI_OPCODE_SEQ:
+  /* if we're both >= and <= then we're == */
+  src0 = src_vector(p, &inst->Src[0]);
+  src1 = src_vector(p, &inst->Src[1]);
+  tmp = i915_get_utemp(p);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  tmp, A0_DEST_CHANNEL_ALL, 0,
+  src0,
+  src1, 0);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  src1,
+  src0, 0);
+
+  i915_emit_arith(p,
+  A0_MUL,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  get_result_vector(p, &inst->Dst[0]),
+  tmp, 0);
+
   break;
 
-   case TGSI_OPCODE_SLE:
-  /* like SGE, but swap reg0, reg1 */
-  emit_simple_arith_swap2(p, inst, A0_SGE, 2);
+   case TGSI_OPCODE_SGE:
+  emit_simple_arith(p, inst, A0_SGE, 2);
   break;
 
case TGSI_OPCODE_SIN:
@@ -843,6 +877,11 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_const4fv(p, sin_constants), 0);
   break;
 
+   case TGSI_OPCODE_SLE:
+  /* like SGE, but swap reg0, reg1 */
+  emit_simple_arith_swap2(p, inst, A0_SGE, 2);
+  break;
+
case TGSI_OPCODE_SLT:
   emit_simple_arith(p, inst, A0_SLT, 2);
   break;
@@ -852,32 +891,59 @@ i915_translate_instruction(struct i915_fp_compile *p,
   emit_simple_arith_swap2(p, inst, A0_SLT, 2);
   break;
 
-   case TGSI_OPCODE_SEQ:
-  /* if we're both >= and <= then we're == */
+   case TGSI_OPCODE_SNE:
+  /* if we're neither < nor > then we're != */
   src0 = src_vector(p, &inst->Src[0]);
   src1 = src_vector(p, &inst->Src[1]);
   tmp = i915_get_utemp(p);
 
   i915_emit_arith(p,
-  A0_SGE,
-  tmp, A0_DEST_CHANNEL_ALL, 0,
+  A0_SLT,
+  tmp,
+  A0_DEST_CHANNEL_ALL, 0,
   src0,
   src1, 0);
 
   i915_emit_arith(p,
-  A0_SGE,
+  A0_SLT,
   get_result_vector(p, &inst->Dst[0]),
   A0_DEST_CHANNEL_ALL, 0,
   src1,
   src0, 0);
 
   i915_emit_arith(p,
-  A0_MUL,
+  A0_ADD,
   get_result_vector(p, &inst->Dst[0]),
   A0_DEST_CHANNEL_ALL, 0,
   get_result_vector(p, &inst->Dst[0]),
   tmp, 0);
+  break;
 
+   case TGSI_OPCODE_SSG:
+  /* compute (src>0) - (src<0) */
+  src0 = src_vector(p, &inst->Src[0]);
+  tmp = i915_get_utemp(p);
+
+  i915_emit_arith(p,
+  A0_SLT,
+  tmp,
+  A0_DEST_CHANNEL_ALL, 0,
+  src0,
+  swizzle(src0, ZERO, ZERO, ZERO, ZERO), 0);
+
+  i915_emit_arith(p,
+  A0_SLT,
+ 

Mesa (master): i915g: implement TGSI_OPCODE_SEQ.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 0f091333d1ef403a67a8639ac13d9a9bbe93092a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f091333d1ef403a67a8639ac13d9a9bbe93092a

Author: Stéphane Marchesin 
Date:   Fri Jun  3 18:57:16 2011 -0700

i915g: implement TGSI_OPCODE_SEQ.

---

 src/gallium/drivers/i915/i915_fpc_translate.c |   28 +
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c 
b/src/gallium/drivers/i915/i915_fpc_translate.c
index 9f3c766..695a396 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -852,6 +852,34 @@ i915_translate_instruction(struct i915_fp_compile *p,
   emit_simple_arith_swap2(p, inst, A0_SLT, 2);
   break;
 
+   case TGSI_OPCODE_SEQ:
+  /* if we're both >= and <= then we're == */
+  src0 = src_vector(p, &inst->Src[0]);
+  src1 = src_vector(p, &inst->Src[1]);
+  tmp = i915_get_utemp(p);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  tmp, A0_DEST_CHANNEL_ALL, 0,
+  src0,
+  src1, 0);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  src1,
+  src0, 0);
+
+  i915_emit_arith(p,
+  A0_MUL,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  get_result_vector(p, &inst->Dst[0]),
+  tmp, 0);
+
+  break;
+
case TGSI_OPCODE_SUB:
   src0 = src_vector(p, &inst->Src[0]);
   src1 = src_vector(p, &inst->Src[1]);

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


Mesa (master): i915g: handle varyings properly.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 0ce977a66e65ce862f5b29ded6098de91464f304
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ce977a66e65ce862f5b29ded6098de91464f304

Author: Stéphane Marchesin 
Date:   Fri Jun  3 17:06:59 2011 -0700

i915g: handle varyings properly.

---

 src/gallium/drivers/i915/i915_fpc_translate.c |   10 +++-
 src/gallium/drivers/i915/i915_state_derived.c |   26 ++--
 2 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c 
b/src/gallium/drivers/i915/i915_fpc_translate.c
index b145b58..9f3c766 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -192,8 +192,14 @@ src_vector(struct i915_fp_compile *p,
  src = swizzle(src, W, W, W, W);
  break;
   case TGSI_SEMANTIC_GENERIC:
- /* usually a texcoord */
- src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, D0_CHANNEL_ALL);
+ if (sem_ind < 8)
+/* a texcoord */
+src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, 
D0_CHANNEL_ALL);
+ else if ( (sem_ind >= 10) && (sem_ind < 18) )
+/* a varying */
+src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind - 10, 
D0_CHANNEL_ALL);
+ else
+debug_printf("%s: unhandled generic %d\n", __func__, sem_ind);
  break;
   default:
  i915_program_error(p, "Bad source->Index");
diff --git a/src/gallium/drivers/i915/i915_state_derived.c 
b/src/gallium/drivers/i915/i915_state_derived.c
index 59ac2f7..47bea8b 100644
--- a/src/gallium/drivers/i915/i915_state_derived.c
+++ b/src/gallium/drivers/i915/i915_state_derived.c
@@ -46,12 +46,12 @@ static void calculate_vertex_layout(struct i915_context 
*i915)
const struct i915_fragment_shader *fs = i915->fs;
const enum interp_mode colorInterp = i915->rasterizer->color_interp;
struct vertex_info vinfo;
-   boolean texCoords[8], colors[2], fog, needW;
+   boolean texCoords[8], colors[2], fog, needW, have_varyings;
uint i;
int src;
 
memset(texCoords, 0, sizeof(texCoords));
-   colors[0] = colors[1] = fog = needW = FALSE;
+   colors[0] = colors[1] = fog = needW = have_varyings = FALSE;
memset(&vinfo, 0, sizeof(vinfo));
 
/* Determine which fragment program inputs are needed.  Setup HW vertex
@@ -66,10 +66,19 @@ static void calculate_vertex_layout(struct i915_context 
*i915)
  colors[fs->info.input_semantic_index[i]] = TRUE;
  break;
   case TGSI_SEMANTIC_GENERIC:
- /* usually a texcoord */
  {
-const uint unit = fs->info.input_semantic_index[i];
+/* texcoords/varyings */
+/* XXX handle back/front face and point size */
+uint unit = fs->info.input_semantic_index[i];
+
+/* Route varyings as tex coords */
+if ( (unit >= 10) && (unit < 18) ) {
+   have_varyings = TRUE;
+   unit -= 10;
+}
+
 assert(unit < 8);
+
 texCoords[unit] = TRUE;
 needW = TRUE;
  }
@@ -82,7 +91,7 @@ static void calculate_vertex_layout(struct i915_context *i915)
   }
}
 
-   
+
/* pos */
src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_POSITION, 0);
if (needW) {
@@ -120,12 +129,15 @@ static void calculate_vertex_layout(struct i915_context 
*i915)
   vinfo.hwfmt[0] |= S4_VFMT_FOG_PARAM;
}
 
-   /* texcoords */
+   /* texcoords/varyings */
for (i = 0; i < 8; i++) {
   uint hwtc;
   if (texCoords[i]) {
  hwtc = TEXCOORDFMT_4D;
- src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, i);
+ if (!have_varyings)
+src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, 
i);
+ else
+src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, i 
+ 10);
  draw_emit_vertex_attr(&vinfo, EMIT_4F, INTERP_PERSPECTIVE, src);
   }
   else {

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


Mesa (master): i915g: add missing and unsupported PIPE_CAPs to avoid debug messages.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 893b92adffe25a42468cb310dc5d13642472f0cb
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=893b92adffe25a42468cb310dc5d13642472f0cb

Author: Stéphane Marchesin 
Date:   Fri Jun  3 17:03:37 2011 -0700

i915g: add missing and unsupported PIPE_CAPs to avoid debug messages.

---

 src/gallium/drivers/i915/i915_screen.c |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_screen.c 
b/src/gallium/drivers/i915/i915_screen.c
index da96b42..c86baa5 100644
--- a/src/gallium/drivers/i915/i915_screen.c
+++ b/src/gallium/drivers/i915/i915_screen.c
@@ -134,6 +134,11 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap 
cap)
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
case PIPE_CAP_TEXTURE_SWIZZLE:
case PIPE_CAP_TIMER_QUERY:
+   case PIPE_CAP_SM3:
+   case PIPE_CAP_SEAMLESS_CUBE_MAP:
+   case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
+   case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL:
+   case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
   return 0;
 
/* Features we can lie about (boolean caps). */

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


Mesa (master): Gallium: fix indentation in u_blitter.c

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: cec2082ae515bc91e6b29084ba4b8deac28ef923
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cec2082ae515bc91e6b29084ba4b8deac28ef923

Author: Stéphane Marchesin 
Date:   Wed Jun  1 20:51:59 2011 -0700

Gallium: fix indentation in u_blitter.c

---

 src/gallium/auxiliary/util/u_blitter.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c 
b/src/gallium/auxiliary/util/u_blitter.c
index a4c3990..528f344 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -770,7 +770,7 @@ void util_blitter_copy_region(struct blitter_context 
*blitter,
 
/* Check if we can sample from and render to the surfaces. */
/* (assuming copying a stencil buffer is not possible) */
-if ((!ignore_stencil && is_stencil) ||
+   if ((!ignore_stencil && is_stencil) ||
!screen->is_format_supported(screen, dst->format, dst->target,
 dst->nr_samples, bind) ||
!screen->is_format_supported(screen, src->format, src->target,

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


Mesa (master): dri2: protect dri2FlushFrontBuffer against NULL buffers.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 3d3ecb8520ccca0863026a94e7fda9840aff6c0a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d3ecb8520ccca0863026a94e7fda9840aff6c0a

Author: Stéphane Marchesin 
Date:   Fri Jun  3 17:03:09 2011 -0700

dri2: protect dri2FlushFrontBuffer against NULL buffers.

---

 src/glx/dri2_glx.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 69b47ae..506754c 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -457,6 +457,12 @@ static void
 dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate)
 {
struct dri2_drawable *pdraw = loaderPrivate;
+   if (!pdraw)
+  return;
+
+   if (!pdraw->base.psc)
+  return;
+
struct glx_display *priv = __glXInitialize(pdraw->base.psc->dpy);
struct dri2_display *pdp = (struct dri2_display *)priv->dri2Display;
struct glx_context *gc = __glXGetCurrentContext();

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


Mesa (master): i915g: don't destroy a texture buffer if it's NULL.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 3103c08ae91f6bcd42a223a5fe7f9d38746565c4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3103c08ae91f6bcd42a223a5fe7f9d38746565c4

Author: Stéphane Marchesin 
Date:   Wed Jun  1 15:32:39 2011 -0700

i915g: don't destroy a texture buffer if it's NULL.

---

 src/gallium/drivers/i915/i915_resource_texture.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_resource_texture.c 
b/src/gallium/drivers/i915/i915_resource_texture.c
index e05b059..b74b19d 100644
--- a/src/gallium/drivers/i915/i915_resource_texture.c
+++ b/src/gallium/drivers/i915/i915_resource_texture.c
@@ -700,7 +700,8 @@ i915_texture_destroy(struct pipe_screen *screen,
struct i915_winsys *iws = i915_screen(screen)->iws;
uint i;
 
-   iws->buffer_destroy(iws, tex->buffer);
+   if (tex->buffer)
+  iws->buffer_destroy(iws, tex->buffer);
 
for (i = 0; i < Elements(tex->image_offset); i++)
   if (tex->image_offset[i])

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


Mesa (master): llvmpipe: use $(CXX) instead of g++ for linking.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: master
Commit: 1af8b7250f477cfb36cbd8d4885f0cfb9a2e9779
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1af8b7250f477cfb36cbd8d4885f0cfb9a2e9779

Author: Stéphane Marchesin 
Date:   Wed Jun  1 10:37:13 2011 -0700

llvmpipe: use $(CXX) instead of g++ for linking.

This allows setting the path to the C++ compiler.

---

 src/gallium/drivers/llvmpipe/Makefile |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/Makefile 
b/src/gallium/drivers/llvmpipe/Makefile
index 4068bed..ba9705b 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -71,7 +71,7 @@ lp_tile_soa.c: lp_tile_soa.py 
../../auxiliary/util/u_format_parse.py ../../auxil
 
 LDFLAGS += $(LLVM_LDFLAGS)
 LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS)
-LD=g++
+LD=$(CXX)
 
 $(PROGS): lp_test_main.o libllvmpipe.a
 

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


Mesa (glx2): i915g: implement more opcodes.

2011-06-06 Thread Stephane Marchesin
Module: Mesa
Branch: glx2
Commit: 2292025c49f2165b59f578c926d320913b08b1b5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2292025c49f2165b59f578c926d320913b08b1b5

Author: Stéphane Marchesin 
Date:   Mon Jun  6 12:32:17 2011 -0700

i915g: implement more opcodes.

---

 src/gallium/drivers/i915/i915_fpc_translate.c |   94 +---
 1 files changed, 82 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c 
b/src/gallium/drivers/i915/i915_fpc_translate.c
index 695a396..51766cd 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -501,6 +501,17 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_const4fv(p, cos_constants), 0);
   break;
 
+  case TGSI_OPCODE_DP2:
+  src0 = src_vector(p, &inst->Src[0]);
+  src1 = src_vector(p, &inst->Src[1]);
+
+  i915_emit_arith(p,
+  A0_DP3,
+  get_result_vector(p, &inst->Dst[0]),
+  get_result_flags(inst), 0,
+  swizzle(src0, X, Y, ZERO, ZERO), src1, 0);
+  break;
+
case TGSI_OPCODE_DP3:
   emit_simple_arith(p, inst, A0_DP3, 2);
   break;
@@ -706,7 +717,7 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_arith(p,
   A0_RCP,
   get_result_vector(p, &inst->Dst[0]),
- get_result_flags(inst), 0,
+  get_result_flags(inst), 0,
   swizzle(src0, X, X, X, X), 0, 0);
   break;
 
@@ -784,13 +795,36 @@ i915_translate_instruction(struct i915_fp_compile *p,
   }
   break;
 
-   case TGSI_OPCODE_SGE:
-  emit_simple_arith(p, inst, A0_SGE, 2);
+   case TGSI_OPCODE_SEQ:
+  /* if we're both >= and <= then we're == */
+  src0 = src_vector(p, &inst->Src[0]);
+  src1 = src_vector(p, &inst->Src[1]);
+  tmp = i915_get_utemp(p);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  tmp, A0_DEST_CHANNEL_ALL, 0,
+  src0,
+  src1, 0);
+
+  i915_emit_arith(p,
+  A0_SGE,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  src1,
+  src0, 0);
+
+  i915_emit_arith(p,
+  A0_MUL,
+  get_result_vector(p, &inst->Dst[0]),
+  A0_DEST_CHANNEL_ALL, 0,
+  get_result_vector(p, &inst->Dst[0]),
+  tmp, 0);
+
   break;
 
-   case TGSI_OPCODE_SLE:
-  /* like SGE, but swap reg0, reg1 */
-  emit_simple_arith_swap2(p, inst, A0_SGE, 2);
+   case TGSI_OPCODE_SGE:
+  emit_simple_arith(p, inst, A0_SGE, 2);
   break;
 
case TGSI_OPCODE_SIN:
@@ -843,6 +877,11 @@ i915_translate_instruction(struct i915_fp_compile *p,
   i915_emit_const4fv(p, sin_constants), 0);
   break;
 
+   case TGSI_OPCODE_SLE:
+  /* like SGE, but swap reg0, reg1 */
+  emit_simple_arith_swap2(p, inst, A0_SGE, 2);
+  break;
+
case TGSI_OPCODE_SLT:
   emit_simple_arith(p, inst, A0_SLT, 2);
   break;
@@ -852,32 +891,59 @@ i915_translate_instruction(struct i915_fp_compile *p,
   emit_simple_arith_swap2(p, inst, A0_SLT, 2);
   break;
 
-   case TGSI_OPCODE_SEQ:
-  /* if we're both >= and <= then we're == */
+   case TGSI_OPCODE_SNE:
+  /* if we're neither < nor > then we're != */
   src0 = src_vector(p, &inst->Src[0]);
   src1 = src_vector(p, &inst->Src[1]);
   tmp = i915_get_utemp(p);
 
   i915_emit_arith(p,
-  A0_SGE,
-  tmp, A0_DEST_CHANNEL_ALL, 0,
+  A0_SLT,
+  tmp,
+  A0_DEST_CHANNEL_ALL, 0,
   src0,
   src1, 0);
 
   i915_emit_arith(p,
-  A0_SGE,
+  A0_SLT,
   get_result_vector(p, &inst->Dst[0]),
   A0_DEST_CHANNEL_ALL, 0,
   src1,
   src0, 0);
 
   i915_emit_arith(p,
-  A0_MUL,
+  A0_ADD,
   get_result_vector(p, &inst->Dst[0]),
   A0_DEST_CHANNEL_ALL, 0,
   get_result_vector(p, &inst->Dst[0]),
   tmp, 0);
+  break;
 
+   case TGSI_OPCODE_SSG:
+  /* compute (src>0) - (src<0) */
+  src0 = src_vector(p, &inst->Src[0]);
+  tmp = i915_get_utemp(p);
+
+  i915_emit_arith(p,
+  A0_SLT,
+  tmp,
+  A0_DEST_CHANNEL_ALL, 0,
+  src0,
+  swizzle(src0, ZERO, ZERO, ZERO, ZERO), 0);
+
+  i915_emit_arith(p,
+  A0_SLT,
+   

Mesa (master): i965: Update SURFACE_STATE dumping for Ivybridge.

2011-06-06 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: c2e659037f4d0687e948e3d17f2d950d3e2dae1b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2e659037f4d0687e948e3d17f2d950d3e2dae1b

Author: Kenneth Graunke 
Date:   Tue May 17 14:37:18 2011 -0700

i965: Update SURFACE_STATE dumping for Ivybridge.

Signed-off-by: Kenneth Graunke 

---

 src/mesa/drivers/dri/i965/brw_state_dump.c |   46 ++--
 1 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c 
b/src/mesa/drivers/dri/i965/brw_state_dump.c
index 6d2d54f..ff06cb3 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -141,6 +141,44 @@ static void dump_wm_surface_state(struct brw_context *brw)
drm_intel_bo_unmap(bo);
 }
 
+static void dump_gen7_surface_state(struct brw_context *brw)
+{
+   dri_bo *bo;
+   GLubyte *base;
+   int i;
+
+   bo = brw->intel.batch.bo;
+   drm_intel_bo_map(bo, GL_FALSE);
+   base = bo->virtual;
+
+   for (i = 0; i < brw->wm.nr_surfaces; i++) {
+  unsigned int surfoff;
+  struct gen7_surface_state *surf;
+  char name[20];
+
+  if (brw->wm.surf_offset[i] == 0) {
+fprintf(stderr, "WM SURF%d: NULL\n", i);
+continue;
+  }
+  surfoff = bo->offset + brw->wm.surf_offset[i];
+  surf = (struct gen7_surface_state *) (base + brw->wm.surf_offset[i]);
+
+  sprintf(name, "WM SURF%d", i);
+  state_out(name, surf, surfoff, 0, "%s %s\n",
+   get_965_surfacetype(surf->ss0.surface_type),
+   get_965_surface_format(surf->ss0.surface_format));
+  state_out(name, surf, surfoff, 1, "offset\n");
+  state_out(name, surf, surfoff, 2, "%dx%d size, %d mips\n",
+   surf->ss2.width + 1, surf->ss2.height + 1, surf->ss5.mip_count);
+  state_out(name, surf, surfoff, 3, "pitch %d, %stiled\n",
+   surf->ss3.pitch + 1, surf->ss0.tiled_surface ? "" : "not ");
+  state_out(name, surf, surfoff, 4, "mip base %d\n",
+   surf->ss5.min_lod);
+  state_out(name, surf, surfoff, 5, "x,y offset: %d,%d\n",
+   surf->ss5.x_offset, surf->ss5.y_offset);
+   }
+   drm_intel_bo_unmap(bo);
+}
 
 static void dump_wm_sampler_state(struct brw_context *brw)
 {
@@ -469,11 +507,13 @@ void brw_debug_batch(struct intel_context *intel)
brw->intel.batch.bo,
brw->wm.bind_bo_offset,
4 * brw->wm.nr_surfaces);
-   dump_wm_surface_state(brw);
-   if (intel->gen < 7)
+   if (intel->gen < 7) {
+  dump_wm_surface_state(brw);
   dump_wm_sampler_state(brw);
-   else
+   } else {
+  dump_gen7_surface_state(brw);
   dump_gen7_sampler_state(brw);
+   }
 
if (intel->gen < 6)
state_struct_out("VS", intel->batch.bo, brw->vs.state_offset,

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


Mesa (master): i965: Update SAMPLER_STATE dumping for Ivybridge.

2011-06-06 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 4ba9cfe4b8b9690ec3d9e62dd2a15616428339ac
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ba9cfe4b8b9690ec3d9e62dd2a15616428339ac

Author: Kenneth Graunke 
Date:   Tue May 17 14:22:16 2011 -0700

i965: Update SAMPLER_STATE dumping for Ivybridge.

Signed-off-by: Kenneth Graunke 

---

 src/mesa/drivers/dri/i965/brw_state_dump.c |   54 +++-
 1 files changed, 53 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c 
b/src/mesa/drivers/dri/i965/brw_state_dump.c
index b520e64..6d2d54f 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -148,6 +148,8 @@ static void dump_wm_sampler_state(struct brw_context *brw)
struct gl_context *ctx = &brw->intel.ctx;
int i;
 
+   assert(intel->gen < 7);
+
drm_intel_bo_map(intel->batch.bo, GL_FALSE);
for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
   unsigned int offset;
@@ -203,6 +205,53 @@ static void dump_wm_sampler_state(struct brw_context *brw)
drm_intel_bo_unmap(intel->batch.bo);
 }
 
+static void dump_gen7_sampler_state(struct brw_context *brw)
+{
+   struct intel_context *intel = &brw->intel;
+   struct gl_context *ctx = &brw->intel.ctx;
+   int i;
+
+   assert(intel->gen >= 7);
+
+   drm_intel_bo_map(intel->batch.bo, GL_FALSE);
+   for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
+  unsigned int offset;
+  uint32_t sdc_offset;
+  struct gen7_sampler_state *samp;
+  char name[20];
+
+  if (!ctx->Texture.Unit[i]._ReallyEnabled) {
+fprintf(stderr, "WM SAMP%d: disabled\n", i);
+continue;
+  }
+
+  offset = (intel->batch.bo->offset +
+   brw->wm.sampler_offset +
+   i * sizeof(struct gen7_sampler_state));
+  samp = (struct gen7_sampler_state *)
+(intel->batch.bo->virtual + brw->wm.sampler_offset +
+ i * sizeof(struct gen7_sampler_state));
+
+  sprintf(name, "WM SAMP%d", i);
+  state_out(name, samp, offset, 0, "filtering\n");
+  state_out(name, samp, offset, 1, "wrapping, lod\n");
+  state_out(name, samp, offset, 2, "default color pointer\n");
+  state_out(name, samp, offset, 3, "chroma key, aniso\n");
+
+  sprintf(name, " WM SDC%d", i);
+
+  sdc_offset = intel->batch.bo->offset + brw->wm.sdc_offset[i];
+  struct brw_sampler_default_color *sdc =
+intel->batch.bo->virtual + brw->wm.sdc_offset[i];
+  state_out(name, sdc, sdc_offset, 0, "r %f\n", sdc->color[0]);
+  state_out(name, sdc, sdc_offset, 1, "g %f\n", sdc->color[1]);
+  state_out(name, sdc, sdc_offset, 2, "b %f\n", sdc->color[2]);
+  state_out(name, sdc, sdc_offset, 3, "a %f\n", sdc->color[3]);
+   }
+   drm_intel_bo_unmap(intel->batch.bo);
+}
+
+
 static void dump_sf_viewport_state(struct brw_context *brw)
 {
struct intel_context *intel = &brw->intel;
@@ -421,7 +470,10 @@ void brw_debug_batch(struct intel_context *intel)
brw->wm.bind_bo_offset,
4 * brw->wm.nr_surfaces);
dump_wm_surface_state(brw);
-   dump_wm_sampler_state(brw);
+   if (intel->gen < 7)
+  dump_wm_sampler_state(brw);
+   else
+  dump_gen7_sampler_state(brw);
 
if (intel->gen < 6)
state_struct_out("VS", intel->batch.bo, brw->vs.state_offset,

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


Mesa (master): i965: Update SF_CLIP_VIEWPORT state dumping for Ivybridge.

2011-06-06 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: f9a3200adb1bc70f789c829661a92e3d24023dcf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9a3200adb1bc70f789c829661a92e3d24023dcf

Author: Kenneth Graunke 
Date:   Tue May 17 14:28:20 2011 -0700

i965: Update SF_CLIP_VIEWPORT state dumping for Ivybridge.

Signed-off-by: Kenneth Graunke 

---

 src/mesa/drivers/dri/i965/brw_state_dump.c |   40 ++-
 1 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c 
b/src/mesa/drivers/dri/i965/brw_state_dump.c
index ef58619..b520e64 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -210,6 +210,8 @@ static void dump_sf_viewport_state(struct brw_context *brw)
struct brw_sf_viewport *vp;
uint32_t vp_off;
 
+   assert(intel->gen < 7);
+
drm_intel_bo_map(intel->batch.bo, GL_FALSE);
 
vp = intel->batch.bo->virtual + brw->sf.vp_offset;
@@ -237,6 +239,8 @@ static void dump_clip_viewport_state(struct brw_context 
*brw)
struct brw_clipper_viewport *vp;
uint32_t vp_off;
 
+   assert(intel->gen < 7);
+
drm_intel_bo_map(intel->batch.bo, GL_FALSE);
 
vp = intel->batch.bo->virtual + brw->clip.vp_offset;
@@ -249,6 +253,34 @@ static void dump_clip_viewport_state(struct brw_context 
*brw)
drm_intel_bo_unmap(intel->batch.bo);
 }
 
+static void dump_sf_clip_viewport_state(struct brw_context *brw)
+{
+   struct intel_context *intel = &brw->intel;
+   const char *name = "SF_CLIP VP";
+   struct gen7_sf_clip_viewport *vp;
+   uint32_t vp_off;
+
+   assert(intel->gen >= 7);
+
+   drm_intel_bo_map(intel->batch.bo, GL_FALSE);
+
+   vp = intel->batch.bo->virtual + brw->sf.vp_offset;
+   vp_off = intel->batch.bo->offset + brw->sf.vp_offset;
+
+   state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00);
+   state_out(name, vp, vp_off, 1, "m11 = %f\n", vp->viewport.m11);
+   state_out(name, vp, vp_off, 2, "m22 = %f\n", vp->viewport.m22);
+   state_out(name, vp, vp_off, 3, "m30 = %f\n", vp->viewport.m30);
+   state_out(name, vp, vp_off, 4, "m31 = %f\n", vp->viewport.m31);
+   state_out(name, vp, vp_off, 5, "m32 = %f\n", vp->viewport.m32);
+   state_out(name, vp, vp_off, 6, "guardband xmin = %f\n", vp->guardband.xmin);
+   state_out(name, vp, vp_off, 7, "guardband xmax = %f\n", vp->guardband.xmax);
+   state_out(name, vp, vp_off, 8, "guardband ymin = %f\n", vp->guardband.ymin);
+   state_out(name, vp, vp_off, 9, "guardband ymax = %f\n", vp->guardband.ymax);
+   drm_intel_bo_unmap(intel->batch.bo);
+}
+
+
 static void dump_cc_viewport_state(struct brw_context *brw)
 {
struct intel_context *intel = &brw->intel;
@@ -406,7 +438,12 @@ void brw_debug_batch(struct intel_context *intel)
   sizeof(struct brw_sf_unit_state));
   brw_debug_prog("SF prog", brw->sf.prog_bo);
}
-   dump_sf_viewport_state(brw);
+   if (intel->gen >= 7)
+  dump_sf_clip_viewport_state(brw);
+   else
+  dump_sf_viewport_state(brw);
+   if (intel->gen == 6)
+  dump_clip_viewport_state(brw);
 
if (intel->gen < 6)
state_struct_out("WM", intel->batch.bo, brw->wm.state_offset,
@@ -415,7 +452,6 @@ void brw_debug_batch(struct intel_context *intel)
 
if (intel->gen >= 6) {
dump_cc_viewport_state(brw);
-   dump_clip_viewport_state(brw);
dump_depth_stencil_state(brw);
dump_cc_state(brw);
dump_blend_state(brw);

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


Mesa (7.10): apple: Package applegl source into MesaLib tarball

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 1a79cde8fa6c03704bc602d072876a396abddd3e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a79cde8fa6c03704bc602d072876a396abddd3e

Author: Jeremy Huddleston 
Date:   Mon Jun  6 12:48:08 2011 -0400

apple: Package applegl source into MesaLib tarball

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit e5d241ddb231758e0a0f41eee28435d170d583c0)

---

 Makefile |   12 
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 52c0b95..c84e384 100644
--- a/Makefile
+++ b/Makefile
@@ -353,12 +353,24 @@ GALLIUM_FILES = \
$(DIRECTORY)/src/gallium/*/*/*/*.[ch]   \
$(DIRECTORY)/src/gallium/*/*/*/*.py
 
+APPLE_DRI_FILES = \
+   $(DIRECTORY)/src/glx/apple/Makefile \
+   $(DIRECTORY)/src/glx/apple/*.[ch]   \
+   $(DIRECTORY)/src/glx/apple/*.tcl\
+   $(DIRECTORY)/src/glx/apple/apple_exports.list   \
+   $(DIRECTORY)/src/glx/apple/GL_aliases   \
+   $(DIRECTORY)/src/glx/apple/GL_extensions\
+   $(DIRECTORY)/src/glx/apple/GL_noop  \
+   $(DIRECTORY)/src/glx/apple/GL_promoted  \
+   $(DIRECTORY)/src/glx/apple/specs/*.spec \
+   $(DIRECTORY)/src/glx/apple/specs/*.tm
 
 DRI_FILES = \
$(DIRECTORY)/include/GL/internal/dri_interface.h\
$(DIRECTORY)/include/GL/internal/sarea.h\
$(DIRECTORY)/src/glx/Makefile   \
$(DIRECTORY)/src/glx/*.[ch] \
+   $(APPLE_DRI_FILES)  \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile  \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \
$(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \

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


Mesa (master): apple: Package applegl source into MesaLib tarball

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: master
Commit: e5d241ddb231758e0a0f41eee28435d170d583c0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5d241ddb231758e0a0f41eee28435d170d583c0

Author: Jeremy Huddleston 
Date:   Mon Jun  6 12:48:08 2011 -0400

apple: Package applegl source into MesaLib tarball

Signed-off-by: Jeremy Huddleston 

---

 Makefile |   12 
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 7a5dae7..f3c0a20 100644
--- a/Makefile
+++ b/Makefile
@@ -364,12 +364,24 @@ GALLIUM_FILES = \
$(DIRECTORY)/src/gallium/*/*/*/*.[ch]   \
$(DIRECTORY)/src/gallium/*/*/*/*.py
 
+APPLE_DRI_FILES = \
+   $(DIRECTORY)/src/glx/apple/Makefile \
+   $(DIRECTORY)/src/glx/apple/*.[ch]   \
+   $(DIRECTORY)/src/glx/apple/*.tcl\
+   $(DIRECTORY)/src/glx/apple/apple_exports.list   \
+   $(DIRECTORY)/src/glx/apple/GL_aliases   \
+   $(DIRECTORY)/src/glx/apple/GL_extensions\
+   $(DIRECTORY)/src/glx/apple/GL_noop  \
+   $(DIRECTORY)/src/glx/apple/GL_promoted  \
+   $(DIRECTORY)/src/glx/apple/specs/*.spec \
+   $(DIRECTORY)/src/glx/apple/specs/*.tm
 
 DRI_FILES = \
$(DIRECTORY)/include/GL/internal/dri_interface.h\
$(DIRECTORY)/include/GL/internal/sarea.h\
$(DIRECTORY)/src/glx/Makefile   \
$(DIRECTORY)/src/glx/*.[ch] \
+   $(APPLE_DRI_FILES)  \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile  \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \
$(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \

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


Mesa (7.10): darwin: Define GALLIUM_DRIVERS_DIRS in darwin config

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 4d934efa193a2c3c37e59cfbf5ce68e195868664
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d934efa193a2c3c37e59cfbf5ce68e195868664

Author: Jeremy Huddleston 
Date:   Mon Jun  6 11:38:05 2011 -0400

darwin: Define GALLIUM_DRIVERS_DIRS in darwin config

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit d563009cd1134557178c29d45b664e58bbed)

---

 configs/darwin |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/configs/darwin b/configs/darwin
index 9906107..9c126ea 100644
--- a/configs/darwin
+++ b/configs/darwin
@@ -57,3 +57,5 @@ GLU_DIRS = sgi
 DRIVER_DIRS = osmesa
 #DRIVER_DIRS = dri
 DRI_DIRS = swrast
+GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover
+#GALLIUM_DRIVERS_DIRS += llvmpipe

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


Mesa (7.10): apple: Fix build failures in applegl_glx.c

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: aba30d8fbea49266cfa6d55a40d4f612ed8b4816
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aba30d8fbea49266cfa6d55a40d4f612ed8b4816

Author: Jeremy Huddleston 
Date:   Sun Jun  5 21:19:40 2011 -0400

apple: Fix build failures in applegl_glx.c

See https://bugs.freedesktop.org/show_bug.cgi?id=29162

Signed-off-by: Jeremy Huddleston 

This commit squashes three cherry-picks:
(cherry picked from commit 5d35343d12ab462100c9eec50a579b73463e465a)
(cherry picked from commit 7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7)
(cherry picked from commit 2ee5272e1671aff8c8d9e0c12bf37ed006717283)

---

 src/glx/apple/Makefile |3 ++-
 src/glx/applegl_glx.c  |   45 +
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile
index 757e811..1196701 100644
--- a/src/glx/apple/Makefile
+++ b/src/glx/apple/Makefile
@@ -49,7 +49,8 @@ SOURCES = \
../glxextensions.c \
glxreply.c \
../pixel.c \
-   ../xfont.c
+   ../xfont.c \
+   ../applegl_glx.c
 
 include $(TOP)/src/mesa/sources.mak
 
diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c
index 3da1f19..9b8605f 100644
--- a/src/glx/applegl_glx.c
+++ b/src/glx/applegl_glx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2010 Intel Corporation
+ * Copyright © 2011 Apple Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Soft-
@@ -32,6 +33,13 @@
 
 #if defined(GLX_USE_APPLEGL)
 
+#include 
+
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_glx.h"
+#include "glx_error.h"
+
 static void
 applegl_destroy_context(struct glx_context *gc)
 {
@@ -42,13 +50,14 @@ static int
 applegl_bind_context(struct glx_context *gc, struct glx_context *old,
 GLXDrawable draw, GLXDrawable read)
 {
+   Display *dpy = gc->psc->dpy;
bool error = apple_glx_make_current_context(dpy,
-  (oldGC && oldGC != 
&dummyContext) ? oldGC->driContext : NUL~
+  (old && old != &dummyContext) ? 
old->driContext : NULL,
   gc ? gc->driContext : NULL, 
draw);
 
apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO");
if (error)
-  return GLXBadContext;
+  return 1; /* GLXBadContext is the same as Success (0) */
 
return Success;
 }
@@ -67,7 +76,8 @@ applegl_wait_gl(struct glx_context *gc)
 static void
 applegl_wait_x(struct glx_context *gc)
 {
-   apple_glx_waitx(gc->dpy, gc->driContext);
+   Display *dpy = gc->psc->dpy;
+   apple_glx_waitx(dpy, gc->driContext);
 }
 
 static const struct glx_context_vtable applegl_context_vtable = {
@@ -81,24 +91,25 @@ static const struct glx_context_vtable 
applegl_context_vtable = {
NULL, /* release_tex_image, */
 };
 
-static struct glx_context *
+struct glx_context *
 applegl_create_context(struct glx_screen *psc,
-  struct glx_config *mode,
+  struct glx_config *config,
   struct glx_context *shareList, int renderType)
 {
struct glx_context *gc;
int errorcode;
bool x11error;
+   Display *dpy = psc->dpy;
+   int screen = psc->scr;
 
/* TODO: Integrate this with apple_glx_create_context and make
 * struct apple_glx_context inherit from struct glx_context. */
 
-   gc = Xmalloc(sizeof *gc);
-   if (pcp == NULL)
+   gc = Xcalloc(1, sizeof (*gc));
+   if (gc == NULL)
   return NULL;
 
-   memset(gc, 0, sizeof *gc);
-   if (!glx_context_init(&gc->base, &psc->base, mode)) {
+   if (!glx_context_init(gc, psc, config)) {
   Xfree(gc);
   return NULL;
}
@@ -108,7 +119,7 @@ applegl_create_context(struct glx_screen *psc,
gc->do_destroy = False;
 
/* TODO: darwin: Integrate with above to do indirect */
-   if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig, 
+   if(apple_glx_create_context(&gc->driContext, dpy, screen, config, 
   shareList ? shareList->driContext : NULL,
   &errorcode, &x11error)) {
   __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
@@ -117,15 +128,15 @@ applegl_create_context(struct glx_screen *psc,
}
 
gc->currentContextTag = -1;
-   gc->mode = fbconfig;
-   gc->isDirect = allowDirect;
+   gc->config = config;
+   gc->isDirect = GL_TRUE;
gc->xid = 1; /* Just something not None, so we know when to destroy
 * it in MakeContextCurrent. */
 
return gc;
 }
 
-struct glx_screen_vtable appegl_screen_vtable = {
+struct glx_screen_vtable applegl_screen_vtable = {
applegl_create_context
 };
 
@@ -146,10 +157,12 @@ applegl_create_screen(int screen, struct glx_display * 
priv)
 }
 
 _X_HIDDEN int
-applegl_create_display(struct glx_display *display)
+applegl_create_display(struct glx_d

Mesa (7.10): apple: Build darwin using applegl rather than indirect

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 4e18ad9d715fcd24675144b69db1929743f59447
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e18ad9d715fcd24675144b69db1929743f59447

Author: Jeremy Huddleston 
Date:   Sun Jun  5 18:50:55 2011 -0400

apple: Build darwin using applegl rather than indirect

This reverts portions of 6849916170c0275c13510251a7b217c20f2b993e that caused
the darwin config to fail to build due to missing implementations in that
commit.

See https://bugs.freedesktop.org/show_bug.cgi?id=29162

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 1885cf27c9c4642a049c60a8236cb84735cb9eba)

---

 src/glx/glxclient.h |   12 
 src/glx/glxcmds.c   |4 
 src/glx/glxext.c|7 ---
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index c7c8228..2152e16 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -775,7 +775,19 @@ GarbageCollectDRIDrawables(struct glx_screen *psc);
 
 extern __GLXDRIdrawable *
 GetGLXDRIDrawable(Display *dpy, GLXDrawable drawable);
+#endif
+
+#ifdef GLX_USE_APPLEGL
+extern struct glx_screen *
+applegl_create_screen(int screen, struct glx_display * priv);
+
+extern struct glx_context *
+applegl_create_context(struct glx_screen *psc,
+   struct glx_config *mode,
+   struct glx_context *shareList, int renderType);
 
+extern int
+applegl_create_display(struct glx_display *display);
 #endif
 
 extern struct glx_context dummyContext;
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 0d41fe0..55fdeb6 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -228,10 +228,14 @@ CreateContext(Display * dpy, int generic_id,
   return NULL;
 
gc = NULL;
+#ifdef GLX_USE_APPLEGL
+   gc = applegl_create_context(psc, config, shareList, renderType);
+#else
if (allowDirect && psc->vtable->create_context)
   gc = psc->vtable->create_context(psc, config, shareList, renderType);
if (!gc)
   gc = indirect_create_context(psc, config, shareList, renderType);
+#endif
if (!gc)
   return NULL;
 
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 120a4b7..7fd710c 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -769,11 +769,12 @@ AllocAndFetchScreenConfigs(Display * dpy, struct 
glx_display * priv)
 psc = (*priv->driswDisplay->createScreen) (i, priv);
 #endif
 #if defined(GLX_USE_APPLEGL)
-  if (psc == NULL && priv->appleglDisplay)
-psc = (*priv->appleglDisplay->createScreen) (i, priv);
-#endif
+  if (psc == NULL)
+ psc = applegl_create_screen(i, priv);
+#else
   if (psc == NULL)
 psc = indirect_create_screen(i, priv);
+#endif
   priv->screens[i] = psc;
}
SyncHandle();

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


Mesa (7.10): apple: ifdef out come glapi-foo on darwin

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 891ce8aaa875cd196e5754ba302bbfcc90d0fcf2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=891ce8aaa875cd196e5754ba302bbfcc90d0fcf2

Author: Jeremy Huddleston 
Date:   Sun Jun  5 19:57:52 2011 -0400

apple: ifdef out come glapi-foo on darwin

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 8593bb32eae5368c1ba52504133b0bf200bf8e74)

---

 src/glx/glxcurrent.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
index 3631738..ce9d778 100644
--- a/src/glx/glxcurrent.c
+++ b/src/glx/glxcurrent.c
@@ -234,6 +234,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
   return False;
}
 
+#ifndef GLX_USE_APPLEGL
_glapi_check_multithread();
 
if (gc != NULL && gc->thread_id != 0 && gc->thread_id != _glthread_GetID()) 
{
@@ -241,6 +242,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
  BadAccess, X_GLXMakeContextCurrent);
   return False;
}
+#endif
 
if (oldGC == gc &&
gc->currentDrawable == draw && gc->currentReadable == read)
@@ -258,7 +260,9 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
   gc->currentDpy = dpy;
   gc->currentDrawable = draw;
   gc->currentReadable = read;
+#ifndef GLX_USE_APPLEGL
   gc->thread_id = _glthread_GetID();
+#endif
   __glXSetCurrentContext(gc);
   ret = gc->vtable->bind(gc, oldGC, draw, read);
} else {

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


Mesa (7.10): glx: Dead code removal

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 12537b0baf6c7e28ece07bf198342669bc9c5533
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=12537b0baf6c7e28ece07bf198342669bc9c5533

Author: Jeremy Huddleston 
Date:   Sun Jun  5 19:55:51 2011 -0400

glx: Dead code removal

Remove a redundant ifndef GLX_USE_APPLEGL

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 3843bbcb4ca4de232dbae6ba3ae619ddfc93508b)

---

 src/glx/glxcurrent.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
index ce9d778..4b1133c 100644
--- a/src/glx/glxcurrent.c
+++ b/src/glx/glxcurrent.c
@@ -160,12 +160,10 @@ _X_HIDDEN void
 __glXSetCurrentContextNull(void)
 {
__glXSetCurrentContext(&dummyContext);
-#ifndef GLX_USE_APPLEGL
 #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
_glapi_set_dispatch(NULL);   /* no-op functions */
_glapi_set_context(NULL);
 #endif
-#endif
 }
 
 _X_EXPORT GLXContext

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


Mesa (7.10): apple: Change from XExtDisplayInfo to struct glx_display

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 0f11d05e81fde1bd626514b4e3cc8849895d2418
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f11d05e81fde1bd626514b4e3cc8849895d2418

Author: Jeremy Huddleston 
Date:   Sun Jun  5 19:26:19 2011 -0400

apple: Change from XExtDisplayInfo to struct glx_display

Fixes regression introduced by: ab434f6b7641a64d30725a9ac24929240362d466 and
c356f5867f2c1fad7155df538b9affa8dbdcf869

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 7cdf969527fa6d753ad2eb3dd971fe16725eb440)

---

 src/glx/apple/glx_error.c |   10 ++
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c
index b3a071c..d44a80c 100644
--- a/src/glx/apple/glx_error.c
+++ b/src/glx/apple/glx_error.c
@@ -27,22 +27,24 @@
  prior written authorization.
 */
 #include 
+#include 
 #include 
 #include 
 #include 
 #include "glxclient.h"
 #include "glx_error.h"
 
-extern XExtDisplayInfo *__glXFindDisplay(Display * dpy);
-
 void
 __glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
unsigned long minorCode, bool coreX11error)
 {
-   XExtDisplayInfo *info = __glXFindDisplay(dpy);
+   struct glx_display *glx_dpy = __glXInitialize(dpy);
struct glx_context *gc = __glXGetCurrentContext();
xError error;
 
+   assert(glx_dpy);
+   assert(gc);
+
LockDisplay(dpy);
 
error.type = X_Error;
@@ -51,7 +53,7 @@ __glXSendError(Display * dpy, int errorCode, unsigned long 
resourceID,
   error.errorCode = errorCode;
}
else {
-  error.errorCode = info->codes->first_error + errorCode;
+  error.errorCode = glx_dpy->codes->first_error + errorCode;
}
 
error.sequenceNumber = dpy->request;

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


Mesa (7.10): apple: Rename GLXcontext

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 160552511184ff4c89a96a1f799f044ea3ad1006
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=160552511184ff4c89a96a1f799f044ea3ad1006

Author: Jeremy Huddleston 
Date:   Sun Jun  5 18:22:47 2011 -0400

apple: Rename GLXcontext

Fixes regression introduced by: c356f5867f2c1fad7155df538b9affa8dbdcf869

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 279e471750e3ee6a4841ebf16ef2d038e1c12077)

---

 src/glx/glxcmds.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index f26ba1d..0d41fe0 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -710,7 +710,7 @@ _X_EXPORT void
 glXSwapBuffers(Display * dpy, GLXDrawable drawable)
 {
 #ifdef GLX_USE_APPLEGL
-   GLXContext gc = glXGetCurrentContext();
+   struct glx_context * gc = __glXGetCurrentContext();
if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) {
   apple_glx_swap_buffers(gc->driContext);
} else {

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


Mesa (7.10): apple: Rename _gl_context_modes_find_visual to glx_config_find_visual

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: d92931467da389433ca77cdb040a72a6962f9ba4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d92931467da389433ca77cdb040a72a6962f9ba4

Author: Jeremy Huddleston 
Date:   Sun Jun  5 18:19:59 2011 -0400

apple: Rename _gl_context_modes_find_visual to glx_config_find_visual

Fixes regression introduced by: 6ddf66e9230ee862ac341c4767cf6b3b2dd2552b

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit b7f0ed8444544b7fc927823a903db93ebf723cad)

---

 src/glx/glxcmds.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index d9ca3f5..f26ba1d 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -606,7 +606,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap 
pixmap)
struct glx_screen *const psc = GetGLXScreenConfigs(dpy, screen);
const struct glx_config *config;
 
-   config = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
+   config = glx_config_find_visual(psc->visuals, vis->visualid);

if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, config))
   return None;

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


Mesa (7.10): apple: Re-add driContext and do_destroy

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: ee004cc681556b6f305676c66488ebdba933dbd6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee004cc681556b6f305676c66488ebdba933dbd6

Author: Jeremy Huddleston 
Date:   Sun Jun  5 18:02:44 2011 -0400

apple: Re-add driContext and do_destroy

Fixes regression introduced by: c491e585e43d48a2aeec96ccc4008da6c443fb42

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 488d6c739f5b6cdfa2c670322057c699644d4e52)

---

 src/glx/glxclient.h |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index 36a0808..c7c8228 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -341,6 +341,11 @@ struct glx_context
  */
Bool isDirect;
 
+#if defined(GLX_DIRECT_RENDERING) && defined(GLX_USE_APPLEGL)
+   void *driContext;
+   Bool do_destroy;
+#endif
+
 /**
  * \c dpy of current display for this context.  Will be \c NULL if not
  * current to any display, or if this is the "dummy context".

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


Mesa (7.10): apple: Rename GLXcontext

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 60291c079877c6f1441c3d2b1103e90de2c2abd9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=60291c079877c6f1441c3d2b1103e90de2c2abd9

Author: Jeremy Huddleston 
Date:   Sun Jun  5 17:22:56 2011 -0400

apple: Rename GLXcontext

Fixes regression introduced by: c356f5867f2c1fad7155df538b9affa8dbdcf869

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 22613d1670e3aafcfd3b95191b908a0adabe3eb9)

---

 src/glx/apple/apple_xgl_api_read.c |4 ++--
 src/glx/apple/apple_xgl_api_stereo.c   |4 ++--
 src/glx/apple/apple_xgl_api_viewport.c |2 +-
 src/glx/apple/glx_error.c  |2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/glx/apple/apple_xgl_api_read.c 
b/src/glx/apple/apple_xgl_api_read.c
index 0798f45..45850b9 100644
--- a/src/glx/apple/apple_xgl_api_read.c
+++ b/src/glx/apple/apple_xgl_api_read.c
@@ -48,7 +48,7 @@ struct apple_xgl_saved_state
 static void
 SetRead(struct apple_xgl_saved_state *saved)
 {
-   GLXContext gc = __glXGetCurrentContext();
+   struct glx_context *gc = __glXGetCurrentContext();
 
/*
 * By default indicate that the state was not swapped, so that UnsetRead
@@ -81,7 +81,7 @@ static void
 UnsetRead(struct apple_xgl_saved_state *saved)
 {
if (saved->swapped) {
-  GLXContext gc = __glXGetCurrentContext();
+  struct glx_context *gc = __glXGetCurrentContext();
   Display *dpy = glXGetCurrentDisplay();
 
   if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
diff --git a/src/glx/apple/apple_xgl_api_stereo.c 
b/src/glx/apple/apple_xgl_api_stereo.c
index 64a15f7..5637dd4 100644
--- a/src/glx/apple/apple_xgl_api_stereo.c
+++ b/src/glx/apple/apple_xgl_api_stereo.c
@@ -49,7 +49,7 @@ extern struct apple_xgl_api __gl_api;
 void
 glDrawBuffer(GLenum mode)
 {
-   GLXContext gc = glXGetCurrentContext();
+   struct glx_context * gc = __glXGetCurrentContext();
 
if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
   GLenum buf[2];
@@ -84,7 +84,7 @@ glDrawBuffer(GLenum mode)
 void
 glDrawBuffers(GLsizei n, const GLenum * bufs)
 {
-   GLXContext gc = glXGetCurrentContext();
+   struct glx_context * gc = __glXGetCurrentContext();
 
if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
   GLenum newbuf[n + 2];
diff --git a/src/glx/apple/apple_xgl_api_viewport.c 
b/src/glx/apple/apple_xgl_api_viewport.c
index e39ab15..e29eba8 100644
--- a/src/glx/apple/apple_xgl_api_viewport.c
+++ b/src/glx/apple/apple_xgl_api_viewport.c
@@ -36,7 +36,7 @@ extern struct apple_xgl_api __gl_api;
 void
 glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   GLXContext gc = __glXGetCurrentContext();
+   struct glx_context *gc = __glXGetCurrentContext();
Display *dpy = glXGetCurrentDisplay();
 
if (gc && gc->driContext)
diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c
index 282f7ae..b3a071c 100644
--- a/src/glx/apple/glx_error.c
+++ b/src/glx/apple/glx_error.c
@@ -40,7 +40,7 @@ __glXSendError(Display * dpy, int errorCode, unsigned long 
resourceID,
unsigned long minorCode, bool coreX11error)
 {
XExtDisplayInfo *info = __glXFindDisplay(dpy);
-   GLXContext gc = __glXGetCurrentContext();
+   struct glx_context *gc = __glXGetCurrentContext();
xError error;
 
LockDisplay(dpy);

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


Mesa (7.10): apple: Rename __GLcontextModes to struct glx_config

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 56930eccb29189068c15a395fc1cce7320bc5095
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=56930eccb29189068c15a395fc1cce7320bc5095

Author: Jeremy Huddleston 
Date:   Sun Jun  5 17:02:33 2011 -0400

apple: Rename __GLcontextModes to struct glx_config

Fixes regression introduced by: 6ddf66e9230ee862ac341c4767cf6b3b2dd2552b

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit bb621cb61e0c6d7fcd06df5a77c75efe5c76926d)

---

 src/glx/apple/apple_glx_pbuffer.c |2 +-
 src/glx/glx_pbuffer.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/glx/apple/apple_glx_pbuffer.c 
b/src/glx/apple/apple_glx_pbuffer.c
index d79125d..2817cda 100644
--- a/src/glx/apple/apple_glx_pbuffer.c
+++ b/src/glx/apple/apple_glx_pbuffer.c
@@ -128,7 +128,7 @@ apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
Window root;
int screen;
Pixmap xid;
-   struct glx_config *modes = (__GLcontextModes *) config;
+   struct glx_config *modes = (struct glx_config *) config;
 
root = DefaultRootWindow(dpy);
screen = DefaultScreen(dpy);
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c
index 5f91bc6..55f570a 100644
--- a/src/glx/glx_pbuffer.c
+++ b/src/glx/glx_pbuffer.c
@@ -843,7 +843,7 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap 
pixmap,
WARN_ONCE_GLX_1_3(dpy, __func__);
 
 #ifdef GLX_USE_APPLEGL
-   const struct glx_config *modes = (const __GLcontextModes *) config;
+   const struct glx_config *modes = (const struct glx_config *) config;
 
if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes))
   return None;

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


Mesa (7.10): apple: Rename glcontextmodes.[ch] to glxconfig.[ch]

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 6ad7721500d9d6c74cc9018386ccb7f4fbd42600
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ad7721500d9d6c74cc9018386ccb7f4fbd42600

Author: Jeremy Huddleston 
Date:   Sun Jun  5 16:56:01 2011 -0400

apple: Rename glcontextmodes.[ch] to glxconfig.[ch]

Fixes regression introduced by: 65d98e25770487456eb3d7eb8ec3ec8272f170b1

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 4c9bab78a118953baf307e31cd53e731299f0151)

---

 src/glx/apple/Makefile|2 +-
 src/glx/apple/apple_glx_pbuffer.c |2 +-
 src/glx/apple/apple_glx_pixmap.c  |2 +-
 src/glx/apple/apple_visual.c  |2 +-
 src/glx/apple/glx_empty.c |2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile
index fd47b3d..757e811 100644
--- a/src/glx/apple/Makefile
+++ b/src/glx/apple/Makefile
@@ -38,7 +38,7 @@ SOURCES = \
appledri.c \
../clientattrib.c \
../compsize.c \
-   ../glcontextmodes.c \
+   ../glxconfig.c \
glx_empty.c \
glx_error.c \
../glx_pbuffer.c \
diff --git a/src/glx/apple/apple_glx_pbuffer.c 
b/src/glx/apple/apple_glx_pbuffer.c
index a5ef59c..d79125d 100644
--- a/src/glx/apple/apple_glx_pbuffer.c
+++ b/src/glx/apple/apple_glx_pbuffer.c
@@ -44,7 +44,7 @@
 #include 
 #include 
 #include "apple_glx.h"
-#include "glcontextmodes.h"
+#include "glxconfig.h"
 #include "apple_cgl.h"
 
 /* mesa defines in glew.h, Apple in glext.h.
diff --git a/src/glx/apple/apple_glx_pixmap.c b/src/glx/apple/apple_glx_pixmap.c
index fec05e0..4586707 100644
--- a/src/glx/apple/apple_glx_pixmap.c
+++ b/src/glx/apple/apple_glx_pixmap.c
@@ -40,7 +40,7 @@
 #include "apple_visual.h"
 #include "apple_glx_drawable.h"
 #include "appledri.h"
-#include "glcontextmodes.h"
+#include "glxconfig.h"
 
 static bool pixmap_make_current(struct apple_glx_context *ac,
 struct apple_glx_drawable *d);
diff --git a/src/glx/apple/apple_visual.c b/src/glx/apple/apple_visual.c
index 7a9525e..29c6f16 100644
--- a/src/glx/apple/apple_visual.c
+++ b/src/glx/apple/apple_visual.c
@@ -47,7 +47,7 @@
 #include "apple_cgl.h"
 #include "apple_visual.h"
 #include "apple_glx.h"
-#include "glcontextmodes.h"
+#include "glxconfig.h"
 
 enum
 {
diff --git a/src/glx/apple/glx_empty.c b/src/glx/apple/glx_empty.c
index 5967eca..1e9593c 100644
--- a/src/glx/apple/glx_empty.c
+++ b/src/glx/apple/glx_empty.c
@@ -1,6 +1,6 @@
 #include "glxclient.h"
 #include "glxextensions.h"
-#include "glcontextmodes.h"
+#include "glxconfig.h"
 
 /*
 ** GLX_SGI_swap_control

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


Mesa (7.10): apple: Update GL specs

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: 7.10
Commit: 5e1199ff1209ba7c34482b968c43ef7d5dca2678
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1199ff1209ba7c34482b968c43ef7d5dca2678

Author: Jeremy Huddleston 
Date:   Sun Jun  5 17:14:04 2011 -0400

apple: Update GL specs

Signed-off-by: Jeremy Huddleston 
(cherry picked from commit 8e89d0bea7df553a6c937aaa87b1a3c179f69599)

---

 src/glx/apple/specs/enum.spec   |  711 ++-
 src/glx/apple/specs/enumext.spec|  507 +-
 src/glx/apple/specs/gl.spec | 3652 ---
 src/glx/apple/specs/gl.tm   |   12 +-
 src/glx/apple/specs/glxenum.spec|   73 +-
 src/glx/apple/specs/glxenumext.spec |   56 +-
 src/glx/apple/specs/glxext.spec |  166 ++-
 7 files changed, 4738 insertions(+), 439 deletions(-)

Diff:   
http://cgit.freedesktop.org/mesa/mesa/diff/?id=5e1199ff1209ba7c34482b968c43ef7d5dca2678
___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): darwin: Define GALLIUM_DRIVERS_DIRS in darwin config

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: master
Commit: d563009cd1134557178c29d45b664e58bbed
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d563009cd1134557178c29d45b664e58bbed

Author: Jeremy Huddleston 
Date:   Mon Jun  6 11:38:05 2011 -0400

darwin: Define GALLIUM_DRIVERS_DIRS in darwin config

Signed-off-by: Jeremy Huddleston 

---

 configs/darwin |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/configs/darwin b/configs/darwin
index 9906107..9c126ea 100644
--- a/configs/darwin
+++ b/configs/darwin
@@ -57,3 +57,5 @@ GLU_DIRS = sgi
 DRIVER_DIRS = osmesa
 #DRIVER_DIRS = dri
 DRI_DIRS = swrast
+GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover
+#GALLIUM_DRIVERS_DIRS += llvmpipe

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


Mesa (master): apple: Finish build fixes for applegl_glx.c

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: master
Commit: 2ee5272e1671aff8c8d9e0c12bf37ed006717283
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ee5272e1671aff8c8d9e0c12bf37ed006717283

Author: Jeremy Huddleston 
Date:   Mon Jun  6 11:27:19 2011 -0400

apple: Finish build fixes for applegl_glx.c

libGL.dylib now *builds* on darwin.

Signed-off-by: Jeremy Huddleston 

---

 src/glx/applegl_glx.c |5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c
index ff899df..9b8605f 100644
--- a/src/glx/applegl_glx.c
+++ b/src/glx/applegl_glx.c
@@ -99,7 +99,8 @@ applegl_create_context(struct glx_screen *psc,
struct glx_context *gc;
int errorcode;
bool x11error;
-   Display *dpy;
+   Display *dpy = psc->dpy;
+   int screen = psc->scr;
 
/* TODO: Integrate this with apple_glx_create_context and make
 * struct apple_glx_context inherit from struct glx_context. */
@@ -113,8 +114,6 @@ applegl_create_context(struct glx_screen *psc,
   return NULL;
}
 
-   dpy = gc->psc->dpy;
-
gc->vtable = &applegl_context_vtable;
gc->driContext = NULL;
gc->do_destroy = False;

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


Mesa (master): apple: More fixes for compilation failures

2011-06-06 Thread Jeremy Huddleston
Module: Mesa
Branch: master
Commit: 7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7

Author: Jeremy Huddleston 
Date:   Mon Jun  6 11:15:32 2011 -0400

apple: More fixes for compilation failures

Signed-off-by: Jeremy Huddleston 

---

 src/glx/applegl_glx.c |   12 ++--
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c
index 660566f..ff899df 100644
--- a/src/glx/applegl_glx.c
+++ b/src/glx/applegl_glx.c
@@ -52,7 +52,7 @@ applegl_bind_context(struct glx_context *gc, struct 
glx_context *old,
 {
Display *dpy = gc->psc->dpy;
bool error = apple_glx_make_current_context(dpy,
-  (oldGC && oldGC != 
&dummyContext) ? oldGC->driContext : NULL
+  (old && old != &dummyContext) ? 
old->driContext : NULL,
   gc ? gc->driContext : NULL, 
draw);
 
apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO");
@@ -93,7 +93,7 @@ static const struct glx_context_vtable applegl_context_vtable 
= {
 
 struct glx_context *
 applegl_create_context(struct glx_screen *psc,
-  struct glx_config *mode,
+  struct glx_config *config,
   struct glx_context *shareList, int renderType)
 {
struct glx_context *gc;
@@ -108,7 +108,7 @@ applegl_create_context(struct glx_screen *psc,
if (gc == NULL)
   return NULL;
 
-   if (!glx_context_init(gc, psc, mode)) {
+   if (!glx_context_init(gc, psc, config)) {
   Xfree(gc);
   return NULL;
}
@@ -120,7 +120,7 @@ applegl_create_context(struct glx_screen *psc,
gc->do_destroy = False;
 
/* TODO: darwin: Integrate with above to do indirect */
-   if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig, 
+   if(apple_glx_create_context(&gc->driContext, dpy, screen, config, 
   shareList ? shareList->driContext : NULL,
   &errorcode, &x11error)) {
   __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
@@ -129,8 +129,8 @@ applegl_create_context(struct glx_screen *psc,
}
 
gc->currentContextTag = -1;
-   gc->mode = fbconfig;
-   gc->isDirect = 1;
+   gc->config = config;
+   gc->isDirect = GL_TRUE;
gc->xid = 1; /* Just something not None, so we know when to destroy
 * it in MakeContextCurrent. */
 

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


Demos (master): cmake: Fix copy'n'paste typo in earlier commit.

2011-06-06 Thread Jose Fonseca
Module: Demos
Branch: master
Commit: ca34c88302fc476b5e90a20b142532ffc58bc1b5
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=ca34c88302fc476b5e90a20b142532ffc58bc1b5

Author: José Fonseca 
Date:   Mon Jun  6 15:40:55 2011 +0100

cmake: Fix copy'n'paste typo in earlier commit.

---

 CMakeLists.txt |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c1bc27f..c9cc2a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@ endif (UNIX)
 # from the standard OpenGL framework which provides support for GLUT and native
 # Mac OS X applications.
 if (X11_FOUND)
-   if (X11_FOUND)
+   if (APPLE)
find_path (X11_GL_INCLUDE_PATH GL/glx.h ${X11_INC_SEARCH_PATH})
if (NOT X11_GL_INCLUDE_PATH)
message (WARNING "Could not find GL/glx.h")

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


Demos (master): cmake: Build X11 programs on MacOSX.

2011-06-06 Thread Jose Fonseca
Module: Demos
Branch: master
Commit: df8fdd4a5053f5d8dbcdf9991f9ca21e64dece28
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=df8fdd4a5053f5d8dbcdf9991f9ca21e64dece28

Author: José Fonseca 
Date:   Mon Jun  6 15:31:54 2011 +0100

cmake: Build X11 programs on MacOSX.

On Mac OS X, GLX is provided as a separate OpenGL implementation, different
from the standard OpenGL framework which provides support for GLUT and native
Mac OS X applications.

---

 .gitignore   |   27 +--
 CMakeLists.txt   |   30 ++
 src/demos/CMakeLists.txt |4 ++--
 src/fp/CMakeLists.txt|4 ++--
 src/fpglsl/CMakeLists.txt|4 ++--
 src/glsl/CMakeLists.txt  |4 ++--
 src/gs/CMakeLists.txt|4 ++--
 src/objviewer/CMakeLists.txt |4 ++--
 src/perf/CMakeLists.txt  |4 ++--
 src/redbook/CMakeLists.txt   |4 ++--
 src/samples/CMakeLists.txt   |   37 -
 src/samples/oglinfo.c|2 +-
 src/slang/CMakeLists.txt |4 ++--
 src/tests/CMakeLists.txt |   38 +-
 src/tests/getprocaddress.c   |2 +-
 src/tests/jkrahntest.c   |2 +-
 src/tests/sharedtex.c|2 +-
 src/tests/texobjshare.c  |2 +-
 src/tools/trace/gltrace.py   |2 +-
 src/trivial/CMakeLists.txt   |4 ++--
 src/util/CMakeLists.txt  |2 +-
 src/vp/CMakeLists.txt|4 ++--
 src/vpglsl/CMakeLists.txt|4 ++--
 src/xdemos/CMakeLists.txt|9 -
 src/xdemos/corender.c|2 +-
 src/xdemos/glsync.c  |2 +-
 src/xdemos/glthreads.c   |2 +-
 src/xdemos/glxcontexts.c |2 +-
 src/xdemos/glxdemo.c |2 +-
 src/xdemos/glxgears.c|2 +-
 src/xdemos/glxgears_fbconfig.c   |2 +-
 src/xdemos/glxgears_pixmap.c |2 +-
 src/xdemos/glxheads.c|2 +-
 src/xdemos/glxinfo.c |2 +-
 src/xdemos/glxpixmap.c   |2 +-
 src/xdemos/glxsnoop.c|2 +-
 src/xdemos/glxswapcontrol.c  |2 +-
 src/xdemos/manywin.c |2 +-
 src/xdemos/msctest.c |2 +-
 src/xdemos/multictx.c|2 +-
 src/xdemos/omlsync.c |2 +-
 src/xdemos/opencloseopen.c   |2 +-
 src/xdemos/overlay.c |2 +-
 src/xdemos/sharedtex.c   |2 +-
 src/xdemos/sharedtex_mt.c|2 +-
 src/xdemos/texture_from_pixmap.c |2 +-
 src/xdemos/wincopy.c |2 +-
 src/xdemos/xfont.c   |2 +-
 src/xdemos/xrotfontdemo.c|2 +-
 49 files changed, 148 insertions(+), 105 deletions(-)

diff --git a/.gitignore b/.gitignore
index 8fd26e4..67fced9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,9 @@
 .*.sw?
 *.a
+*.bz2
+*.dmg
+*.la
+*.lo
 *.o
 *.obj
 *.os
@@ -7,30 +11,35 @@
 *.pdb
 *.pyc
 *.pyo
-*.la
-*.lo
 *.so
+*.zip
 *~
 .deps
 .libs
-depend
-depend.bak
-cmake_install.cmake
 CMakeCache.txt
 CMakeFiles
-compile
-configure
-autom4te.cache
+CPackConfig.cmake
+CPackSourceConfig.cmake
+Makefile
+Makefile.in
+_CPack_Packages/
 aclocal.m4
+autom4te.cache
 build
+cmake_install.cmake
+compile
 config.guess
 config.log
 config.status
 config.sub
+configure
 configure.lineno
 cscope*
 depcomp
+depend
+depend.bak
 install-sh
+install_manifest.txt
 libtool
 libtool.m4
 ltmain.sh
@@ -39,5 +48,3 @@ ltsugar.m4
 ltversion.m4
 lt~obsolete.m4
 missing
-Makefile
-Makefile.in
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4404bc6..240018d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,36 @@ if (UNIX)
link_libraries(m)
 endif (UNIX)
 
+# On Mac OS X, GLX is provided as a separate OpenGL implementation, different
+# from the standard OpenGL framework which provides support for GLUT and native
+# Mac OS X applications.
+if (X11_FOUND)
+   if (X11_FOUND)
+   find_path (X11_GL_INCLUDE_PATH GL/glx.h ${X11_INC_SEARCH_PATH})
+   if (NOT X11_GL_INCLUDE_PATH)
+   message (WARNING "Could not find GL/glx.h")
+   set (X11_FOUND FALSE)
+   endif (NOT X11_GL_INCLUDE_PATH)
+   set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_GL_INCLUDE_PATH})
+
+   find_library (X11_GL_LIB GL ${X11_LIB_SEARCH_PATH})
+   if (NOT X11_GL_LIB)
+   message (WARNING "Could not find libGL.dylib")
+   set (X11_FOUND FALSE)
+   endif (NOT X11_GL_LIB)
+
+   find_library (X11_GLU_LIB GLU ${X11_LIB_SEARCH_PATH})
+   if (NOT X11_GLU_LIB)
+   message (WARNING "Could not find libGLU.dylib")
+   set (X11_FOUND FALSE)
+   endif (NOT X11_GLU_LIB)
+   else ()
+   set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR} 

Demos (master): cmake: Basic packaging support.

2011-06-06 Thread Jose Fonseca
Module: Demos
Branch: master
Commit: 8dae237d2c85421b28dc5d86e7e36ceb1ca335cc
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=8dae237d2c85421b28dc5d86e7e36ceb1ca335cc

Author: José Fonseca 
Date:   Mon Jun  6 15:32:58 2011 +0100

cmake: Basic packaging support.

---

 CMakeLists.txt |   19 +++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 240018d..c1bc27f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -89,3 +89,22 @@ endif (MSVC)
 add_definitions(-DDEMOS_DATA_DIR=\"../data/\")
 
 add_subdirectory (src)
+
+
+install (FILES index.html DESTINATION doc)
+
+set (CPACK_PACKAGE_NAME "mesa-demos")
+set (CPACK_PACKAGE_VERSION_MAJOR "8")
+set (CPACK_PACKAGE_VERSION_MINOR "0")
+set (CPACK_PACKAGE_VERSION_PATCH "1")
+
+if (WIN32)
+set (CPACK_GENERATOR "ZIP")
+elseif (APPLE)
+set (CPACK_GENERATOR "DragNDrop")
+set (CPACK_DMG_FORMAT "UDBZ")
+else ()
+set (CPACK_GENERATOR "TBZ2")
+endif ()
+
+include(CPack)

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


Mesa (master): softpipe: Anisotropic filtering extension.

2011-06-06 Thread Brian Paul
Module: Mesa
Branch: master
Commit: f4537f99cc83cb8133f66dc97c613e95dc0fe162
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4537f99cc83cb8133f66dc97c613e95dc0fe162

Author: Andreas Faenger 
Date:   Mon Jun  6 07:13:16 2011 +

softpipe: Anisotropic filtering extension.

Reference implementation which produces high quality renderings.
Based on Higher Quality Elliptical Weighted Avarage Filter (EWA).

Signed-off-by: Brian Paul 

---

 src/gallium/drivers/softpipe/sp_screen.c |4 +-
 src/gallium/drivers/softpipe/sp_tex_sample.c |  338 +-
 2 files changed, 336 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_screen.c 
b/src/gallium/drivers/softpipe/sp_screen.c
index 48aabc1..30f53a9 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -81,7 +81,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
case PIPE_CAP_SM3:
   return 1;
case PIPE_CAP_ANISOTROPIC_FILTER:
-  return 0;
+  return 1;
case PIPE_CAP_POINT_SPRITE:
   return 1;
case PIPE_CAP_MAX_RENDER_TARGETS:
@@ -161,7 +161,7 @@ softpipe_get_paramf(struct pipe_screen *screen, enum 
pipe_cap param)
case PIPE_CAP_MAX_POINT_WIDTH_AA:
   return 255.0; /* arbitrary */
case PIPE_CAP_MAX_TEXTURE_ANISOTROPY:
-  return 16.0; /* not actually signficant at this time */
+  return 16.0;
case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
   return 16.0; /* arbitrary */
default:
diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c 
b/src/gallium/drivers/softpipe/sp_tex_sample.c
index 1446aee..90766f4 100644
--- a/src/gallium/drivers/softpipe/sp_tex_sample.c
+++ b/src/gallium/drivers/softpipe/sp_tex_sample.c
@@ -1709,6 +1709,317 @@ mip_filter_none(struct tgsi_sampler *tgsi_sampler,
 }
 
 
+/* For anisotropic filtering */
+#define WEIGHT_LUT_SIZE 1024
+
+static float *weightLut = NULL;
+
+/**
+ * Creates the look-up table used to speed-up EWA sampling
+ */
+static void
+create_filter_table(void)
+{
+   unsigned i;
+   if (!weightLut) {
+  weightLut = (float *) malloc(WEIGHT_LUT_SIZE * sizeof(float));
+
+  for (i = 0; i < WEIGHT_LUT_SIZE; ++i) {
+ float alpha = 2;
+ float r2 = (float) i / (float) (WEIGHT_LUT_SIZE - 1);
+ float weight = (float) exp(-alpha * r2);
+ weightLut[i] = weight;
+  }
+   }
+}
+
+
+/**
+ * Elliptical weighted average (EWA) filter for producing high quality
+ * anisotropic filtered results.
+ * Based on the Higher Quality Elliptical Weighted Avarage Filter
+ * published by Paul S. Heckbert in his Master's Thesis
+ * "Fundamentals of Texture Mapping and Image Warping" (1989)
+ */
+static void
+img_filter_2d_ewa(struct tgsi_sampler *tgsi_sampler,
+  const float s[QUAD_SIZE],
+  const float t[QUAD_SIZE],
+  const float p[QUAD_SIZE],
+  const float c0[QUAD_SIZE],
+  enum tgsi_sampler_control control,
+  const float dudx, const float dvdx,
+  const float dudy, const float dvdy,
+  float rgba[NUM_CHANNELS][QUAD_SIZE])
+{
+   const struct sp_sampler_variant *samp = sp_sampler_variant(tgsi_sampler);
+   const struct pipe_resource *texture = samp->view->texture;
+
+   unsigned level0 = samp->level > 0 ? samp->level : 0;
+   float scaling = 1.0 / (1 << level0);
+   int width = u_minify(texture->width0, level0);
+   int height = u_minify(texture->height0, level0);
+
+   float ux = dudx * scaling;
+   float vx = dvdx * scaling;
+   float uy = dudy * scaling;
+   float vy = dvdy * scaling;
+
+   /* compute ellipse coefficients to bound the region: 
+* A*x*x + B*x*y + C*y*y = F.
+*/
+   float A = vx*vx+vy*vy+1;
+   float B = -2*(ux*vx+uy*vy);
+   float C = ux*ux+uy*uy+1;
+   float F = A*C-B*B/4.0;
+
+   /* check if it is an ellipse */
+   /* ASSERT(F > 0.0); */
+
+   /* Compute the ellipse's (u,v) bounding box in texture space */
+   float d = -B*B+4.0*C*A;
+   float box_u = 2.0 / d * sqrt(d*C*F); /* box_u -> half of bbox with   */
+   float box_v = 2.0 / d * sqrt(A*d*F); /* box_v -> half of bbox height */
+
+   float rgba_temp[NUM_CHANNELS][QUAD_SIZE];
+   float s_buffer[QUAD_SIZE];
+   float t_buffer[QUAD_SIZE];
+   float weight_buffer[QUAD_SIZE];
+   unsigned buffer_next;
+   int j;
+   float den;// = 0.0F;
+   float ddq;
+   float U;// = u0 - tex_u;
+   int v;
+
+   /* Scale ellipse formula to directly index the Filter Lookup Table.
+* i.e. scale so that F = WEIGHT_LUT_SIZE-1
+*/
+   double formScale = (double) (WEIGHT_LUT_SIZE - 1) / F;
+   A *= formScale;
+   B *= formScale;
+   C *= formScale;
+   /* F *= formScale; */ /* no need to scale F as we don't use it below here */
+
+   /* For each quad, the du and dx values are the same and so the ellipse is
+* also the same. Note that texel/image access can only be performed using
+* a quad, i.e. it is not possible to get the pixe

Mesa (master): st/mesa: fix renderbuffer internal format for accum buffer

2011-06-06 Thread Brian Paul
Module: Mesa
Branch: master
Commit: b438005d961bc7fcc8cbedc34b8b15dfd09365b1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b438005d961bc7fcc8cbedc34b8b15dfd09365b1

Author: Brian Paul 
Date:   Mon Jun  6 08:06:34 2011 -0600

st/mesa: fix renderbuffer internal format for accum buffer

Fixes an accum buffer regression since switching to the table-based
format selection code.

---

 src/mesa/state_tracker/st_cb_fbo.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_fbo.c 
b/src/mesa/state_tracker/st_cb_fbo.c
index 64424f7..5b9e203 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -270,7 +270,8 @@ st_new_renderbuffer_fb(enum pipe_format format, int 
samples, boolean sw)
   strb->Base.InternalFormat = GL_STENCIL_INDEX8_EXT;
   break;
case PIPE_FORMAT_R16G16B16A16_SNORM:
-  strb->Base.InternalFormat = GL_RGBA16;
+  /* accum buffer */
+  strb->Base.InternalFormat = GL_RGBA16_SNORM;
   break;
case PIPE_FORMAT_R8_UNORM:
   strb->Base.InternalFormat = GL_R8;

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


Mesa (master): util: add \n to debug_checkpoint_full

2011-06-06 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 155cf15ce216c3b67c13da1041401cbcc1c43b1e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=155cf15ce216c3b67c13da1041401cbcc1c43b1e

Author: Marcin Slusarz 
Date:   Mon May 16 21:53:06 2011 +0200

util: add \n to debug_checkpoint_full

Signed-off-by: José Fonseca 

---

 src/gallium/auxiliary/util/u_debug.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_debug.h 
b/src/gallium/auxiliary/util/u_debug.h
index c47c13c..b5ea405 100644
--- a/src/gallium/auxiliary/util/u_debug.h
+++ b/src/gallium/auxiliary/util/u_debug.h
@@ -192,7 +192,7 @@ void _debug_assert_fail(const char *expr,
  */
 #ifdef DEBUG
 #define debug_checkpoint_full() \
-   _debug_printf("%s:%u:%s", __FILE__, __LINE__, __FUNCTION__) 
+   _debug_printf("%s:%u:%s\n", __FILE__, __LINE__, __FUNCTION__)
 #else
 #define debug_checkpoint_full() \
((void)0) 

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


Mesa (master): nv50: fix nv50_sampler_state_delete array overflow

2011-06-06 Thread Christoph Bumiller
Module: Mesa
Branch: master
Commit: fb40f1f532b5ea9fb9069f81af9e80835c18b3de
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fb40f1f532b5ea9fb9069f81af9e80835c18b3de

Author: Marcin Slusarz 
Date:   Sun Jun  5 21:00:28 2011 +0200

nv50: fix nv50_sampler_state_delete array overflow

num_samplers is array of 3 elements, not 5

---

 src/gallium/drivers/nv50/nv50_state.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_state.c 
b/src/gallium/drivers/nv50/nv50_state.c
index 8d75dd0..fb125f3 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -508,7 +508,7 @@ nv50_sampler_state_delete(struct pipe_context *pipe, void 
*hwcso)
 {
unsigned s, i;
 
-   for (s = 0; s < 5; ++s)
+   for (s = 0; s < 3; ++s)
   for (i = 0; i < nv50_context(pipe)->num_samplers[s]; ++i)
  if (nv50_context(pipe)->samplers[s][i] == hwcso)
 nv50_context(pipe)->samplers[s][i] = NULL;

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