Skip to contentSkip to conversation

rename mmio global variable to igt_global_mmio

PATCH In review Jani Nikula 2 participants 13 messages Apr 28, 2015 – May 5, 2015 Library code

lore
Share & tools
lore
#0 lore raw

cover rename mmio global variable to igt_global_mmio

First reduce to use of the mmio global variable by switching to INREG and OUTREG, and finally rename mmio to igt_global_mmio.

BR,
Jani.

Jani Nikula (10):
lib: add 16 and 8 bit versions of INREG and OUTREG
intel_reg: switch to INREG and OUTREG
intel_backlight: switch to INREG and OUTREG
intel_reg_checker: switch to INREG intel_reg_{read,write}: switch to INREG and OUTREG
intel_watermark: switch to INREG
intel_display_poller: use INREG and OUTREG intel_vga_{read,write}: use INREG and OUTREG tests/gen7_forcewake_mt: use local mmio variable rename global mmio variable to igt_global_mmio

 lib/intel_io.h               |  6 ++++-
 lib/intel_mmio.c             | 60 ++++++++++++++++++++++++++++++--------------
 tests/gen7_forcewake_mt.c    |  1 +
 tools/intel_backlight.c      | 20 ++++-----------
 tools/intel_display_poller.c |  8 +++---
 tools/intel_reg.c            | 12 ++++-----
 tools/intel_reg_checker.c    |  8 +-----
 tools/intel_reg_read.c       |  5 ++--
 tools/intel_reg_snapshot.c   |  2 +-
 tools/intel_reg_write.c      |  8 +++---
 tools/intel_vga_read.c       |  2 +-
 tools/intel_vga_write.c      |  2 +-
 tools/intel_watermark.c      |  2 +-
 13 files changed, 71 insertions(+), 65 deletions(-)
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#1 lore raw

PATCH 1/10 lib: add 16 and 8 bit versions of INREG and OUTREG

---
 lib/intel_io.h   |  4 ++++
 lib/intel_mmio.c | 24 ++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
lib/intel_io.h +4 -0
index 04aa3fd496b4..1c3b4445cd5b 100644
@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);
 int intel_register_access_needs_fakewake(void);
 
 uint32_t INREG(uint32_t reg);
+uint16_t INREG16(uint32_t reg);
+uint8_t INREG8(uint32_t reg);
 void OUTREG(uint32_t reg, uint32_t val);
+void OUTREG16(uint32_t reg, uint16_t val);
+void OUTREG8(uint32_t reg, uint8_t val);
 
 /* sideband access functions from intel_iosf.c */
 uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
lib/intel_mmio.c +24 -0
index 9a2ee27bd5e5..40ce94c8f600 100644
@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)
 	return *(volatile uint32_t *)((volatile char *)mmio + reg);
 }
 
+/* 16-bit version of INREG */
+uint16_t INREG16(uint32_t reg)
+{
+	return *(volatile uint16_t *)((volatile char *)mmio + reg);
+}
+
+/* 8-bit version of INREG */
+uint8_t INREG8(uint32_t reg)
+{
+	return *((volatile uint8_t *)mmio + reg);
+}
+
 /**
  * OUTRET:
  * @reg: register offset
@@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val)
 {
 	*(volatile uint32_t *)((volatile char *)mmio + reg) = val;
 }
+
+/* 16-bit version of OUTREG */
+void OUTREG16(uint32_t reg, uint16_t val)
+{
+	*(volatile uint16_t *)((volatile char *)mmio + reg) = val;
+}
+
+/* 8-bit version of OUTREG */
+void OUTREG8(uint32_t reg, uint8_t val)
+{
+	*((volatile uint8_t *)mmio + reg) = val;
+}
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#4 lore raw

PATCH 2/10 intel_reg: switch to INREG and OUTREG

In reply to Jani Nikula

Use INREG and OUTREG instead of using mmio directly.

---
 tools/intel_reg.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
tools/intel_reg.c +4 -6
index 975529d4555b..0f98266932e5 100644
@@ -226,8 +226,7 @@ static int read_register(struct config *config, struct reg *reg, uint32_t *valp)
 
 	switch (reg->port_desc.port) {
 	case PORT_MMIO:
-		val = *(volatile uint32_t *)((volatile char*)mmio +
-					     reg->mmio_offset + reg->addr);
+		val = INREG(reg->mmio_offset + reg->addr);
 		break;
 	case PORT_PORTIO_VGA:
 		iopl(3);
@@ -235,7 +234,7 @@ static int read_register(struct config *config, struct reg *reg, uint32_t *valp)
 		iopl(0);
 		break;
 	case PORT_MMIO_VGA:
-		val = *((volatile uint8_t*)mmio + reg->addr);
+		val = INREG8(reg->addr);
 		break;
 	case PORT_BUNIT:
 	case PORT_PUNIT:
@@ -284,8 +283,7 @@ static int write_register(struct config *config, struct reg *reg, uint32_t val)
 
 	switch (reg->port_desc.port) {
 	case PORT_MMIO:
-		*(volatile uint32_t *)((volatile char *)mmio +
-				       reg->mmio_offset + reg->addr) = val;
+		OUTREG(reg->mmio_offset + reg->addr, val);
 		break;
 	case PORT_PORTIO_VGA:
 		if (val > 0xff) {
@@ -303,7 +301,7 @@ static int write_register(struct config *config, struct reg *reg, uint32_t val)
 				val, reg->port_desc.name);
 			return -1;
 		}
-		*((volatile uint8_t *)mmio + reg->addr) = val;
+		OUTREG8(reg->addr, val);
 		break;
 	case PORT_BUNIT:
 	case PORT_PUNIT:
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#5 lore raw

PATCH 3/10 intel_backlight: switch to INREG and OUTREG

In reply to Jani Nikula

Use INREG and OUTREG instead of using mmio directly.

---
 tools/intel_backlight.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)
tools/intel_backlight.c +5 -15
index 17deb88d4be8..067fd4180968 100644
@@ -36,24 +36,14 @@
 
 /* XXX PCH only today */
 
-static uint32_t reg_read(uint32_t reg)
-{
-	return *(volatile uint32_t *)((volatile char*)mmio + reg);
-}
-
-static void reg_write(uint32_t reg, uint32_t val)
-{
-	*(volatile uint32_t *)((volatile char*)mmio + reg) = val;
-}
-
 int main(int argc, char** argv)
 {
 	uint32_t current, max;
 
 	intel_mmio_use_pci_bar(intel_get_pci_device());
 
-	current = reg_read(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK;
-	max = reg_read(BLC_PWM_PCH_CTL2) >> 16;
+	current = INREG(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK;
+	max = INREG(BLC_PWM_PCH_CTL2) >> 16;
 
 	printf ("current backlight value: %d%%\n", current * 100 / max);
 
@@ -61,9 +51,9 @@ int main(int argc, char** argv)
 		uint32_t v = atoi (argv[1]) * max / 100;
 		if (v > max)
 			v = max;
-		reg_write(BLC_PWM_CPU_CTL,
-			  (reg_read(BLC_PWM_CPU_CTL) &~ BACKLIGHT_DUTY_CYCLE_MASK) | v);
-		(void) reg_read(BLC_PWM_CPU_CTL);
+		OUTREG(BLC_PWM_CPU_CTL,
+		       (INREG(BLC_PWM_CPU_CTL) &~ BACKLIGHT_DUTY_CYCLE_MASK) | v);
+		(void) INREG(BLC_PWM_CPU_CTL);
 		printf ("set backlight to %d%%\n", v * 100 / max);
 	}
 
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#6 lore raw

PATCH 4/10 intel_reg_checker: switch to INREG

In reply to Jani Nikula

Use INREG instead of using mmio directly.

---
 tools/intel_reg_checker.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
tools/intel_reg_checker.c +1 -7
index 22d979613ea1..2d6da70c3afa 100644
@@ -32,16 +32,10 @@
 static uint32_t devid;
 static int gen;
 
-static inline uint32_t
-read_reg(uint32_t reg)
-{
-	return *(volatile uint32_t *)((volatile char *)mmio + reg);
-}
-
 static uint32_t
 read_and_print_reg(const char *name, uint32_t reg)
 {
-	uint32_t val = read_reg(reg);
+	uint32_t val = INREG(reg);
 
 	printf("%s (0x%x): 0x%08x\n", name, reg, val);
 
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#7 lore raw

PATCH 5/10 intel_reg_{read, write}: switch to INREG and OUTREG

In reply to Jani Nikula

Use INREG and OUTREG instead of using mmio directly.

---
 tools/intel_reg_read.c  | 5 ++---
 tools/intel_reg_write.c | 8 +++-----
 2 files changed, 5 insertions(+), 8 deletions(-)
tools/intel_reg_read.c +2 -3
index 3b9129148878..46fa664b9085 100644
@@ -51,8 +51,7 @@ static void dump_range(uint32_t start, uint32_t end)
 	int i;
 
 	for (i = start; i < end; i += 4)
-		printf("0x%X : 0x%X\n", i,
-		       *(volatile uint32_t *)((volatile char*)mmio + i));
+		printf("0x%X : 0x%X\n", i, INREG(i));
 }
 
 static void usage(char *cmdname)
@@ -130,7 +129,7 @@ int main(int argc, char** argv)
 			dump_range(reg, reg + (dwords * 4));
 
 			if (decode_bits)
-				bit_decode(*(volatile uint32_t *)((volatile char*)mmio + reg));
+				bit_decode(INREG(reg));
 		}
 	}
 
tools/intel_reg_write.c +3 -5
index ff4e561ee4ab..b0ddffeb6593 100644
@@ -35,7 +35,6 @@
 int main(int argc, char** argv)
 {
 	uint32_t reg, value;
-	volatile uint32_t *ptr;
 
 	if (argc < 3) {
 		printf("Usage: %s addr value\n", argv[0]);
@@ -47,11 +46,10 @@ int main(int argc, char** argv)
 	intel_register_access_init(intel_get_pci_device(), 0);
 	sscanf(argv[1], "0x%x", &reg);
 	sscanf(argv[2], "0x%x", &value);
-	ptr = (volatile uint32_t *)((volatile char *)mmio + reg);
 
-	printf("Value before: 0x%X\n", *ptr);
-	*ptr = value;
-	printf("Value after: 0x%X\n", *ptr);
+	printf("Value before: 0x%X\n", INREG(reg));
+	OUTREG(reg, value);
+	printf("Value after: 0x%X\n", INREG(reg));
 
 	intel_register_access_fini();
 	return 0;
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#8 lore raw

PATCH 6/10 intel_watermark: switch to INREG

In reply to Jani Nikula

Use INREG instead of using mmio directly.

---
 tools/intel_watermark.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/intel_watermark.c +1 -1
index e5dee46db78f..0b7c5e5193ef 100644
@@ -38,7 +38,7 @@ static uint32_t devid;
 
 static uint32_t read_reg(uint32_t addr)
 {
-	return *(volatile uint32_t *)((volatile char*)mmio + display_base + addr);
+	return INREG(display_base + addr);
 }
 
 struct gmch_wm {
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#9 lore raw

PATCH 7/10 intel_display_poller: use INREG and OUTREG

In reply to Jani Nikula

Use INREG and OUTREG instead of using mmio directly.

---
 tools/intel_display_poller.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
tools/intel_display_poller.c +4 -4
index 2eab6c494f68..6d6ea21ca974 100644
@@ -67,22 +67,22 @@ static void sighandler(int x)
 
 static uint16_t read_reg_16(uint32_t reg)
 {
-	return *(volatile uint16_t *)((volatile char*)mmio + vlv_offset + reg);
+	return INREG16(vlv_offset + reg);
 }
 
 static uint32_t read_reg(uint32_t reg)
 {
-	return *(volatile uint32_t *)((volatile char*)mmio + vlv_offset + reg);
+	return INREG(vlv_offset + reg);
 }
 
 static void write_reg_16(uint32_t reg, uint16_t val)
 {
-	*(volatile uint16_t *)((volatile char*)mmio + vlv_offset + reg) = val;
+	OUTREG16(vlv_offset + reg, val);
 }
 
 static void write_reg(uint32_t reg, uint32_t val)
 {
-	*(volatile uint32_t *)((volatile char*)mmio + vlv_offset + reg) = val;
+	OUTREG(vlv_offset + reg, val);
 }
 
 static int pipe_to_plane(uint32_t devid, int pipe)
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#10 lore raw

PATCH 8/10 intel_vga_{read, write}: use INREG and OUTREG

In reply to Jani Nikula

Use INREG and OUTREG instead of using mmio directly.

---
 tools/intel_vga_read.c  | 2 +-
 tools/intel_vga_write.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
tools/intel_vga_read.c +1 -1
index e635c59cda3b..ea5070577a1e 100644
@@ -37,7 +37,7 @@
 static uint8_t read_reg(uint32_t reg, bool use_mmio)
 {
 	if (use_mmio)
-		return *((volatile uint8_t *)mmio + reg);
+		return INREG8(reg);
 	else
 		return inb(reg);
 }
tools/intel_vga_write.c +1 -1
index 4fb09d6a247a..821596246a2a 100644
@@ -37,7 +37,7 @@
 static void write_reg(uint32_t reg, uint8_t val, bool use_mmio)
 {
 	if (use_mmio)
-		*((volatile uint8_t *)mmio + reg) = val;
+		OUTREG8(reg, val);
 	else
 		outb(val, reg);
 }
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#11 lore raw

PATCH 9/10 tests/gen7_forcewake_mt: use local mmio variable

In reply to Jani Nikula

igfx_get_mmio() uses the global mmio variable by accident. Use a local variable instead.

The intention is to rename the global variable later on, so shadowing it here does not matter.

---
 tests/gen7_forcewake_mt.c | 1 +
 1 file changed, 1 insertion(+)
tests/gen7_forcewake_mt.c +1 -0
index 8337847c41d5..78730787150a 100644
@@ -88,6 +88,7 @@ static struct pci_device *__igfx_get(void)
 static void *igfx_get_mmio(void)
 {
 	struct pci_device *pci = __igfx_get();
+	void *mmio = NULL;
 	int error;
 
 	igt_skip_on(pci == NULL);
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#12 lore raw

PATCH 10/10 rename global mmio variable to igt_global_mmio

In reply to Jani Nikula

Global variable names should reflect the fact that they are indeed global, and at the very least they should not be as short as just "mmio". Rename mmio to igt_global_mmio.

---
 lib/intel_io.h             |  2 +-
 lib/intel_mmio.c           | 44 +++++++++++++++++++++-----------------------
 tools/intel_reg.c          |  2 +-
 tools/intel_reg_snapshot.c |  2 +-
 4 files changed, 24 insertions(+), 26 deletions(-)
lib/intel_io.h +1 -1
index 1c3b4445cd5b..e2d6b4705be3 100644
@@ -32,7 +32,7 @@
 #include <pciaccess.h>
 
 /* register access helpers from intel_mmio.c */
-extern void *mmio;
+extern void *igt_global_mmio;
 void intel_mmio_use_pci_bar(struct pci_device *pci_dev);
 void intel_mmio_use_dump_file(char *file);
 
lib/intel_mmio.c +21 -23

139 lines not on this page · raw message

tools/intel_reg.c +1 -1
index 0f98266932e5..090cc25613b9 100644
@@ -491,7 +491,7 @@ static int intel_reg_snapshot(struct config *config, int argc, char *argv[])
 	intel_mmio_use_pci_bar(config->pci_dev);
 
 	/* XXX: error handling */
-	write(1, mmio, config->pci_dev->regions[mmio_bar].size);
+	write(1, igt_global_mmio, config->pci_dev->regions[mmio_bar].size);
 
 	if (config->verbosity > 0)
 		printf("use this with --mmio=FILE --devid=0x%04X\n",
tools/intel_reg_snapshot.c +1 -1
index b756bf690217..50dafd6a6ac4 100644
@@ -45,7 +45,7 @@ int main(int argc, char** argv)
 	else
 		mmio_bar = 0;
 
-	ret = write(1, mmio, pci_dev->regions[mmio_bar].size);
+	ret = write(1, igt_global_mmio, pci_dev->regions[mmio_bar].size);
 	assert(ret > 0);
 
 	return 0;
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#2 lore raw

Re: [PATCH i-g-t 01/10] lib: add 16 and 8 bit versions of INREG and OUTREG

In reply to Jani Nikula
Quoted 27 lines · Jani Nikula
---
 lib/intel_io.h   |  4 ++++
 lib/intel_mmio.c | 24 ++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
lib/intel_io.h +4 -0
index 04aa3fd496b4..1c3b4445cd5b 100644
@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);
 int intel_register_access_needs_fakewake(void);
 
 uint32_t INREG(uint32_t reg);
+uint16_t INREG16(uint32_t reg);
+uint8_t INREG8(uint32_t reg);
 void OUTREG(uint32_t reg, uint32_t val);
+void OUTREG16(uint32_t reg, uint16_t val);
+void OUTREG8(uint32_t reg, uint8_t val);
 
 /* sideband access functions from intel_iosf.c */
 uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
lib/intel_mmio.c +0 -0
index 9a2ee27bd5e5..40ce94c8f600 100644

lib/intel_mmio.c uint32_t INREG(uint32_t reg) · line 327

Quoted 4 lines
lib/intel_mmio.c +1 -0
@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)
 	return *(volatile uint32_t *)((volatile char *)mmio + reg);
 }
 
+/* 16-bit version of INREG */

gtkdoc is missing here for these new functions. And while at it please also do the s/OUTRET/OUTREG/ type ;-)

Otherise entire series looks really nifty and has my Ack.

Cheers, Daniel

Quoted 37 lines
lib/intel_mmio.c +23 -0
+uint16_t INREG16(uint32_t reg)
+{
+	return *(volatile uint16_t *)((volatile char *)mmio + reg);
+}
+
+/* 8-bit version of INREG */
+uint8_t INREG8(uint32_t reg)
+{
+	return *((volatile uint8_t *)mmio + reg);
+}
+
 /**
  * OUTRET:
  * @reg: register offset
@@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val)
 {
 	*(volatile uint32_t *)((volatile char *)mmio + reg) = val;
 }
+
+/* 16-bit version of OUTREG */
+void OUTREG16(uint32_t reg, uint16_t val)
+{
+	*(volatile uint16_t *)((volatile char *)mmio + reg) = val;
+}
+
+/* 8-bit version of OUTREG */
+void OUTREG8(uint32_t reg, uint8_t val)
+{
+	*((volatile uint8_t *)mmio + reg) = val;
+}
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 7 lines
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#3 lore raw

Re: [PATCH i-g-t 01/10] lib: add 16 and 8 bit versions of INREG and OUTREG

Quoted 31 lines · Daniel Vetter
Quoted 30 lines · Jani Nikula
---
 lib/intel_io.h   |  4 ++++
 lib/intel_mmio.c | 24 ++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
lib/intel_io.h +4 -0
index 04aa3fd496b4..1c3b4445cd5b 100644
@@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);
 int intel_register_access_needs_fakewake(void);
 
 uint32_t INREG(uint32_t reg);
+uint16_t INREG16(uint32_t reg);
+uint8_t INREG8(uint32_t reg);
 void OUTREG(uint32_t reg, uint32_t val);
+void OUTREG16(uint32_t reg, uint16_t val);
+void OUTREG8(uint32_t reg, uint8_t val);
 
 /* sideband access functions from intel_iosf.c */
 uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
lib/intel_mmio.c +0 -0
index 9a2ee27bd5e5..40ce94c8f600 100644
@@ -324,6 +324,18 @@ uint32_t INREG(uint32_t reg)
 	return *(volatile uint32_t *)((volatile char *)mmio + reg);
 }
 
Quoted 6 lines

lib/intel_mmio.c uint32_t INREG(uint32_t reg) · line 327

Quoted 1 line
lib/intel_mmio.c +1 -0
+/* 16-bit version of INREG */

gtkdoc is missing here for these new functions. And while at it please also do the s/OUTRET/OUTREG/ type ;-)

Otherise entire series looks really nifty and has my Ack.

Fixed and pushed the series.

Jani.

Quoted 45 lines

Cheers, Daniel

Quoted 37 lines
lib/intel_mmio.c +23 -0
+uint16_t INREG16(uint32_t reg)
+{
+	return *(volatile uint16_t *)((volatile char *)mmio + reg);
+}
+
+/* 8-bit version of INREG */
+uint8_t INREG8(uint32_t reg)
+{
+	return *((volatile uint8_t *)mmio + reg);
+}
+
 /**
  * OUTRET:
  * @reg: register offset
@@ -338,3 +350,15 @@ void OUTREG(uint32_t reg, uint32_t val)
 {
 	*(volatile uint32_t *)((volatile char *)mmio + reg) = val;
 }
+
+/* 16-bit version of OUTREG */
+void OUTREG16(uint32_t reg, uint16_t val)
+{
+	*(volatile uint16_t *)((volatile char *)mmio + reg) = val;
+}
+
+/* 8-bit version of OUTREG */
+void OUTREG8(uint32_t reg, uint8_t val)
+{
+	*((volatile uint8_t *)mmio + reg) = val;
+}
Signature · 6 lines
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx