Lines Matching refs:data

53 instr_out(uint32_t *data, uint32_t hw_offset, unsigned int index,
57 DRM_ERROR("0x%08x: 0x%08x:%s ", hw_offset + index * 4, data[index],
68 decode_mi(uint32_t *data, int count, uint32_t hw_offset, int *failures)
100 if ((data[0] & 0x1f800000) >> 23 == opcodes_mi[opcode].opcode) {
103 instr_out(data, hw_offset, 0, "%s\n", opcodes_mi[opcode].name);
105 len = (data[0] & 0x000000ff) + 2;
117 instr_out(data, hw_offset, i, "dword %d\n", i);
124 instr_out(data, hw_offset, 0, "MI UNKNOWN\n");
130 decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
168 switch ((data[0] & 0x1fc00000) >> 22) {
170 instr_out(data, hw_offset, 0,
172 (data[0] & (1 << 20)) ? "en" : "dis",
173 (data[0] & (1 << 21)) ? "en" : "dis",
174 (data[0] >> 11) & 1);
176 len = (data[0] & 0x000000ff) + 2;
182 switch ((data[1] >> 24) & 0x3) {
197 instr_out(data, hw_offset, 1, "format %s, pitch %d, "
199 (short)(data[1] & 0xffff),
200 data[1] & (1 << 30) ? "en" : "dis");
201 instr_out(data, hw_offset, 2, "(%d,%d)\n",
202 data[2] & 0xffff, data[2] >> 16);
203 instr_out(data, hw_offset, 3, "(%d,%d)\n",
204 data[3] & 0xffff, data[3] >> 16);
205 instr_out(data, hw_offset, 4, "offset 0x%08x\n", data[4]);
206 instr_out(data, hw_offset, 5, "color\n");
209 instr_out(data, hw_offset, 0,
212 (data[0] & (1 << 20)) ? "en" : "dis",
213 (data[0] & (1 << 21)) ? "en" : "dis",
214 (data[0] >> 15) & 1,
215 (data[0] >> 11) & 1);
217 len = (data[0] & 0x000000ff) + 2;
223 switch ((data[1] >> 24) & 0x3) {
238 instr_out(data, hw_offset, 1, "format %s, dst pitch %d, "
240 (short)(data[1] & 0xffff),
241 data[1] & (1 << 30) ? "en" : "dis");
242 instr_out(data, hw_offset, 2, "dst (%d,%d)\n",
243 data[2] & 0xffff, data[2] >> 16);
244 instr_out(data, hw_offset, 3, "dst (%d,%d)\n",
245 data[3] & 0xffff, data[3] >> 16);
246 instr_out(data, hw_offset, 4, "dst offset 0x%08x\n", data[4]);
247 instr_out(data, hw_offset, 5, "src (%d,%d)\n",
248 data[5] & 0xffff, data[5] >> 16);
249 instr_out(data, hw_offset, 6, "src pitch %d\n",
250 (short)(data[6] & 0xffff));
251 instr_out(data, hw_offset, 7, "src offset 0x%08x\n", data[7]);
257 if ((data[0] & 0x1fc00000) >> 22 == opcodes_2d[opcode].opcode) {
261 instr_out(data, hw_offset, 0, "%s\n", opcodes_2d[opcode].name);
263 len = (data[0] & 0x000000ff) + 2;
274 instr_out(data, hw_offset, i, "dword %d\n", i);
281 instr_out(data, hw_offset, 0, "2D UNKNOWN\n");
288 decode_3d_1c(uint32_t *data, int count, uint32_t hw_offset, int *failures)
290 switch ((data[0] & 0x00f80000) >> 19) {
292 instr_out(data, hw_offset, 0, "3DSTATE_DEPTH_SUBRECTANGLE_DISALBE\n");
295 instr_out(data, hw_offset, 0, "3DSTATE_SCISSOR_ENABLE\n");
298 instr_out(data, hw_offset, 0, "3DSTATE_MAP_COORD_SET_I830\n");
301 instr_out(data, hw_offset, 0, "3DSTATE_MAP_CUBE_I830\n");
304 instr_out(data, hw_offset, 0, "3DSTATE_MAP_TEX_STREAM_I830\n");
308 instr_out(data, hw_offset, 0, "3D UNKNOWN\n");
314 decode_3d_1d(uint32_t *data, int count, uint32_t hw_offset, int *failures, int i830)
349 switch ((data[0] & 0x00ff0000) >> 16) {
356 instr_out(data, hw_offset, 0, "3DSTATE_LOAD_INDIRECT\n");
357 len = (data[0] & 0x000000ff) + 1;
359 if (data[0] & (0x01 << 8)) {
362 instr_out(data, hw_offset, i++, "SIS.0\n");
363 instr_out(data, hw_offset, i++, "SIS.1\n");
365 if (data[0] & (0x02 << 8)) {
368 instr_out(data, hw_offset, i++, "DIS.0\n");
370 if (data[0] & (0x04 << 8)) {
373 instr_out(data, hw_offset, i++, "SSB.0\n");
374 instr_out(data, hw_offset, i++, "SSB.1\n");
376 if (data[0] & (0x08 << 8)) {
379 instr_out(data, hw_offset, i++, "MSB.0\n");
380 instr_out(data, hw_offset, i++, "MSB.1\n");
382 if (data[0] & (0x10 << 8)) {
385 instr_out(data, hw_offset, i++, "PSP.0\n");
386 instr_out(data, hw_offset, i++, "PSP.1\n");
388 if (data[0] & (0x20 << 8)) {
391 instr_out(data, hw_offset, i++, "PSC.0\n");
392 instr_out(data, hw_offset, i++, "PSC.1\n");
401 instr_out(data, hw_offset, 0, "3DSTATE_LOAD_STATE_IMMEDIATE_1\n");
402 len = (data[0] & 0x0000000f) + 2;
405 if (data[0] & (1 << (4 + word))) {
412 saved_s2 = data[i];
416 saved_s4 = data[i];
419 instr_out(data, hw_offset, i++, "S%d\n", word);
428 instr_out(data, hw_offset, 0, "3DSTATE_MAP_STATE\n");
429 len = (data[0] & 0x0000003f) + 2;
433 if (data[1] & (1 << map)) {
436 instr_out(data, hw_offset, i++, "map %d MS2\n", map);
437 instr_out(data, hw_offset, i++, "map %d MS3\n", map);
438 instr_out(data, hw_offset, i++, "map %d MS4\n", map);
448 instr_out(data, hw_offset, 0, "3DSTATE_PIXEL_SHADER_CONSTANTS\n");
449 len = (data[0] & 0x000000ff) + 2;
453 if (data[1] & (1 << c)) {
456 instr_out(data, hw_offset, i, "C%d.X = %x float\n",
457 c, data[i]);
459 instr_out(data, hw_offset, i, "C%d.Y = %x float\n",
460 c, data[i]);
462 instr_out(data, hw_offset, i, "C%d.Z = %x float\n",
463 c, data[i]);
465 instr_out(data, hw_offset, i, "C%d.W = %x float\n",
466 c, data[i]);
476 instr_out(data, hw_offset, 0, "3DSTATE_PIXEL_SHADER_PROGRAM\n");
477 len = (data[0] & 0x000000ff) + 2;
486 instr_out(data, hw_offset, i++, "PS%03x\n", instr);
487 instr_out(data, hw_offset, i++, "PS%03x\n", instr);
488 instr_out(data, hw_offset, i++, "PS%03x\n", instr);
494 instr_out(data, hw_offset, 0, "3DSTATE_SAMPLER_STATE\n");
495 len = (data[0] & 0x0000003f) + 2;
498 if (data[1] & (1 << sampler)) {
501 instr_out(data, hw_offset, i++, "sampler %d SS2\n",
503 instr_out(data, hw_offset, i++, "sampler %d SS3\n",
505 instr_out(data, hw_offset, i++, "sampler %d SS4\n",
522 if (((data[0] & 0x00ff0000) >> 16) == opcodes_3d_1d[opcode].opcode) {
525 instr_out(data, hw_offset, 0, "%s\n", opcodes_3d_1d[opcode].name);
527 len = (data[0] & 0x0000ffff) + 2;
540 instr_out(data, hw_offset, i, "dword %d\n", i);
547 instr_out(data, hw_offset, 0, "3D UNKNOWN\n");
553 decode_3d_primitive(uint32_t *data, int count, uint32_t hw_offset,
556 char immediate = (data[0] & (1 << 23)) == 0;
560 switch ((data[0] >> 18) & 0xf) {
577 len = (data[0] & 0x0003ffff) + 2;
578 instr_out(data, hw_offset, 0, "3DPRIMITIVE inline %s\n", primtype);
584 instr_out(data, hw_offset, i,
585 " vertex data (%x float)\n",
586 data[i]);
595 instr_out(data, hw_offset, i, " V%d."fmt"\n", vertex, __VA_ARGS__); \
597 DRM_ERROR(" missing data in V%d\n", vertex); \
601 VERTEX_OUT("X = %x float", data[i]);
602 VERTEX_OUT("Y = %x float", data[i]);
605 VERTEX_OUT("Z = %x float", data[i]);
608 VERTEX_OUT("Z = %x float", data[i]);
609 VERTEX_OUT("W = %x float", data[i]);
614 VERTEX_OUT("W = %x float", data[i]);
623 data[i] >> 24,
624 (data[i] >> 16) & 0xff,
625 (data[i] >> 8) & 0xff,
626 data[i] & 0xff);
631 data[i] >> 24,
632 (data[i] >> 16) & 0xff,
633 (data[i] >> 8) & 0xff,
634 data[i] & 0xff);
637 VERTEX_OUT("width = 0x%08x)", data[i]);
642 VERTEX_OUT("T%d.X = %x float", tc, data[i]);
643 VERTEX_OUT("T%d.Y = %x float", tc, data[i]);
646 VERTEX_OUT("T%d.X = %x float", tc, data[i]);
647 VERTEX_OUT("T%d.Y = %x float", tc, data[i]);
648 VERTEX_OUT("T%d.Z = %x float", tc, data[i]);
651 VERTEX_OUT("T%d.X = %x float", tc, data[i]);
652 VERTEX_OUT("T%d.Y = %x float", tc, data[i]);
653 VERTEX_OUT("T%d.Z = %x float", tc, data[i]);
654 VERTEX_OUT("T%d.W = %x float", tc, data[i]);
657 VERTEX_OUT("T%d.X = %x float", tc, data[i]);
660 VERTEX_OUT("T%d.XY = 0x%08x half-float", tc, data[i]);
663 VERTEX_OUT("T%d.XY = 0x%08x half-float", tc, data[i]);
664 VERTEX_OUT("T%d.ZW = 0x%08x half-float", tc, data[i]);
677 len = data[0] & 0x0000ffff; /* index count */
678 if (data[0] & (1 << 17)) {
682 instr_out(data, hw_offset, 0,
687 if ((data[i] & 0xffff) == 0xffff) {
688 instr_out(data, hw_offset, i,
691 } else if ((data[i] >> 16) == 0xffff) {
692 instr_out(data, hw_offset, i,
695 data[i] & 0xffff);
698 instr_out(data, hw_offset, i,
700 data[i] & 0xffff, data[i] >> 16);
710 instr_out(data, hw_offset, i,
712 data[i] & 0xffff);
714 instr_out(data, hw_offset, i,
716 data[i] & 0xffff, data[i] >> 16);
725 instr_out(data, hw_offset, 0,
727 "%d\n", primtype, len, data[1] & 0xffff);
728 instr_out(data, hw_offset, 1, " start\n");
737 decode_3d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
758 switch ((data[0] & 0x1f000000) >> 24) {
760 return decode_3d_primitive(data, count, hw_offset, failures);
762 return decode_3d_1d(data, count, hw_offset, failures, 0);
764 return decode_3d_1c(data, count, hw_offset, failures);
769 if ((data[0] & 0x1f000000) >> 24 == opcodes_3d[opcode].opcode) {
772 instr_out(data, hw_offset, 0, "%s\n", opcodes_3d[opcode].name);
774 len = (data[0] & 0xff) + 2;
785 instr_out(data, hw_offset, i, "dword %d\n", i);
791 instr_out(data, hw_offset, 0, "3D UNKNOWN\n");
823 decode_3d_965(uint32_t *data, int count, uint32_t hw_offset, int *failures)
859 len = (data[0] & 0x0000ffff) + 2;
861 switch ((data[0] & 0xffff0000) >> 16) {
868 instr_out(data, hw_offset, 0,
871 if (data[1] & 1) {
872 instr_out(data, hw_offset, 1, "General state at 0x%08x\n",
873 data[1] & ~1);
875 instr_out(data, hw_offset, 1, "General state not updated\n");
877 if (data[2] & 1) {
878 instr_out(data, hw_offset, 2, "Surface state at 0x%08x\n",
879 data[2] & ~1);
881 instr_out(data, hw_offset, 2, "Surface state not updated\n");
883 if (data[3] & 1) {
884 instr_out(data, hw_offset, 3, "Indirect state at 0x%08x\n",
885 data[3] & ~1);
887 instr_out(data, hw_offset, 3, "Indirect state not updated\n");
889 if (data[4] & 1) {
890 instr_out(data, hw_offset, 4, "General state upper bound 0x%08x\n",
891 data[4] & ~1);
893 instr_out(data, hw_offset, 4, "General state not updated\n");
895 if (data[5] & 1) {
896 instr_out(data, hw_offset, 5, "Indirect state upper bound 0x%08x\n",
897 data[5] & ~1);
899 instr_out(data, hw_offset, 5, "Indirect state not updated\n");
908 instr_out(data, hw_offset, 0,
910 instr_out(data, hw_offset, 1, "VS state\n");
911 instr_out(data, hw_offset, 2, "GS state\n");
912 instr_out(data, hw_offset, 3, "Clip state\n");
913 instr_out(data, hw_offset, 4, "SF state\n");
914 instr_out(data, hw_offset, 5, "WM state\n");
915 instr_out(data, hw_offset, 6, "CC state\n");
923 instr_out(data, hw_offset, 0,
925 instr_out(data, hw_offset, 1, "VS binding table\n");
926 instr_out(data, hw_offset, 2, "GS binding table\n");
927 instr_out(data, hw_offset, 3, "Clip binding table\n");
928 instr_out(data, hw_offset, 4, "SF binding table\n");
929 instr_out(data, hw_offset, 5, "WM binding table\n");
939 instr_out(data, hw_offset, 0,
941 instr_out(data, hw_offset, 1, "top left: %d,%d\n",
942 data[1] & 0xffff,
943 (data[1] >> 16) & 0xffff);
944 instr_out(data, hw_offset, 2, "bottom right: %d,%d\n",
945 data[2] & 0xffff,
946 (data[2] >> 16) & 0xffff);
947 instr_out(data, hw_offset, 3, "origin: %d,%d\n",
948 (int)data[3] & 0xffff,
949 ((int)data[3] >> 16) & 0xffff);
959 instr_out(data, hw_offset, 0,
961 instr_out(data, hw_offset, 1, "%s, %s, pitch = %d bytes, %stiled\n",
962 get_965_surfacetype(data[1] >> 29),
963 get_965_depthformat((data[1] >> 18) & 0x7),
964 (data[1] & 0x0001ffff) + 1,
965 data[1] & (1 << 27) ? "" : "not ");
966 instr_out(data, hw_offset, 2, "depth offset\n");
967 instr_out(data, hw_offset, 3, "%dx%d\n",
968 ((data[3] & 0x0007ffc0) >> 6) + 1,
969 ((data[3] & 0xfff80000) >> 19) + 1);
970 instr_out(data, hw_offset, 4, "volume depth\n");
977 if ((data[0] & 0xffff0000) >> 16 == opcodes_3d[opcode].opcode) {
981 instr_out(data, hw_offset, 0, "%s\n", opcodes_3d[opcode].name);
983 len = (data[0] & 0xff) + 2;
994 instr_out(data, hw_offset, i, "dword %d\n", i);
1000 instr_out(data, hw_offset, 0, "3D UNKNOWN\n");
1007 decode_3d_i830(uint32_t *data, int count, uint32_t hw_offset, int *failures)
1035 switch ((data[0] & 0x1f000000) >> 24) {
1037 return decode_3d_primitive(data, count, hw_offset, failures);
1039 return decode_3d_1d(data, count, hw_offset, failures, 1);
1041 return decode_3d_1c(data, count, hw_offset, failures);
1046 if ((data[0] & 0x1f000000) >> 24 == opcodes_3d[opcode].opcode) {
1049 instr_out(data, hw_offset, 0, "%s\n", opcodes_3d[opcode].name);
1051 len = (data[0] & 0xff) + 2;
1062 instr_out(data, hw_offset, i, "dword %d\n", i);
1068 instr_out(data, hw_offset, 0, "3D UNKNOWN\n");
1073 void i915_gem_command_decode(uint32_t *data, int count, uint32_t hw_offset, struct drm_device *dev)
1079 switch ((data[index] & 0xe0000000) >> 29) {
1081 index += decode_mi(data + index, count - index,
1085 index += decode_2d(data + index, count - index,
1090 index += decode_3d_965(data + index, count - index,
1093 index += decode_3d(data + index, count - index,
1096 index += decode_3d_i830(data + index, count - index,
1101 instr_out(data, hw_offset, index, "UNKNOWN\n");