[Intel-gfx] [PATCH] test/testdisplay:add cursor test

2011-10-22 Thread Hai Lan
Signed-off-by: Hai Lan hai@intel.com
---
 tests/testdisplay.c |   32 +---
 1 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 01f31dc..174d5c7 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -75,7 +75,7 @@ struct udev_monitor *uevent_monitor;
 drmModeRes *resources;
 int fd, modes;
 int dump_info = 0, test_all_modes =0, test_preferred_mode = 0, force_mode = 0,
-   test_plane, enable_tiling;
+   test_plane, enable_tiling, test_cursor;
 int sleep_between_modes = 5;
 uint32_t depth = 24;
 
@@ -823,7 +823,7 @@ set_mode(struct connector *c)
cairo_surface_t *surface;
cairo_status_t status;
cairo_t *cr;
-   uint32_t handle;
+   uint32_t handle,cursor_handle;
 
if (test_all_modes)
c-mode = c-connector-modes[j];
@@ -872,7 +872,6 @@ set_mode(struct connector *c)
   handle, fb_id);
cairo_surface_destroy(surface);
gem_close(fd, handle);
-
if (ret) {
fprintf(stderr, failed to add fb (%dx%d): %s\n,
width, height, strerror(errno));
@@ -888,6 +887,21 @@ set_mode(struct connector *c)
continue;
}
 
+   if (test_cursor) {
+   cursor_handle = gem_create(fd,64*64*4);
+   char * cursor_buff = gem_mmap(fd, cursor_handle, 
64*64*4, PROT_READ | PROT_WRITE);
+   for(int i=0;i64*64*4;i++)
+   *(cursor_buff+i)=0xff;
+
+   drmModeSetCursor(fd,c-crtc,cursor_handle,64,64);
+   for(int i=0;i10;i++) {
+   drmModeMoveCursor(fd,c-crtc,i*100, 0);
+   sleep(1);
+   }
+   drmModeSetCursor(fd,c-crtc,0,64,64);
+   gem_close(fd, cursor_handle);
+   }
+
if (test_plane)
enable_plane(c);
 
@@ -931,7 +945,7 @@ static int update_display(void)
dump_planes();
}
 
-   if (test_preferred_mode || test_all_modes || force_mode) {
+   if (test_preferred_mode || test_all_modes || force_mode || test_cursor) 
{
/* Find any connected displays */
for (c = 0; c  resources-count_connectors; c++) {
connectors[c].id = resources-connectors[c];
@@ -944,11 +958,11 @@ static int update_display(void)
 
 extern char *optarg;
 extern int optind, opterr, optopt;
-static char optstr[] = hiaf:s:d:pmt;
+static char optstr[] = hiaf:s:d:pmtc;
 
 static void usage(char *name)
 {
-   fprintf(stderr, usage: %s [-hiafs]\n, name);
+   fprintf(stderr, usage: %s [-hiaf:s:d:pmtc]\n, name);
fprintf(stderr, \t-i\tdump info\n);
fprintf(stderr, \t-a\ttest all modes\n);
fprintf(stderr, \t-s\tduration\tsleep between each mode test\n);
@@ -959,6 +973,7 @@ static void usage(char *name)
fprintf(stderr, \t-f\tclock 
MHz,hdisp,hsync-start,hsync-end,htotal,\n);
fprintf(stderr, \t\tvdisp,vsync-start,vsync-end,vtotal\n);
fprintf(stderr, \t\ttest force mode\n);
+   fprintf(stderr, \t-c\ttest cursor\n);
fprintf(stderr, \tDefault is to test all modes.\n);
exit(0);
 }
@@ -1048,6 +1063,9 @@ int main(int argc, char **argv)
case 't':
enable_tiling = 1;
break;
+   case 'c':
+   test_cursor = 1;
+   break;
default:
fprintf(stderr, unknown option %c\n, c);
/* fall through */
@@ -1057,7 +1075,7 @@ int main(int argc, char **argv)
}
}
if (!test_all_modes  !force_mode  !dump_info 
-   !test_preferred_mode)
+   !test_preferred_mode  !test_cursor)
test_all_modes = 1;
 
for (i = 0; i  ARRAY_SIZE(modules); i++) {
-- 
1.7.0.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] test/testdisplay:add cursor test

2011-10-22 Thread Paul Menzel
Dear Hai,


Am Samstag, den 22.10.2011, 22:03 -0400 schrieb Hai Lan:

what does this test do? For the unknowledgeable user what is supposed to
happen, that means, when is the test successful and when not?

 Signed-off-by: Hai Lan hai@intel.com
 ---
  tests/testdisplay.c |   32 +---
  1 files changed, 25 insertions(+), 7 deletions(-)
 
 diff --git a/tests/testdisplay.c b/tests/testdisplay.c
 index 01f31dc..174d5c7 100644
 --- a/tests/testdisplay.c
 +++ b/tests/testdisplay.c
 @@ -75,7 +75,7 @@ struct udev_monitor *uevent_monitor;
  drmModeRes *resources;
  int fd, modes;
  int dump_info = 0, test_all_modes =0, test_preferred_mode = 0, force_mode = 
 0,
 - test_plane, enable_tiling;
 + test_plane, enable_tiling, test_cursor;
  int sleep_between_modes = 5;
  uint32_t depth = 24;
  
 @@ -823,7 +823,7 @@ set_mode(struct connector *c)
   cairo_surface_t *surface;
   cairo_status_t status;
   cairo_t *cr;
 - uint32_t handle;
 + uint32_t handle,cursor_handle;

Missing space?

   if (test_all_modes)
   c-mode = c-connector-modes[j];
 @@ -872,7 +872,6 @@ set_mode(struct connector *c)
  handle, fb_id);
   cairo_surface_destroy(surface);
   gem_close(fd, handle);
 -
   if (ret) {
   fprintf(stderr, failed to add fb (%dx%d): %s\n,
   width, height, strerror(errno));
 @@ -888,6 +887,21 @@ set_mode(struct connector *c)
   continue;
   }
  
 + if (test_cursor) {
 + cursor_handle = gem_create(fd,64*64*4);
 + char * cursor_buff = gem_mmap(fd, cursor_handle, 
 64*64*4, PROT_READ | PROT_WRITE);
 + for(int i=0;i64*64*4;i++)
 + *(cursor_buff+i)=0xff;
 +
 + drmModeSetCursor(fd,c-crtc,cursor_handle,64,64);
 + for(int i=0;i10;i++) {
 + drmModeMoveCursor(fd,c-crtc,i*100, 0);
 + sleep(1);
 + }
 + drmModeSetCursor(fd,c-crtc,0,64,64);
 + gem_close(fd, cursor_handle);
 + }
 +
   if (test_plane)
   enable_plane(c);
  
 @@ -931,7 +945,7 @@ static int update_display(void)
   dump_planes();
   }
  
 - if (test_preferred_mode || test_all_modes || force_mode) {
 + if (test_preferred_mode || test_all_modes || force_mode || test_cursor) 
 {
   /* Find any connected displays */
   for (c = 0; c  resources-count_connectors; c++) {
   connectors[c].id = resources-connectors[c];
 @@ -944,11 +958,11 @@ static int update_display(void)
  
  extern char *optarg;
  extern int optind, opterr, optopt;
 -static char optstr[] = hiaf:s:d:pmt;
 +static char optstr[] = hiaf:s:d:pmtc;
  
  static void usage(char *name)
  {
 - fprintf(stderr, usage: %s [-hiafs]\n, name);
 + fprintf(stderr, usage: %s [-hiaf:s:d:pmtc]\n, name);
   fprintf(stderr, \t-i\tdump info\n);
   fprintf(stderr, \t-a\ttest all modes\n);
   fprintf(stderr, \t-s\tduration\tsleep between each mode test\n);
 @@ -959,6 +973,7 @@ static void usage(char *name)
   fprintf(stderr, \t-f\tclock 
 MHz,hdisp,hsync-start,hsync-end,htotal,\n);
   fprintf(stderr, \t\tvdisp,vsync-start,vsync-end,vtotal\n);
   fprintf(stderr, \t\ttest force mode\n);
 + fprintf(stderr, \t-c\ttest cursor\n);
   fprintf(stderr, \tDefault is to test all modes.\n);
   exit(0);
  }
 @@ -1048,6 +1063,9 @@ int main(int argc, char **argv)
   case 't':
   enable_tiling = 1;
   break;
 + case 'c':
 + test_cursor = 1;
 + break;
   default:
   fprintf(stderr, unknown option %c\n, c);
   /* fall through */
 @@ -1057,7 +1075,7 @@ int main(int argc, char **argv)
   }
   }
   if (!test_all_modes  !force_mode  !dump_info 
 - !test_preferred_mode)
 + !test_preferred_mode  !test_cursor)
   test_all_modes = 1;
  
   for (i = 0; i  ARRAY_SIZE(modules); i++) {


Thanks,

Paul


signature.asc
Description: This is a digitally signed message part
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] test/testdisplay:add cursor test

2011-10-22 Thread Lan, Hai
 what does this test do? For the unknowledgeable user what is supposed to
 happen, that means, when is the test successful and when not?
 
I wrote this patch to test whether the cursor can work OK. It needs the tester 
to watch the screen.
If the tester can see the white cursor move from left to right, it can prove 
that the cursor works OK.
If not, the cursor driver is wrong.
Thanks

Hai Lan
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] CRT not detected via hotplug on resume

2011-10-22 Thread Rainer Dorsch
Keith,

sorry for the late reply, but it took until now until the problem came back.

My problem was that with my G35 (GMA X3500)

00:02.0 VGA compatible controller: Intel Corporation 82G35 Express Integrated 
Graphics Controller (rev 03) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device 8276
Flags: bus master, fast devsel, latency 0, IRQ 44
Memory at fe80 (32-bit, non-prefetchable) [size=1M]
Memory at d000 (64-bit, prefetchable) [size=256M]
I/O ports at cc00 [size=8]
Expansion ROM at unassigned [disabled]
Capabilities: access denied
Kernel driver in use: i915


SDVO did not come up after resume in rare cases, i.e. the screen stays black 
(machine is fine, login via ssh is no problem at all):

http://lists.freedesktop.org/archives/intel-gfx/2011-September/012132.html

Now I got a register dump from a clean resume:

http://bokomoko.de/~rd/GMA3500-black-screen/intel_reg_dump-20111022-working-
screen.dump

and a not working resume

http://bokomoko.de/~rd/GMA3500-black-screen/intel_reg_dump-20111022-black-
screen.dump

Here is the diff of the register dumps, a few registers are different:

blackbox:~# diff -u intel_reg_dump-20111022-working-screen.dump 
intel_reg_dump-20111022-black-screen.dump
--- intel_reg_dump-20111022-working-screen.dump 2011-10-22 18:17:31.740634880 
+0200
+++ intel_reg_dump-20111022-black-screen.dump   2011-10-22 18:14:10.651270448 
+0200
@@ -1,4 +1,4 @@
- DCC: 0x0018 ( �y�dcz�T�v�H���d�{�)
+ DCC: 0x0018 ( �|�t}�d���z�X��d�~�)
CHDECMISC: 0x00ac (XOR bank/rank, ch2 enh disabled, ch1 enh 
enabled, ch0 enh enabled, flex disabled, ep not present)
   C0DRB0: 0x0018 (0x0008)
   C0DRB1: 0x00180010 (0x0010)
@@ -51,18 +51,18 @@
  DSPAPOS: 0x (0, 0)
 DSPASIZE: 0x (1, 1)
 DSPABASE: 0x
-DSPASURF: 0x0144c000
+DSPASURF: 0x0e4eb000
  DSPATILEOFF: 0x
PIPEACONF: 0xc000 (enabled, active)
 PIPEASRC: 0x04ff03ff (1280, 1024)
-   PIPEASTAT: 0x0307 (status: VSYNC_INT_STATUS 
DLINE_COMPARE_STATUS SVBLANK_INT_STATUS VBLANK_INT_STATUS OREG_UPDATE_STATUS)
+   PIPEASTAT: 0x00040203 (status: SVBLANK_INT_ENABLE VSYNC_INT_STATUS 
VBLANK_INT_STATUS OREG_UPDATE_STATUS)
PIPEA_GMCH_DATA_M: 0x
PIPEA_GMCH_DATA_N: 0x
  PIPEA_DP_LINK_M: 0x
  PIPEA_DP_LINK_N: 0x
CURSOR_A_BASE: 0x0195
 CURSOR_A_CONTROL: 0x0427
-   CURSOR_A_POSITION: 0x0267800b
+   CURSOR_A_POSITION: 0x024b0182
 FPA0: 0x00020e08 (n = 2, m1 = 14, m2 = 8)
 FPA1: 0x00020e08 (n = 2, m1 = 14, m2 = 8)
   DPLL_A: 0xd4020c00 (enabled, dvo, default clock, DAC/serial 
mode, p1 = 2, p2 = 10)
@@ -150,7 +150,7 @@
 FBC_CONTROL2: 0x
FBC_FENCE_OFF: 0x
  FBC_MOD_NUM: 0x
- MI_MODE: 0x0240
+ MI_MODE: 0x0040
 MI_ARB_STATE: 0x0044
   MI_RDRET_STATE: 0x
  ECOSKPD: 0x0307
@@ -195,36 +195,36 @@
 FENCE  5: 0x (disabled)
 FENCE  6: 0x (disabled)
 FENCE  7: 0x (disabled)
-FENCE  8: 0x085f809d (disabled)
-FENCE  9: 0x08af7000 (disabled)
-   FENCE  10: 0x0ae6409d (disabled)
-   FENCE  11: 0x0b363000 (disabled)
-   FENCE  12: 0x0e4eb09d (disabled)
-   FENCE  13: 0x0e9ea000 (disabled)
-   FENCE  14: 0x04f5d09d (disabled)
-   FENCE  15: 0x04f84000 (disabled)
-   FENCE START 0: 0x085f809d ( enabled, X tile walk, 5120 pitch, 
0x085f8000 start)
- FENCE END 0: 0x08af7000 (   
0x08af7000 end)
-   FENCE START 1: 0x0ae6409d ( enabled, X tile walk, 5120 pitch, 
0x0ae64000 start)
- FENCE END 1: 0x0b363000 (   
0x0b363000 end)
-   FENCE START 2: 0x0e4eb09d ( enabled, X tile walk, 5120 pitch, 
0x0e4eb000 start)
- FENCE END 2: 0x0e9ea000 (   
0x0e9ea000 end)
-   FENCE START 3: 0x04f5d09d ( enabled, X tile walk, 5120 pitch, 
0x04f5d000 start)
- FENCE END 3: 0x04f84000 (   
0x04f84000 end)
-   FENCE START 4: 0x07ddb06d ( enabled, X tile walk, 3584 pitch, 
0x07ddb000 start)
- FENCE END 4: 0x080da000 (   
0x080da000 end)
-   FENCE START 5: 0x048f109d ( enabled, X tile walk, 5120 pitch, 
0x048f1000 start)
- FENCE END 5: 0x04918000 (   
0x04918000 end)
-   FENCE START 6: 0x0d39e09d ( enabled, X tile walk, 5120 pitch, 
0x0d39e000 start)
- FENCE END 6: 0x0d89d000 (   
0x0d89d000 end)
-   FENCE START 7: 0x0144c09d

Re: [Intel-gfx] [PATCH] test/testdisplay:add cursor test

2011-10-22 Thread Eugeni Dodonov
On Oct 22, 2011 10:13 AM, Hai Lan hai@intel.com wrote:

 Signed-off-by: Hai Lan hai@intel.com

I like this one, simple and functional.

Reviewed-by: Eugeni Dodonov eugeni.dodo...@intel.com
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/3] drm/i915: Force sync command ordering (Gen6+)

2011-10-22 Thread Ben Widawsky
The docs say this is required for Gen7, and since the bit was added for
Gen6, we are also setting it there pit pf paranoia. Particularly as
Chris points out, if PIPE_CONTROL counts as a 3d state packet.

This was found through doc inspection by Ken and applies to Gen6+;

Cc: Keith Packard kei...@keithp.com
Reported-by: Kenneth Graunke kenn...@whitecape.org
Signed-off-by: Ben Widawsky b...@bwidawsk.net
Reviewed-by: Chris Wilson ch...@chris-wilson.co.uk
Reviewed-by: Daniel Vetter daniel.vet...@ffwll.ch
---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |9 +++--
 drivers/gpu/drm/i915/i915_reg.h|1 +
 drivers/gpu/drm/i915/intel_ringbuffer.c|3 +++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 1d66c24..1589a19 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -967,6 +967,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
struct intel_ring_buffer *ring;
u32 exec_start, exec_len;
u32 seqno;
+   u32 mask;
int ret, mode, i;
 
if (!i915_gem_check_execbuffer(args)) {
@@ -1127,6 +1128,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
}
 
mode = args-flags  I915_EXEC_CONSTANTS_MASK;
+   mask = I915_EXEC_CONSTANTS_MASK;
switch (mode) {
case I915_EXEC_CONSTANTS_REL_GENERAL:
case I915_EXEC_CONSTANTS_ABSOLUTE:
@@ -1140,6 +1142,10 @@ i915_gem_do_execbuffer(struct drm_device *dev, void 
*data,
mode == I915_EXEC_CONSTANTS_REL_SURFACE)
return -EINVAL;
 
+   /* The HW changed the meaning on this bit on gen6 */
+   if (INTEL_INFO(dev)-gen = 6)
+   mask = ~I915_EXEC_CONSTANTS_REL_SURFACE;
+
ret = intel_ring_begin(ring, 4);
if (ret)
goto err;
@@ -1147,8 +1153,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
intel_ring_emit(ring, MI_NOOP);
intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
intel_ring_emit(ring, INSTPM);
-   intel_ring_emit(ring,
-   I915_EXEC_CONSTANTS_MASK  16 | mode);
+   intel_ring_emit(ring, mask  16 | mode);
intel_ring_advance(ring);
 
dev_priv-relative_constants_mode = mode;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 138eae1..51569f2 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -436,6 +436,7 @@
 #define   INSTPM_AGPBUSY_DIS (111) /* gen3: when disabled, pending interrupts
will not assert AGPBUSY# and will only
be delivered when out of C3. */
+#define   INSTPM_FORCE_ORDERING(17) /* GEN6+ 
*/
 #define ACTHD  0x020c8
 #define FW_BLC 0x020d8
 #define FW_BLC20x020dc
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 0e99589..a3c0b13 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -297,6 +297,9 @@ static int init_render_ring(struct intel_ring_buffer *ring)
}
 
if (INTEL_INFO(dev)-gen = 6) {
+   I915_WRITE(INSTPM,
+  INSTPM_FORCE_ORDERING  16 |
+  INSTPM_FORCE_ORDERING);
} else if (IS_GEN5(dev)) {
ret = init_pipe_control(ring);
if (ret)
-- 
1.7.7

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 3/3] drm/i915: extract constant offset setting

2011-10-22 Thread Ben Widawsky
Simple refactor.

Cc: Keith Packard kei...@keithp.com
Reviewed-by: Chris Wilson ch...@chris-wilson.co.uk
Signed-off-by: Ben Widawsky b...@bwidawsk.net
---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |   82 
 1 files changed, 46 insertions(+), 36 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 1589a19..a5c856b 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -954,6 +954,50 @@ i915_gem_execbuffer_retire_commands(struct drm_device *dev,
 }
 
 static int
+i915_gem_set_constant_offset(struct intel_ring_buffer *ring, int mode)
+{
+   struct drm_device *dev = ring-dev;
+   struct drm_i915_private *dev_priv = dev-dev_private;
+   uint32_t mask = I915_EXEC_CONSTANTS_MASK;
+   int ret;
+
+   switch (mode) {
+   case I915_EXEC_CONSTANTS_REL_GENERAL:
+   case I915_EXEC_CONSTANTS_ABSOLUTE:
+   case I915_EXEC_CONSTANTS_REL_SURFACE:
+   if (ring == dev_priv-ring[RCS] 
+   mode != dev_priv-relative_constants_mode) {
+   if (INTEL_INFO(dev)-gen  4)
+   return -EINVAL;
+
+   if (INTEL_INFO(dev)-gen  5 
+   mode == I915_EXEC_CONSTANTS_REL_SURFACE)
+   return -EINVAL;
+
+   /* The HW changed the meaning on this bit on gen6 */
+   if (INTEL_INFO(dev)-gen = 6)
+   mask = ~I915_EXEC_CONSTANTS_REL_SURFACE;
+
+   ret = intel_ring_begin(ring, 4);
+   if (ret)
+   return ret;
+
+   intel_ring_emit(ring, MI_NOOP);
+   intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
+   intel_ring_emit(ring, INSTPM);
+   intel_ring_emit(ring, mask  16 | mode);
+   intel_ring_advance(ring);
+
+   dev_priv-relative_constants_mode = mode;
+   }
+   return 0;
+   default:
+   DRM_ERROR(execbuf with unknown constants: %d\n, mode);
+   return -EINVAL;
+   }
+}
+
+static int
 i915_gem_do_execbuffer(struct drm_device *dev, void *data,
   struct drm_file *file,
   struct drm_i915_gem_execbuffer2 *args,
@@ -967,7 +1011,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
struct intel_ring_buffer *ring;
u32 exec_start, exec_len;
u32 seqno;
-   u32 mask;
int ret, mode, i;
 
if (!i915_gem_check_execbuffer(args)) {
@@ -1128,42 +1171,9 @@ i915_gem_do_execbuffer(struct drm_device *dev, void 
*data,
}
 
mode = args-flags  I915_EXEC_CONSTANTS_MASK;
-   mask = I915_EXEC_CONSTANTS_MASK;
-   switch (mode) {
-   case I915_EXEC_CONSTANTS_REL_GENERAL:
-   case I915_EXEC_CONSTANTS_ABSOLUTE:
-   case I915_EXEC_CONSTANTS_REL_SURFACE:
-   if (ring == dev_priv-ring[RCS] 
-   mode != dev_priv-relative_constants_mode) {
-   if (INTEL_INFO(dev)-gen  4)
-   return -EINVAL;
-
-   if (INTEL_INFO(dev)-gen  5 
-   mode == I915_EXEC_CONSTANTS_REL_SURFACE)
-   return -EINVAL;
-
-   /* The HW changed the meaning on this bit on gen6 */
-   if (INTEL_INFO(dev)-gen = 6)
-   mask = ~I915_EXEC_CONSTANTS_REL_SURFACE;
-
-   ret = intel_ring_begin(ring, 4);
-   if (ret)
-   goto err;
-
-   intel_ring_emit(ring, MI_NOOP);
-   intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
-   intel_ring_emit(ring, INSTPM);
-   intel_ring_emit(ring, mask  16 | mode);
-   intel_ring_advance(ring);
-
-   dev_priv-relative_constants_mode = mode;
-   }
-   break;
-   default:
-   DRM_ERROR(execbuf with unknown constants: %d\n, mode);
-   ret = -EINVAL;
+   ret = i915_gem_set_constant_offset(ring, mode);
+   if (ret)
goto err;
-   }
 
trace_i915_gem_ring_dispatch(ring, seqno);
 
-- 
1.7.7

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx