<div dir="ltr"><div>The definitions weren't changed, but the values were. The names need to be different, so that si_debug.c prints both the GFX6 and GFX9 values.</div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Dec 6, 2018 at 9:01 AM Nicolai Hähnle <<a href="mailto:nhaehnle@gmail.com">nhaehnle@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From: Nicolai Hähnle <<a href="mailto:nicolai.haehnle@amd.com" target="_blank">nicolai.haehnle@amd.com</a>><br>
<br>
The definition wasn't actually changed in gfx9, so having the suffix<br>
makes no sense.<br>
---<br>
src/amd/common/ac_nir_to_llvm.c | 2 +-<br>
src/amd/common/gfx9d.h | 12 ++++++------<br>
src/amd/common/sid.h | 12 ++++++------<br>
src/amd/vulkan/radv_image.c | 8 ++++----<br>
src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c | 6 +++---<br>
src/gallium/drivers/radeonsi/si_state.c | 10 +++++-----<br>
6 files changed, 25 insertions(+), 25 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c<br>
index fe65dfff8f3..cbb5be4b1a2 100644<br>
--- a/src/amd/common/ac_nir_to_llvm.c<br>
+++ b/src/amd/common/ac_nir_to_llvm.c<br>
@@ -1238,21 +1238,21 @@ static LLVMValueRef lower_gather4_integer(struct ac_llvm_context *ctx,<br>
if (stype == GLSL_TYPE_UINT)<br>
/* Create a NUM FORMAT - 0x2 or 0x4 - USCALED or UINT */<br>
tmp = LLVMBuildSelect(ctx->builder, compare_cube_wa, LLVMConstInt(ctx->i32, 0x8000000, false),<br>
LLVMConstInt(ctx->i32, 0x10000000, false), "");<br>
else<br>
/* Create a NUM FORMAT - 0x3 or 0x5 - SSCALED or SINT */<br>
tmp = LLVMBuildSelect(ctx->builder, compare_cube_wa, LLVMConstInt(ctx->i32, 0xc000000, false),<br>
LLVMConstInt(ctx->i32, 0x14000000, false), "");<br>
<br>
/* replace the NUM FORMAT in the descriptor */<br>
- tmp2 = LLVMBuildAnd(ctx->builder, tmp2, LLVMConstInt(ctx->i32, C_008F14_NUM_FORMAT_GFX6, false), "");<br>
+ tmp2 = LLVMBuildAnd(ctx->builder, tmp2, LLVMConstInt(ctx->i32, C_008F14_NUM_FORMAT, false), "");<br>
tmp2 = LLVMBuildOr(ctx->builder, tmp2, tmp, "");<br>
<br>
args->resource = LLVMBuildInsertElement(ctx->builder, args->resource, tmp2, ctx->i32_1, "");<br>
<br>
/* don't modify the coordinates for this case */<br>
for (unsigned c = 0; c < 2; ++c)<br>
args->coords[c] = LLVMBuildSelect(<br>
ctx->builder, compare_cube_wa,<br>
orig_coords[c], args->coords[c], "");<br>
}<br>
diff --git a/src/amd/common/gfx9d.h b/src/amd/common/gfx9d.h<br>
index 2e790c54699..5d3de5842a1 100644<br>
--- a/src/amd/common/gfx9d.h<br>
+++ b/src/amd/common/gfx9d.h<br>
@@ -1262,23 +1262,23 @@<br>
#define S_030F14_COUNT_HI(x) (((unsigned)(x) & 0x7FFFFFFF) << 0)<br>
#define G_030F14_COUNT_HI(x) (((x) >> 0) & 0x7FFFFFFF)<br>
#define C_030F14_COUNT_HI 0x80000000<br>
#define R_008F14_SQ_IMG_RSRC_WORD1 0x008F14<br>
#define S_008F14_BASE_ADDRESS_HI(x) (((unsigned)(x) & 0xFF) << 0)<br>
#define G_008F14_BASE_ADDRESS_HI(x) (((x) >> 0) & 0xFF)<br>
#define C_008F14_BASE_ADDRESS_HI 0xFFFFFF00<br>
#define S_008F14_MIN_LOD(x) (((unsigned)(x) & 0xFFF) << 8)<br>
#define G_008F14_MIN_LOD(x) (((x) >> 8) & 0xFFF)<br>
#define C_008F14_MIN_LOD 0xFFF000FF<br>
-#define S_008F14_DATA_FORMAT_GFX9(x) (((unsigned)(x) & 0x3F) << 20)<br>
-#define G_008F14_DATA_FORMAT_GFX9(x) (((x) >> 20) & 0x3F)<br>
-#define C_008F14_DATA_FORMAT_GFX9 0xFC0FFFFF<br>
+#define S_008F14_DATA_FORMAT(x) (((unsigned)(x) & 0x3F) << 20)<br>
+#define G_008F14_DATA_FORMAT(x) (((x) >> 20) & 0x3F)<br>
+#define C_008F14_DATA_FORMAT 0xFC0FFFFF<br>
#define V_008F14_IMG_DATA_FORMAT_INVALID 0x00<br>
#define V_008F14_IMG_DATA_FORMAT_8 0x01<br>
#define V_008F14_IMG_DATA_FORMAT_16 0x02<br>
#define V_008F14_IMG_DATA_FORMAT_8_8 0x03<br>
#define V_008F14_IMG_DATA_FORMAT_32 0x04<br>
#define V_008F14_IMG_DATA_FORMAT_16_16 0x05<br>
#define V_008F14_IMG_DATA_FORMAT_10_11_11 0x06<br>
#define V_008F14_IMG_DATA_FORMAT_11_11_10 0x07<br>
#define V_008F14_IMG_DATA_FORMAT_10_10_10_2 0x08<br>
#define V_008F14_IMG_DATA_FORMAT_2_10_10_10 0x09<br>
@@ -1329,23 +1329,23 @@<br>
#define V_008F14_IMG_DATA_FORMAT_N_IN_16_16_16_16 0x36<br>
#define V_008F14_IMG_DATA_FORMAT_N_IN_16_AS_16_16_16_16 0x37<br>
#define V_008F14_IMG_DATA_FORMAT_RESERVED_56 0x38<br>
#define V_008F14_IMG_DATA_FORMAT_4_4 0x39<br>
#define V_008F14_IMG_DATA_FORMAT_6_5_5 0x3A<br>
#define V_008F14_IMG_DATA_FORMAT_S8_16 0x3B<br>
#define V_008F14_IMG_DATA_FORMAT_S8_32 0x3C<br>
#define V_008F14_IMG_DATA_FORMAT_8_AS_32 0x3D<br>
#define V_008F14_IMG_DATA_FORMAT_8_AS_32_32 0x3E<br>
#define V_008F14_IMG_DATA_FORMAT_32_AS_32_32_32_32 0x3F<br>
-#define S_008F14_NUM_FORMAT_GFX9(x) (((unsigned)(x) & 0x0F) << 26)<br>
-#define G_008F14_NUM_FORMAT_GFX9(x) (((x) >> 26) & 0x0F)<br>
-#define C_008F14_NUM_FORMAT_GFX9 0xC3FFFFFF<br>
+#define S_008F14_NUM_FORMAT(x) (((unsigned)(x) & 0x0F) << 26)<br>
+#define G_008F14_NUM_FORMAT(x) (((x) >> 26) & 0x0F)<br>
+#define C_008F14_NUM_FORMAT 0xC3FFFFFF<br>
#define V_008F14_IMG_NUM_FORMAT_UNORM 0x00<br>
#define V_008F14_IMG_NUM_FORMAT_SNORM 0x01<br>
#define V_008F14_IMG_NUM_FORMAT_USCALED 0x02<br>
#define V_008F14_IMG_NUM_FORMAT_SSCALED 0x03<br>
#define V_008F14_IMG_NUM_FORMAT_UINT 0x04<br>
#define V_008F14_IMG_NUM_FORMAT_SINT 0x05<br>
#define V_008F14_IMG_NUM_FORMAT_RESERVED_6 0x06<br>
#define V_008F14_IMG_NUM_FORMAT_FLOAT 0x07<br>
#define V_008F14_IMG_NUM_FORMAT_METADATA 0x08<br>
#define V_008F14_IMG_NUM_FORMAT_SRGB 0x09<br>
diff --git a/src/amd/common/sid.h b/src/amd/common/sid.h<br>
index 49683f1aa5a..a6d0bc2fe42 100644<br>
--- a/src/amd/common/sid.h<br>
+++ b/src/amd/common/sid.h<br>
@@ -2120,23 +2120,23 @@<br>
#define S_030F14_COUNT_HI(x) (((unsigned)(x) & 0x7FFFFFFF) << 0)<br>
#define G_030F14_COUNT_HI(x) (((x) >> 0) & 0x7FFFFFFF)<br>
#define C_030F14_COUNT_HI 0x80000000<br>
#define R_008F14_SQ_IMG_RSRC_WORD1 0x008F14<br>
#define S_008F14_BASE_ADDRESS_HI(x) (((unsigned)(x) & 0xFF) << 0)<br>
#define G_008F14_BASE_ADDRESS_HI(x) (((x) >> 0) & 0xFF)<br>
#define C_008F14_BASE_ADDRESS_HI 0xFFFFFF00<br>
#define S_008F14_MIN_LOD(x) (((unsigned)(x) & 0xFFF) << 8)<br>
#define G_008F14_MIN_LOD(x) (((x) >> 8) & 0xFFF)<br>
#define C_008F14_MIN_LOD 0xFFF000FF<br>
-#define S_008F14_DATA_FORMAT_GFX6(x) (((unsigned)(x) & 0x3F) << 20)<br>
-#define G_008F14_DATA_FORMAT_GFX6(x) (((x) >> 20) & 0x3F)<br>
-#define C_008F14_DATA_FORMAT_GFX6 0xFC0FFFFF<br>
+#define S_008F14_DATA_FORMAT(x) (((unsigned)(x) & 0x3F) << 20)<br>
+#define G_008F14_DATA_FORMAT(x) (((x) >> 20) & 0x3F)<br>
+#define C_008F14_DATA_FORMAT 0xFC0FFFFF<br>
#define V_008F14_IMG_DATA_FORMAT_INVALID 0x00<br>
#define V_008F14_IMG_DATA_FORMAT_8 0x01<br>
#define V_008F14_IMG_DATA_FORMAT_16 0x02<br>
#define V_008F14_IMG_DATA_FORMAT_8_8 0x03<br>
#define V_008F14_IMG_DATA_FORMAT_32 0x04<br>
#define V_008F14_IMG_DATA_FORMAT_16_16 0x05<br>
#define V_008F14_IMG_DATA_FORMAT_10_11_11 0x06<br>
#define V_008F14_IMG_DATA_FORMAT_11_11_10 0x07<br>
#define V_008F14_IMG_DATA_FORMAT_10_10_10_2 0x08<br>
#define V_008F14_IMG_DATA_FORMAT_2_10_10_10 0x09<br>
@@ -2187,23 +2187,23 @@<br>
#define V_008F14_IMG_DATA_FORMAT_FMASK32_S8_F8 0x36<br>
#define V_008F14_IMG_DATA_FORMAT_FMASK64_S16_F4 0x37<br>
#define V_008F14_IMG_DATA_FORMAT_FMASK64_S16_F8 0x38<br>
#define V_008F14_IMG_DATA_FORMAT_4_4 0x39<br>
#define V_008F14_IMG_DATA_FORMAT_6_5_5 0x3A<br>
#define V_008F14_IMG_DATA_FORMAT_1 0x3B<br>
#define V_008F14_IMG_DATA_FORMAT_1_REVERSED 0x3C<br>
#define V_008F14_IMG_DATA_FORMAT_32_AS_8 0x3D /* not on stoney */<br>
#define V_008F14_IMG_DATA_FORMAT_32_AS_8_8 0x3E /* not on stoney */<br>
#define V_008F14_IMG_DATA_FORMAT_32_AS_32_32_32_32 0x3F<br>
-#define S_008F14_NUM_FORMAT_GFX6(x) (((unsigned)(x) & 0x0F) << 26)<br>
-#define G_008F14_NUM_FORMAT_GFX6(x) (((x) >> 26) & 0x0F)<br>
-#define C_008F14_NUM_FORMAT_GFX6 0xC3FFFFFF<br>
+#define S_008F14_NUM_FORMAT(x) (((unsigned)(x) & 0x0F) << 26)<br>
+#define G_008F14_NUM_FORMAT(x) (((x) >> 26) & 0x0F)<br>
+#define C_008F14_NUM_FORMAT 0xC3FFFFFF<br>
#define V_008F14_IMG_NUM_FORMAT_UNORM 0x00<br>
#define V_008F14_IMG_NUM_FORMAT_SNORM 0x01<br>
#define V_008F14_IMG_NUM_FORMAT_USCALED 0x02<br>
#define V_008F14_IMG_NUM_FORMAT_SSCALED 0x03<br>
#define V_008F14_IMG_NUM_FORMAT_UINT 0x04<br>
#define V_008F14_IMG_NUM_FORMAT_SINT 0x05<br>
#define V_008F14_IMG_NUM_FORMAT_SNORM_OGL 0x06<br>
#define V_008F14_IMG_NUM_FORMAT_FLOAT 0x07<br>
#define V_008F14_IMG_NUM_FORMAT_RESERVED_8 0x08<br>
#define V_008F14_IMG_NUM_FORMAT_SRGB 0x09<br>
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c<br>
index 090ca70a327..94cde4d19f2 100644<br>
--- a/src/amd/vulkan/radv_image.c<br>
+++ b/src/amd/vulkan/radv_image.c<br>
@@ -528,22 +528,22 @@ si_make_texture_descriptor(struct radv_device *device,<br>
height = 1;<br>
depth = image->info.array_size;<br>
} else if (type == V_008F1C_SQ_RSRC_IMG_2D_ARRAY ||<br>
type == V_008F1C_SQ_RSRC_IMG_2D_MSAA_ARRAY) {<br>
if (view_type != VK_IMAGE_VIEW_TYPE_3D)<br>
depth = image->info.array_size;<br>
} else if (type == V_008F1C_SQ_RSRC_IMG_CUBE)<br>
depth = image->info.array_size / 6;<br>
<br>
state[0] = 0;<br>
- state[1] = (S_008F14_DATA_FORMAT_GFX6(data_format) |<br>
- S_008F14_NUM_FORMAT_GFX6(num_format));<br>
+ state[1] = (S_008F14_DATA_FORMAT(data_format) |<br>
+ S_008F14_NUM_FORMAT(num_format));<br>
state[2] = (S_008F18_WIDTH(width - 1) |<br>
S_008F18_HEIGHT(height - 1) |<br>
S_008F18_PERF_MOD(4));<br>
state[3] = (S_008F1C_DST_SEL_X(radv_map_swizzle(swizzle[0])) |<br>
S_008F1C_DST_SEL_Y(radv_map_swizzle(swizzle[1])) |<br>
S_008F1C_DST_SEL_Z(radv_map_swizzle(swizzle[2])) |<br>
S_008F1C_DST_SEL_W(radv_map_swizzle(swizzle[3])) |<br>
S_008F1C_BASE_LEVEL(image->info.samples > 1 ?<br>
0 : first_level) |<br>
S_008F1C_LAST_LEVEL(image->info.samples > 1 ?<br>
@@ -628,22 +628,22 @@ si_make_texture_descriptor(struct radv_device *device,<br>
default:<br>
assert(0);<br>
fmask_format = V_008F14_IMG_DATA_FORMAT_INVALID;<br>
}<br>
num_format = V_008F14_IMG_NUM_FORMAT_UINT;<br>
}<br>
<br>
fmask_state[0] = va >> 8;<br>
fmask_state[0] |= image->fmask.tile_swizzle;<br>
fmask_state[1] = S_008F14_BASE_ADDRESS_HI(va >> 40) |<br>
- S_008F14_DATA_FORMAT_GFX6(fmask_format) |<br>
- S_008F14_NUM_FORMAT_GFX6(num_format);<br>
+ S_008F14_DATA_FORMAT(fmask_format) |<br>
+ S_008F14_NUM_FORMAT(num_format);<br>
fmask_state[2] = S_008F18_WIDTH(width - 1) |<br>
S_008F18_HEIGHT(height - 1);<br>
fmask_state[3] = S_008F1C_DST_SEL_X(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_Y(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_Z(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_W(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_TYPE(radv_tex_dim(image->type, view_type, image->info.array_size, 0, false, false));<br>
fmask_state[4] = 0;<br>
fmask_state[5] = S_008F24_BASE_ARRAY(first_layer);<br>
fmask_state[6] = 0;<br>
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
index 6decedc4cce..1cb0f9d1c60 100644<br>
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
@@ -1223,24 +1223,24 @@ si_lower_gather4_integer(struct si_shader_context *ctx,<br>
LLVMConstInt(ctx->i32, 20, false), "");<br>
data_format = LLVMBuildAnd(builder, data_format,<br>
LLVMConstInt(ctx->i32, (1u << 6) - 1, false), "");<br>
wa_8888 = LLVMBuildICmp(<br>
builder, LLVMIntEQ, data_format,<br>
LLVMConstInt(ctx->i32, V_008F14_IMG_DATA_FORMAT_8_8_8_8, false),<br>
"");<br>
<br>
uint32_t wa_num_format =<br>
return_type == TGSI_RETURN_TYPE_UINT ?<br>
- S_008F14_NUM_FORMAT_GFX6(V_008F14_IMG_NUM_FORMAT_USCALED) :<br>
- S_008F14_NUM_FORMAT_GFX6(V_008F14_IMG_NUM_FORMAT_SSCALED);<br>
+ S_008F14_NUM_FORMAT(V_008F14_IMG_NUM_FORMAT_USCALED) :<br>
+ S_008F14_NUM_FORMAT(V_008F14_IMG_NUM_FORMAT_SSCALED);<br>
wa_formats = LLVMBuildAnd(builder, formats,<br>
- LLVMConstInt(ctx->i32, C_008F14_NUM_FORMAT_GFX6, false),<br>
+ LLVMConstInt(ctx->i32, C_008F14_NUM_FORMAT, false),<br>
"");<br>
wa_formats = LLVMBuildOr(builder, wa_formats,<br>
LLVMConstInt(ctx->i32, wa_num_format, false), "");<br>
<br>
formats = LLVMBuildSelect(builder, wa_8888, wa_formats, formats, "");<br>
args->resource = LLVMBuildInsertElement(<br>
builder, args->resource, formats, ctx->i32_1, "");<br>
}<br>
<br>
if (target == TGSI_TEXTURE_RECT ||<br>
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c<br>
index 41aa4ef3336..0960f379c4f 100644<br>
--- a/src/gallium/drivers/radeonsi/si_state.c<br>
+++ b/src/gallium/drivers/radeonsi/si_state.c<br>
@@ -3821,22 +3821,22 @@ si_make_texture_descriptor(struct si_screen *screen,<br>
height = 1;<br>
depth = res->array_size;<br>
} else if (type == V_008F1C_SQ_RSRC_IMG_2D_ARRAY ||<br>
type == V_008F1C_SQ_RSRC_IMG_2D_MSAA_ARRAY) {<br>
if (sampler || res->target != PIPE_TEXTURE_3D)<br>
depth = res->array_size;<br>
} else if (type == V_008F1C_SQ_RSRC_IMG_CUBE)<br>
depth = res->array_size / 6;<br>
<br>
state[0] = 0;<br>
- state[1] = (S_008F14_DATA_FORMAT_GFX6(data_format) |<br>
- S_008F14_NUM_FORMAT_GFX6(num_format));<br>
+ state[1] = (S_008F14_DATA_FORMAT(data_format) |<br>
+ S_008F14_NUM_FORMAT(num_format));<br>
state[2] = (S_008F18_WIDTH(width - 1) |<br>
S_008F18_HEIGHT(height - 1) |<br>
S_008F18_PERF_MOD(4));<br>
state[3] = (S_008F1C_DST_SEL_X(si_map_swizzle(swizzle[0])) |<br>
S_008F1C_DST_SEL_Y(si_map_swizzle(swizzle[1])) |<br>
S_008F1C_DST_SEL_Z(si_map_swizzle(swizzle[2])) |<br>
S_008F1C_DST_SEL_W(si_map_swizzle(swizzle[3])) |<br>
S_008F1C_BASE_LEVEL(num_samples > 1 ? 0 : first_level) |<br>
S_008F1C_LAST_LEVEL(num_samples > 1 ?<br>
util_logbase2(num_samples) :<br>
@@ -3977,22 +3977,22 @@ si_make_texture_descriptor(struct si_screen *screen,<br>
break;<br>
default:<br>
unreachable("invalid nr_samples");<br>
}<br>
num_format = V_008F14_IMG_NUM_FORMAT_UINT;<br>
}<br>
#undef FMASK<br>
<br>
fmask_state[0] = (va >> 8) | tex->surface.fmask_tile_swizzle;<br>
fmask_state[1] = S_008F14_BASE_ADDRESS_HI(va >> 40) |<br>
- S_008F14_DATA_FORMAT_GFX6(data_format) |<br>
- S_008F14_NUM_FORMAT_GFX6(num_format);<br>
+ S_008F14_DATA_FORMAT(data_format) |<br>
+ S_008F14_NUM_FORMAT(num_format);<br>
fmask_state[2] = S_008F18_WIDTH(width - 1) |<br>
S_008F18_HEIGHT(height - 1);<br>
fmask_state[3] = S_008F1C_DST_SEL_X(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_Y(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_Z(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_DST_SEL_W(V_008F1C_SQ_SEL_X) |<br>
S_008F1C_TYPE(si_tex_dim(screen, tex, target, 0));<br>
fmask_state[4] = 0;<br>
fmask_state[5] = S_008F24_BASE_ARRAY(first_layer);<br>
fmask_state[6] = 0;<br>
@@ -4154,21 +4154,21 @@ si_create_sampler_view_custom(struct pipe_context *ctx,<br>
state->u.tex.first_level,<br>
state->format);<br>
<br>
si_make_texture_descriptor(sctx->screen, tex, true,<br>
state->target, pipe_format, state_swizzle,<br>
first_level, last_level,<br>
state->u.tex.first_layer, last_layer,<br>
width, height, depth,<br>
view->state, view->fmask_state);<br>
<br>
- unsigned num_format = G_008F14_NUM_FORMAT_GFX6(view->state[1]);<br>
+ unsigned num_format = G_008F14_NUM_FORMAT(view->state[1]);<br>
view->is_integer =<br>
num_format == V_008F14_IMG_NUM_FORMAT_USCALED ||<br>
num_format == V_008F14_IMG_NUM_FORMAT_SSCALED ||<br>
num_format == V_008F14_IMG_NUM_FORMAT_UINT ||<br>
num_format == V_008F14_IMG_NUM_FORMAT_SINT;<br>
view->base_level_info = &surflevel[base_level];<br>
view->base_level = base_level;<br>
view->block_width = util_format_get_blockwidth(pipe_format);<br>
return &view->base;<br>
}<br>
-- <br>
2.19.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>