diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_defines.h | 5 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 42 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_state_upload.c | 5 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/gen6_vs_state.c | 3 | 
4 files changed, 40 insertions, 15 deletions
| diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 08eb2b2d91..e280c2ee4e 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -784,14 +784,19 @@  #define CMD_VERTEX_BUFFER             0x7808  # define BRW_VB0_INDEX_SHIFT		27 +# define GEN6_VB0_INDEX_SHIFT		26  # define BRW_VB0_ACCESS_VERTEXDATA	(0 << 26)  # define BRW_VB0_ACCESS_INSTANCEDATA	(1 << 26) +# define GEN6_VB0_ACCESS_VERTEXDATA	(0 << 20) +# define GEN6_VB0_ACCESS_INSTANCEDATA	(1 << 20)  # define BRW_VB0_PITCH_SHIFT		0  #define CMD_VERTEX_ELEMENT            0x7809  # define BRW_VE0_INDEX_SHIFT		27 +# define GEN6_VE0_INDEX_SHIFT		26  # define BRW_VE0_FORMAT_SHIFT		16  # define BRW_VE0_VALID			(1 << 26) +# define GEN6_VE0_VALID			(1 << 25)  # define BRW_VE0_SRC_OFFSET_SHIFT	0  # define BRW_VE1_COMPONENT_NOSTORE	0  # define BRW_VE1_COMPONENT_STORE_SRC	1 diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 106454de4a..e6bfc567af 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -503,10 +503,17 @@ static void brw_emit_vertices(struct brw_context *brw)     if (brw->vb.nr_enabled == 0) {        BEGIN_BATCH(3);        OUT_BATCH((CMD_VERTEX_ELEMENT << 16) | 1); -      OUT_BATCH((0 << BRW_VE0_INDEX_SHIFT) | -		BRW_VE0_VALID | -		(BRW_SURFACEFORMAT_R32G32B32A32_FLOAT << BRW_VE0_FORMAT_SHIFT) | -		(0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      if (IS_GEN6(intel->intelScreen->deviceID)) { +	 OUT_BATCH((0 << GEN6_VE0_INDEX_SHIFT) | +		   GEN6_VE0_VALID | +		   (BRW_SURFACEFORMAT_R32G32B32A32_FLOAT << BRW_VE0_FORMAT_SHIFT) | +		   (0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      } else { +	 OUT_BATCH((0 << BRW_VE0_INDEX_SHIFT) | +		   BRW_VE0_VALID | +		   (BRW_SURFACEFORMAT_R32G32B32A32_FLOAT << BRW_VE0_FORMAT_SHIFT) | +		   (0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      }        OUT_BATCH((BRW_VE1_COMPONENT_STORE_0 << BRW_VE1_COMPONENT_0_SHIFT) |  		(BRW_VE1_COMPONENT_STORE_0 << BRW_VE1_COMPONENT_1_SHIFT) |  		(BRW_VE1_COMPONENT_STORE_0 << BRW_VE1_COMPONENT_2_SHIFT) | @@ -527,9 +534,17 @@ static void brw_emit_vertices(struct brw_context *brw)     for (i = 0; i < brw->vb.nr_enabled; i++) {        struct brw_vertex_element *input = brw->vb.enabled[i]; +      uint32_t dw0; -      OUT_BATCH((i << BRW_VB0_INDEX_SHIFT) | -		BRW_VB0_ACCESS_VERTEXDATA | +      if (IS_GEN6(intel->intelScreen->deviceID)) { +	 dw0 = GEN6_VB0_ACCESS_VERTEXDATA | +	    (i << GEN6_VB0_INDEX_SHIFT); +      } else { +	 dw0 = BRW_VB0_ACCESS_VERTEXDATA | +	    (i << BRW_VB0_INDEX_SHIFT); +      } + +      OUT_BATCH(dw0 |  		(input->stride << BRW_VB0_PITCH_SHIFT));        OUT_RELOC(input->bo,  		I915_GEM_DOMAIN_VERTEX, 0, @@ -565,10 +580,17 @@ static void brw_emit_vertices(struct brw_context *brw)  	 break;        } -      OUT_BATCH((i << BRW_VE0_INDEX_SHIFT) | -		BRW_VE0_VALID | -		(format << BRW_VE0_FORMAT_SHIFT) | -		(0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      if (IS_GEN6(intel->intelScreen->deviceID)) { +	 OUT_BATCH((i << GEN6_VE0_INDEX_SHIFT) | +		   GEN6_VE0_VALID | +		   (format << BRW_VE0_FORMAT_SHIFT) | +		   (0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      } else { +	 OUT_BATCH((i << BRW_VE0_INDEX_SHIFT) | +		   BRW_VE0_VALID | +		   (format << BRW_VE0_FORMAT_SHIFT) | +		   (0 << BRW_VE0_SRC_OFFSET_SHIFT)); +      }        if (intel->is_ironlake)            OUT_BATCH((comp0 << BRW_VE1_COMPONENT_0_SHIFT) | diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index fc30e60087..30386ef316 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -163,12 +163,11 @@ const struct brw_tracked_state *gen6_atoms[] =     &brw_psp_urb_cbs,     &brw_drawing_rect, +#endif +     &brw_indices,     &brw_index_buffer,     &brw_vertices, - -   &brw_constant_buffer -#endif  };  void brw_init_state( struct brw_context *brw ) diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index d33b2b4d7d..0202871399 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -54,8 +54,7 @@ upload_vs_state(struct brw_context *brw)     OUT_BATCH(0); /* scratch space base offset */     OUT_BATCH((1 << GEN6_VS_DISPATCH_START_GRF_SHIFT) |  	     (brw->vs.prog_data->urb_read_length << GEN6_VS_URB_READ_LENGTH_SHIFT) | -	     (0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT) | -	     GEN6_VS_ENABLE); +	     (0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT));     OUT_BATCH((0 << GEN6_VS_MAX_THREADS_SHIFT) |  	     GEN6_VS_STATISTICS_ENABLE);     ADVANCE_BATCH(); | 
