summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2013-11-21 20:27:15 -0800
committerMark Mueller <MarkKMueller@gmail.com>2014-01-13 09:44:30 -0800
commit74ac8f19c79773714364a433efc40df1e569c19d (patch)
tree0f350a61da2be344cdca2b151b07c859f12285e5
parent920f50bd3f22b8b965a42b06103c4d2491296064 (diff)
Resovled render and sample target issues
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h7
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_state.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_surface_formats.c829
5 files changed, 426 insertions, 414 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 1b4275138d..c78ffe7aad 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -585,8 +585,10 @@ brwCreateContext(gl_api api,
brw->bufmgr = screen->bufmgr;
brw->gen = devinfo->gen;
+
brw->gt = devinfo->gt;
brw->is_g4x = devinfo->is_g4x;
+ brw->gen_high = (brw->gen * 10) + (brw->is_g4x ? 5 : 0);
brw->is_baytrail = devinfo->is_baytrail;
brw->is_haswell = devinfo->is_haswell;
brw->has_llc = devinfo->has_llc;
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 9d1de215dd..d75bd307d1 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -197,11 +197,7 @@ typedef enum {
sample_scale = 1 << 8,
alpha_blend_render = 1 << 9,
- internal_format_en = 1 << 10,
- blorp_render_target = 1 << 11,
- blorp_sample_target = 1 << 12,
-
- x_shadow = 1 << 13,
+ x_shadow = 1 << 10,
scale_mask = scale_x | scale_y | scale_z | scale_w,
scale_xy = scale_x | scale_y,
@@ -1130,6 +1126,7 @@ struct brw_context
uint32_t max_gtt_map_object_size;
int gen;
+ int gen_high;
int gt;
bool is_g4x;
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
index 062d4c99de..bfb2f70abc 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -489,6 +489,7 @@
#define BRW_SURFACE_FORMAT_SHIFT 18
#define BRW_SURFACE_FORMAT_MASK INTEL_MASK(26, 18)
+#define BRW_SURFACE_FORMAT_NONE 0Xffff
typedef u_int16_t BRW_SURFACE;
#define BRW_SURFACERETURNFORMAT_FLOAT32 0
diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
index f5e1b5ec43..5455691969 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -189,6 +189,7 @@ uint32_t brw_get_surface_num_multisamples(unsigned num_samples);
void brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_flags,
BRW_SURFACE *render_target,
BRW_SURFACE *sample_format);
+bool brw_format_for_filter(struct brw_context *brw, const BRW_SURFACE brw_surface_sel);
bool brw_format_for_render(struct brw_context *brw, const BRW_SURFACE brw_surface_sel);
bool brw_format_for_sampling(struct brw_context *brw, const BRW_SURFACE brw_surface_sel);
diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c b/src/mesa/drivers/dri/i965/brw_surface_formats.c
index 8176c76f8d..55e43259a2 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -308,15 +308,21 @@ const struct surface_format_info surface_formats[] = {
};
bool
+brw_format_for_filter(struct brw_context *brw, const BRW_SURFACE brw_surface_sel)
+{
+ return BRW_SURFACE_FORMAT_NONE > brw_surface_sel && (surface_formats[brw_surface_sel].filtering <= brw->gen_high);
+}
+
+bool
brw_format_for_render(struct brw_context *brw, const BRW_SURFACE brw_surface_sel)
{
- return (surface_formats[brw_surface_sel].render_target <= brw->gen * 10);
+ return BRW_SURFACE_FORMAT_NONE > brw_surface_sel && (surface_formats[brw_surface_sel].render_target <= brw->gen_high);
}
bool
brw_format_for_sampling(struct brw_context *brw, const BRW_SURFACE brw_surface_sel)
{
- return (surface_formats[brw_surface_sel].sampling <= brw->gen * 10);
+ return BRW_SURFACE_FORMAT_NONE > brw_surface_sel && (surface_formats[brw_surface_sel].sampling <= brw->gen_high);
}
#undef x
@@ -340,572 +346,572 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
*/
static const struct format_translator table[MESA_PRIVATE_FORMAT_COUNT] =
{
- [MESA_FORMAT_RGBA8888] = {BRW_SURFACEFORMAT_R8G8B8A8_UNORM, /* shadow render target */
+ [MESA_FORMAT_RGBA8888] = {BRW_SURFACE_FORMAT_NONE, /* shadow render target */
BRW_SURFACEFORMAT_R8G8B8A8_UNORM, /* shadow sample target */
swizzle_all}, /* gl_format to brw surface processing */
[MESA_FORMAT_RGBA8888_REV] = {BRW_SURFACEFORMAT_R8G8B8A8_UNORM,
BRW_SURFACEFORMAT_R8G8B8A8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
[MESA_FORMAT_ARGB8888] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_ARGB8888_REV] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
+ 0},
+ [MESA_FORMAT_ARGB8888_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
swizzle_all},
- [MESA_FORMAT_RGBX8888] = {BRW_SURFACEFORMAT_R8G8B8X8_UNORM,
+ [MESA_FORMAT_RGBX8888] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
alpha_blend_render | swizzle_all},
[MESA_FORMAT_RGBX8888_REV] = {BRW_SURFACEFORMAT_R8G8B8X8_UNORM,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- internal_format_en | alpha_blend_render | blorp_sample_target},
+ 0 | alpha_blend_render},
[MESA_FORMAT_XRGB8888] = {BRW_SURFACEFORMAT_B8G8R8X8_UNORM,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- internal_format_en | alpha_blend_render | blorp_sample_target},
- [MESA_FORMAT_XRGB8888_REV] = {BRW_SURFACEFORMAT_B8G8R8X8_UNORM,
+ 0 | alpha_blend_render},
+ [MESA_FORMAT_XRGB8888_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
alpha_blend_render | swizzle_all},
- [MESA_FORMAT_RGB888] = {BRW_SURFACEFORMAT_R8_UNORM,
- 0,
- sample_scale | swizzle_xyz},
- [MESA_FORMAT_BGR888] = {BRW_SURFACEFORMAT_R8_UNORM,
- 0,
+ [MESA_FORMAT_RGB888] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UNORM,
+ sample_scale},
+ [MESA_FORMAT_BGR888] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UNORM,
sample_scale},
[MESA_FORMAT_RGB565] = {BRW_SURFACEFORMAT_B5G6R5_UNORM,
BRW_SURFACEFORMAT_B5G6R5_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_RGB565_REV] = {BRW_SURFACEFORMAT_B5G6R5_UNORM,
+ 0},
+ [MESA_FORMAT_RGB565_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G6R5_UNORM,
swizzle_xyz},
[MESA_FORMAT_ARGB4444] = {BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_ARGB4444_REV] = {BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
+ 0},
+ [MESA_FORMAT_ARGB4444_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
swizzle_all},
- [MESA_FORMAT_RGBA5551] = {BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
+ [MESA_FORMAT_RGBA5551] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
swizzle_all},
[MESA_FORMAT_ARGB1555] = {BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_ARGB1555_REV] = {BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
+ 0},
+ [MESA_FORMAT_ARGB1555_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
swizzle_yzw},
- [MESA_FORMAT_AL44] = {BRW_SURFACEFORMAT_A8_UNORM,
+ [MESA_FORMAT_AL44] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
scale_x},
- [MESA_FORMAT_AL88] = {BRW_SURFACEFORMAT_L8A8_UNORM,
- BRW_SURFACEFORMAT_R8G8_UNORM,
- internal_format_en},
- [MESA_FORMAT_AL88_REV] = {BRW_SURFACEFORMAT_L8A8_UNORM,
+ [MESA_FORMAT_AL88] = {BRW_SURFACEFORMAT_R8G8_UNORM,
+ BRW_SURFACEFORMAT_L8A8_UNORM,
+ 0},
+ [MESA_FORMAT_AL88_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
swizzle_xy},
- [MESA_FORMAT_AL1616] = {BRW_SURFACEFORMAT_L16A16_UNORM,
- BRW_SURFACEFORMAT_R16G16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_AL1616_REV] = {BRW_SURFACEFORMAT_L16A16_UNORM,
+ [MESA_FORMAT_AL1616] = {BRW_SURFACEFORMAT_R16G16_UNORM,
+ BRW_SURFACEFORMAT_L16A16_UNORM,
+ 0},
+ [MESA_FORMAT_AL1616_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16_UNORM,
swizzle_xy},
- [MESA_FORMAT_RGB332] = {BRW_SURFACEFORMAT_R8_UNORM,
- BRW_SURFACEFORMAT_B5G6R5_UNORM,
+ [MESA_FORMAT_RGB332] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UNORM,
scale_x},
[MESA_FORMAT_A8] = {BRW_SURFACEFORMAT_A8_UNORM,
BRW_SURFACEFORMAT_A8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_A16] = {BRW_SURFACEFORMAT_A16_UNORM,
- BRW_SURFACEFORMAT_R16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_L8] = {BRW_SURFACEFORMAT_L8_UNORM,
- BRW_SURFACEFORMAT_R8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_L16] = {BRW_SURFACEFORMAT_L16_UNORM,
- BRW_SURFACEFORMAT_R16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_I8] = {BRW_SURFACEFORMAT_I8_UNORM,
- BRW_SURFACEFORMAT_R8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_I16] = {BRW_SURFACEFORMAT_I16_UNORM,
- BRW_SURFACEFORMAT_R16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
+ [MESA_FORMAT_A16] = {BRW_SURFACEFORMAT_R16_UNORM,
+ BRW_SURFACEFORMAT_A16_UNORM,
+ 0},
+ [MESA_FORMAT_L8] = {BRW_SURFACEFORMAT_R8_UNORM,
+ BRW_SURFACEFORMAT_L8_UNORM,
+ 0},
+ [MESA_FORMAT_L16] = {BRW_SURFACEFORMAT_R16_UNORM,
+ BRW_SURFACEFORMAT_L16_UNORM,
+ 0},
+ [MESA_FORMAT_I8] = {BRW_SURFACEFORMAT_R8_UNORM,
+ BRW_SURFACEFORMAT_I8_UNORM,
+ 0},
+ [MESA_FORMAT_I16] = {BRW_SURFACEFORMAT_R16_UNORM,
+ BRW_SURFACEFORMAT_I16_UNORM,
+ 0},
[MESA_FORMAT_YCBCR_REV] = {BRW_SURFACEFORMAT_YCRCB_NORMAL,
BRW_SURFACEFORMAT_YCRCB_NORMAL,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
[MESA_FORMAT_YCBCR] = {BRW_SURFACEFORMAT_YCRCB_SWAPUVY,
BRW_SURFACEFORMAT_YCRCB_SWAPUVY,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
[MESA_FORMAT_R8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_R8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
[MESA_FORMAT_GR88] = {BRW_SURFACEFORMAT_R8G8_UNORM,
BRW_SURFACEFORMAT_R8G8_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_RG88] = {BRW_SURFACEFORMAT_R8G8_UNORM,
+ 0},
+ [MESA_FORMAT_RG88] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
swizzle_xy},
[MESA_FORMAT_R16] = {BRW_SURFACEFORMAT_R16_UNORM,
BRW_SURFACEFORMAT_R16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
+ 0},
[MESA_FORMAT_GR1616] = {BRW_SURFACEFORMAT_R16G16_UNORM,
BRW_SURFACEFORMAT_R16G16_UNORM,
- internal_format_en | blorp_render_target | blorp_sample_target},
- [MESA_FORMAT_RG1616] = {BRW_SURFACEFORMAT_R16G16_UNORM,
+ 0},
+ [MESA_FORMAT_RG1616] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16_UNORM,
swizzle_xy},
[MESA_FORMAT_ARGB2101010] = {BRW_SURFACEFORMAT_B10G10R10A2_UNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_Z24_S8] = {BRW_SURFACEFORMAT_I24X8_UNORM,
+ BRW_SURFACEFORMAT_B10G10R10A2_UNORM,
+ 0},
+ [MESA_FORMAT_Z24_S8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
swizzle_all},
- [MESA_FORMAT_S8_Z24] = {BRW_SURFACEFORMAT_I24X8_UNORM,
- BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- internal_format_en},
- [MESA_FORMAT_Z16] = {BRW_SURFACEFORMAT_I16_UNORM,
- BRW_SURFACEFORMAT_R16_UNORM,
+ [MESA_FORMAT_S8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
+ BRW_SURFACEFORMAT_I24X8_UNORM,
+ 0},
+ [MESA_FORMAT_Z16] = {BRW_SURFACEFORMAT_R16_UNORM,
+ BRW_SURFACEFORMAT_I16_UNORM,
0},
- [MESA_FORMAT_X8_Z24] = {BRW_SURFACEFORMAT_I24X8_UNORM,
- BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- internal_format_en},
- [MESA_FORMAT_Z24_X8] = {0,
- 0,
+ [MESA_FORMAT_X8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
+ BRW_SURFACEFORMAT_I24X8_UNORM,
+ 0},
+ [MESA_FORMAT_Z24_X8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_Z32] = {0,
- 0,
+ [MESA_FORMAT_Z32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
[MESA_FORMAT_S8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_R8_UNORM,
0},
- [MESA_FORMAT_SRGB8] = {BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB,
- 0,
+ [MESA_FORMAT_SRGB8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB,
swizzle_xyz},
- [MESA_FORMAT_SRGBA8] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
- 0,
+ [MESA_FORMAT_SRGBA8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
swizzle_all},
[MESA_FORMAT_SARGB8] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SL8] = {BRW_SURFACEFORMAT_L8_UNORM_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SLA8] = {BRW_SURFACEFORMAT_L8A8_UNORM_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SRGB_DXT1] = {BRW_SURFACEFORMAT_DXT1_RGB_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SRGBA_DXT1] = {BRW_SURFACEFORMAT_BC1_UNORM_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SRGBA_DXT3] = {BRW_SURFACEFORMAT_BC2_UNORM_SRGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_SRGBA_DXT5] = {BRW_SURFACEFORMAT_BC3_UNORM_SRGB,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
+ 0},
+ [MESA_FORMAT_SL8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_L8_UNORM_SRGB,
+ 0},
+ [MESA_FORMAT_SLA8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_L8A8_UNORM_SRGB,
+ 0},
+ [MESA_FORMAT_SRGB_DXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_DXT1_RGB_SRGB,
+ 0},
+ [MESA_FORMAT_SRGBA_DXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC1_UNORM_SRGB,
+ 0},
+ [MESA_FORMAT_SRGBA_DXT3] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC2_UNORM_SRGB,
+ 0},
+ [MESA_FORMAT_SRGBA_DXT5] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC3_UNORM_SRGB,
+ 0},
- [MESA_FORMAT_RGB_FXT1] = {BRW_SURFACEFORMAT_FXT1,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_FXT1] = {BRW_SURFACEFORMAT_FXT1,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_DXT1] = {BRW_SURFACEFORMAT_DXT1_RGB,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_DXT1] = {BRW_SURFACEFORMAT_BC1_UNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_DXT3] = {BRW_SURFACEFORMAT_BC2_UNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_DXT5] = {BRW_SURFACEFORMAT_BC3_UNORM,
- 0,
- internal_format_en},
+ [MESA_FORMAT_RGB_FXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_FXT1,
+ 0},
+ [MESA_FORMAT_RGBA_FXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_FXT1,
+ 0},
+ [MESA_FORMAT_RGB_DXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_DXT1_RGB,
+ 0},
+ [MESA_FORMAT_RGBA_DXT1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC1_UNORM,
+ 0},
+ [MESA_FORMAT_RGBA_DXT3] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC2_UNORM,
+ 0},
+ [MESA_FORMAT_RGBA_DXT5] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC3_UNORM,
+ 0},
[MESA_FORMAT_RGBA_FLOAT32] = {BRW_SURFACEFORMAT_R32G32B32A32_FLOAT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32G32B32A32_FLOAT,
+ 0},
[MESA_FORMAT_RGBA_FLOAT16] = {BRW_SURFACEFORMAT_R16G16B16A16_FLOAT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_FLOAT32] = {BRW_SURFACEFORMAT_R32G32B32_FLOAT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_FLOAT16] = {BRW_SURFACEFORMAT_R16G16B16_FLOAT,
- 0,
- internal_format_en},
- [MESA_FORMAT_ALPHA_FLOAT32] = {BRW_SURFACEFORMAT_A32_FLOAT,
- BRW_SURFACEFORMAT_R32_FLOAT,
- internal_format_en},
- [MESA_FORMAT_ALPHA_FLOAT16] = {BRW_SURFACEFORMAT_A16_FLOAT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16B16A16_FLOAT,
+ 0},
+ [MESA_FORMAT_RGB_FLOAT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32G32B32_FLOAT,
+ 0},
+ [MESA_FORMAT_RGB_FLOAT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16_FLOAT,
+ 0},
+ [MESA_FORMAT_ALPHA_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
+ BRW_SURFACEFORMAT_A32_FLOAT,
+ 0},
+ [MESA_FORMAT_ALPHA_FLOAT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_A16_FLOAT,
+ 0},
[MESA_FORMAT_LUMINANCE_FLOAT32] = {BRW_SURFACEFORMAT_L32_FLOAT,
BRW_SURFACEFORMAT_R32_FLOAT,
- internal_format_en},
- [MESA_FORMAT_LUMINANCE_FLOAT16] = {BRW_SURFACEFORMAT_L16_FLOAT,
- BRW_SURFACEFORMAT_R16_FLOAT,
- internal_format_en},
- [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = {BRW_SURFACEFORMAT_L32A32_FLOAT,
- 0,
- internal_format_en},
- [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = {BRW_SURFACEFORMAT_L16A16_FLOAT,
- 0,
- internal_format_en},
- [MESA_FORMAT_INTENSITY_FLOAT32] = {BRW_SURFACEFORMAT_I32_FLOAT,
- BRW_SURFACEFORMAT_R32_FLOAT,
- internal_format_en},
- [MESA_FORMAT_INTENSITY_FLOAT16] = {BRW_SURFACEFORMAT_I16_FLOAT,
- BRW_SURFACEFORMAT_R16_FLOAT,
- internal_format_en},
+ 0},
+ [MESA_FORMAT_LUMINANCE_FLOAT16] = {BRW_SURFACEFORMAT_R16_FLOAT,
+ BRW_SURFACEFORMAT_L16_FLOAT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_L32A32_FLOAT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_L16A16_FLOAT,
+ 0},
+ [MESA_FORMAT_INTENSITY_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
+ BRW_SURFACEFORMAT_I32_FLOAT,
+ 0},
+ [MESA_FORMAT_INTENSITY_FLOAT16] = {BRW_SURFACEFORMAT_R16_FLOAT,
+ BRW_SURFACEFORMAT_I16_FLOAT,
+ 0},
[MESA_FORMAT_R_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
BRW_SURFACEFORMAT_R32_FLOAT,
- internal_format_en},
+ 0},
[MESA_FORMAT_R_FLOAT16] = {BRW_SURFACEFORMAT_R16_FLOAT,
BRW_SURFACEFORMAT_R16_FLOAT,
- internal_format_en},
- [MESA_FORMAT_RG_FLOAT32] = {BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
- BRW_SURFACEFORMAT_R32G32_FLOAT,
- internal_format_en},
+ 0},
+ [MESA_FORMAT_RG_FLOAT32] = {BRW_SURFACEFORMAT_R32G32_FLOAT,
+ BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
+ 0},
[MESA_FORMAT_RG_FLOAT16] = {BRW_SURFACEFORMAT_R16G16_FLOAT,
BRW_SURFACEFORMAT_R16G16_FLOAT,
- internal_format_en},
+ 0},
- [MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
- 0,
+ [MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UINT,
0},
- [MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACEFORMAT_R16_UINT,
- 0,
+ [MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_UINT,
0},
- [MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACEFORMAT_R32_UINT,
- 0,
+ [MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_UINT,
0},
- [MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
- 0,
+ [MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_SINT,
0},
- [MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACEFORMAT_R16_SINT,
- 0,
+ [MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_SINT,
0},
- [MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACEFORMAT_R32_SINT,
- 0,
+ [MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_SINT,
0},
- [MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
- 0,
+ [MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UINT,
0},
- [MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACEFORMAT_R16_UINT,
- 0,
+ [MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_UINT,
0},
- [MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACEFORMAT_R32_UINT,
- 0,
+ [MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_UINT,
0},
- [MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
- 0,
+ [MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_SINT,
0},
- [MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACEFORMAT_R16_SINT,
- 0,
+ [MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_SINT,
0},
- [MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACEFORMAT_R32_SINT,
- 0,
+ [MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_SINT,
0},
- [MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UINT,
0},
- [MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACEFORMAT_R16_UINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_UINT,
0},
- [MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACEFORMAT_R32_UINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_UINT,
0},
- [MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_SINT,
0},
- [MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACEFORMAT_R16_SINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_SINT,
0},
- [MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACEFORMAT_R32_SINT,
- 0,
+ [MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_SINT,
0},
- [MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
- 0,
- 0 | 0},
- [MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = {BRW_SURFACEFORMAT_R16_UINT,
- 0,
- 0 | 0},
- [MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = {BRW_SURFACEFORMAT_R32_UINT,
- 0,
- 0 | 0},
- [MESA_FORMAT_LUMINANCE_ALPHA_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
- 0,
- 0 | 0},
- [MESA_FORMAT_LUMINANCE_ALPHA_INT16] = {BRW_SURFACEFORMAT_R16_SINT,
- 0,
- 0 | 0},
- [MESA_FORMAT_LUMINANCE_ALPHA_INT32] = {BRW_SURFACEFORMAT_R32_SINT,
- 0,
- 0 | 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_UINT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_UINT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_UINT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_SINT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16_SINT,
+ 0},
+ [MESA_FORMAT_LUMINANCE_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32_SINT,
+ 0},
[MESA_FORMAT_R_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8_SINT,
+ 0},
[MESA_FORMAT_RG_INT8] = {BRW_SURFACEFORMAT_R8G8_SINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_INT8] = {BRW_SURFACEFORMAT_R8G8B8_SINT,
- 0,
+ BRW_SURFACEFORMAT_R8G8_SINT,
+ 0},
+ [MESA_FORMAT_RGB_INT8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8_SINT,
sample_scale},
[MESA_FORMAT_RGBA_INT8] = {BRW_SURFACEFORMAT_R8G8B8A8_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8G8B8A8_SINT,
+ 0},
[MESA_FORMAT_R_INT16] = {BRW_SURFACEFORMAT_R16_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16_SINT,
+ 0},
[MESA_FORMAT_RG_INT16] = {BRW_SURFACEFORMAT_R16G16_SINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_INT16] = {BRW_SURFACEFORMAT_R16G16B16_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16_SINT,
+ 0},
+ [MESA_FORMAT_RGB_INT16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting SINT to another format in blorp. */
+ BRW_SURFACE_FORMAT_NONE,
+ 0},
[MESA_FORMAT_RGBA_INT16] = {BRW_SURFACEFORMAT_R16G16B16A16_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16B16A16_SINT,
+ 0},
[MESA_FORMAT_R_INT32] = {BRW_SURFACEFORMAT_R32_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32_SINT,
+ 0},
[MESA_FORMAT_RG_INT32] = {BRW_SURFACEFORMAT_R32G32_SINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32G32_SINT,
+ 0},
[MESA_FORMAT_RGB_INT32] = {BRW_SURFACEFORMAT_R32G32B32_SINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_INT32] = {BRW_SURFACEFORMAT_R32G32B32A32_SINT, /* A-blend not supported */
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32G32B32_SINT,
+ 0},
+ [MESA_FORMAT_RGBA_INT32] = {BRW_SURFACEFORMAT_R32G32B32A32_SINT,
+ BRW_SURFACEFORMAT_R32G32B32A32_SINT,
+ 0},
[MESA_FORMAT_R_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8_UINT,
+ 0},
[MESA_FORMAT_RG_UINT8] = {BRW_SURFACEFORMAT_R8G8_UINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_UINT8] = {BRW_SURFACEFORMAT_R8G8B8_UINT,
- 0,
+ BRW_SURFACEFORMAT_R8G8_UINT,
+ 0},
+ [MESA_FORMAT_RGB_UINT8] = {BRW_SURFACEFORMAT_R8_UINT,
+ BRW_SURFACEFORMAT_R8_UINT,
sample_scale},
[MESA_FORMAT_RGBA_UINT8] = {BRW_SURFACEFORMAT_R8G8B8A8_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8G8B8A8_UINT,
+ 0},
[MESA_FORMAT_R_UINT16] = {BRW_SURFACEFORMAT_R16_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16_UINT,
+ 0},
[MESA_FORMAT_RG_UINT16] = {BRW_SURFACEFORMAT_R16G16_UINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGB_UINT16] = {BRW_SURFACEFORMAT_R16G16B16_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16_UINT,
+ 0},
+ [MESA_FORMAT_RGB_UINT16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting UINT to another format in blorp. */
+ BRW_SURFACE_FORMAT_NONE,
+ 0},
[MESA_FORMAT_RGBA_UINT16] = {BRW_SURFACEFORMAT_R16G16B16A16_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16B16A16_UINT,
+ 0},
[MESA_FORMAT_R_UINT32] = {BRW_SURFACEFORMAT_R32_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32_UINT,
+ 0},
[MESA_FORMAT_RG_UINT32] = {BRW_SURFACEFORMAT_R32G32_UINT,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32G32_UINT,
+ 0},
[MESA_FORMAT_RGB_UINT32] = {BRW_SURFACEFORMAT_R32G32B32_UINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_RGBA_UINT32] = {BRW_SURFACEFORMAT_R32G32B32A32_UINT, /* A-blend not supported */
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R32G32B32_UINT,
+ 0},
+ [MESA_FORMAT_RGBA_UINT32] = {BRW_SURFACEFORMAT_R32G32B32A32_UINT,
+ BRW_SURFACEFORMAT_R32G32B32A32_UINT,
+ 0},
[MESA_FORMAT_DUDV8] = {BRW_SURFACEFORMAT_R8G8_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACE_FORMAT_NONE,
+ 0},
[MESA_FORMAT_SIGNED_R8] = {BRW_SURFACEFORMAT_R8_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8_SNORM,
+ 0},
[MESA_FORMAT_SIGNED_RG88_REV] = {BRW_SURFACEFORMAT_R8G8_SNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_SIGNED_RGBX8888] = {0,
- 0,
+ BRW_SURFACEFORMAT_R8G8_SNORM,
+ 0},
+ [MESA_FORMAT_SIGNED_RGBX8888] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
+ BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
alpha_blend_render | swizzle_all},
- [MESA_FORMAT_SIGNED_RGBA8888] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_RGBA8888] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
+ BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
swizzle_all},
[MESA_FORMAT_SIGNED_RGBA8888_REV] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
+ 0},
[MESA_FORMAT_SIGNED_R16] = {BRW_SURFACEFORMAT_R16_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16_SNORM,
+ 0},
[MESA_FORMAT_SIGNED_GR1616] = {BRW_SURFACEFORMAT_R16G16_SNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_SIGNED_RGB_16] = {BRW_SURFACEFORMAT_R16G16B16_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16_SNORM,
+ 0},
+ [MESA_FORMAT_SIGNED_RGB_16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting SNORM to another format in blorp. */
+ BRW_SURFACE_FORMAT_NONE,
+ 0},
[MESA_FORMAT_SIGNED_RGBA_16] = {BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
+ 0},
[MESA_FORMAT_RGBA_16] = {BRW_SURFACEFORMAT_R16G16B16A16_UNORM,
- 0,
- internal_format_en},
+ BRW_SURFACEFORMAT_R16G16B16A16_UNORM,
+ 0},
- [MESA_FORMAT_RED_RGTC1] = {BRW_SURFACEFORMAT_BC4_UNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_SIGNED_RED_RGTC1] = {BRW_SURFACEFORMAT_BC4_SNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_RG_RGTC2] = {BRW_SURFACEFORMAT_BC5_UNORM,
- 0,
- internal_format_en},
- [MESA_FORMAT_SIGNED_RG_RGTC2] = {BRW_SURFACEFORMAT_BC5_SNORM,
- 0,
- internal_format_en},
+ [MESA_FORMAT_RED_RGTC1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC4_UNORM,
+ 0},
+ [MESA_FORMAT_SIGNED_RED_RGTC1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC4_SNORM,
+ 0},
+ [MESA_FORMAT_RG_RGTC2] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC5_UNORM,
+ 0},
+ [MESA_FORMAT_SIGNED_RG_RGTC2] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_BC5_SNORM,
+ 0},
- [MESA_FORMAT_L_LATC1] = {0,
- 0,
+ [MESA_FORMAT_L_LATC1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_L_LATC1] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_L_LATC1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_LA_LATC2] = {0,
- 0,
+ [MESA_FORMAT_LA_LATC2] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_LA_LATC2] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_LA_LATC2] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_ETC1_RGB8] = {BRW_SURFACEFORMAT_ETC1_RGB8,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_RGB8] = {BRW_SURFACEFORMAT_ETC2_RGB8,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_SRGB8] = {BRW_SURFACEFORMAT_ETC2_SRGB8,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_RGBA8_EAC] = {BRW_SURFACEFORMAT_ETC2_EAC_RGBA8,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC] = {BRW_SURFACEFORMAT_ETC2_EAC_SRGB8_A8,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_R11_EAC] = {BRW_SURFACEFORMAT_EAC_R11,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_RG11_EAC] = {BRW_SURFACEFORMAT_EAC_RG11,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_SIGNED_R11_EAC] = {BRW_SURFACEFORMAT_EAC_SIGNED_R11,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_SIGNED_RG11_EAC] = {BRW_SURFACEFORMAT_EAC_SIGNED_RG11,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1] = {BRW_SURFACEFORMAT_ETC2_RGB8_PTA,
- 0,
- internal_format_en},
- [MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1] = {BRW_SURFACEFORMAT_ETC2_SRGB8_PTA,
- 0,
- internal_format_en},
+ [MESA_FORMAT_ETC1_RGB8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC1_RGB8,
+ 0},
+ [MESA_FORMAT_ETC2_RGB8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_RGB8,
+ 0},
+ [MESA_FORMAT_ETC2_SRGB8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_SRGB8,
+ 0},
+ [MESA_FORMAT_ETC2_RGBA8_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_EAC_RGBA8,
+ 0},
+ [MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_EAC_SRGB8_A8,
+ 0},
+ [MESA_FORMAT_ETC2_R11_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_EAC_R11,
+ 0},
+ [MESA_FORMAT_ETC2_RG11_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_EAC_RG11,
+ 0},
+ [MESA_FORMAT_ETC2_SIGNED_R11_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_EAC_SIGNED_R11,
+ 0},
+ [MESA_FORMAT_ETC2_SIGNED_RG11_EAC] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_EAC_SIGNED_RG11,
+ 0},
+ [MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_RGB8_PTA,
+ 0},
+ [MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_ETC2_SRGB8_PTA,
+ 0},
- [MESA_FORMAT_SIGNED_A8] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_A8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_L8] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_L8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_AL88] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_AL88] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_I8] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_I8] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_A16] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_A16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_L16] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_L16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_AL1616] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_AL1616] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_SIGNED_I16] = {0,
- 0,
+ [MESA_FORMAT_SIGNED_I16] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACE_FORMAT_NONE,
swizzle_all},
- [MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP,
- 0,
- internal_format_en},
- [MESA_FORMAT_R11_G11_B10_FLOAT] = {BRW_SURFACEFORMAT_R11G11B10_FLOAT,
- 0,
- internal_format_en},
+ [MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP,
+ 0},
+ [MESA_FORMAT_R11_G11_B10_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R11G11B10_FLOAT,
+ 0},
[MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_I32_FLOAT,
BRW_SURFACEFORMAT_R32_FLOAT,
- internal_format_en},
+ 0},
[MESA_FORMAT_Z32_FLOAT_X24S8] = {BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
BRW_SURFACEFORMAT_R32G32_FLOAT,
- internal_format_en},
+ 0},
- [MESA_FORMAT_ARGB2101010_UINT] = {BRW_SURFACEFORMAT_B10G10R10A2_UINT,
- 0,
- internal_format_en},
- [MESA_FORMAT_ABGR2101010_UINT] = {BRW_SURFACEFORMAT_R10G10B10A2_UINT,
- 0,
- internal_format_en},
+ [MESA_FORMAT_ARGB2101010_UINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_B10G10R10A2_UINT,
+ 0},
+ [MESA_FORMAT_ABGR2101010_UINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R10G10B10A2_UINT,
+ 0},
- [MESA_FORMAT_XRGB4444_UNORM] = {BRW_SURFACEFORMAT_R8G8_UNORM,
- 0,
+ [MESA_FORMAT_XRGB4444_UNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8G8_UNORM,
alpha_blend_render | swizzle_xy | scale_xy},
- [MESA_FORMAT_XRGB1555_UNORM] = {BRW_SURFACEFORMAT_B5G5R5X1_UNORM,
- 0,
- alpha_blend_render | internal_format_en},
- [MESA_FORMAT_XBGR8888_SNORM] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
- 0,
+ [MESA_FORMAT_XRGB1555_UNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_B5G5R5X1_UNORM,
+ alpha_blend_render},
+ [MESA_FORMAT_XBGR8888_SNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR8888_SRGB] = {BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB,
- 0,
+ [MESA_FORMAT_XBGR8888_SRGB] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB,
alpha_blend_render | swizzle_all},
- [MESA_FORMAT_XBGR8888_UINT] = {BRW_SURFACEFORMAT_R8G8B8A8_UINT,
- 0,
+ [MESA_FORMAT_XBGR8888_UINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8G8B8A8_UINT,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR8888_SINT] = {BRW_SURFACEFORMAT_R8G8B8A8_SINT,
- 0,
+ [MESA_FORMAT_XBGR8888_SINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R8G8B8A8_SINT,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XRGB2101010_UNORM] = {BRW_SURFACEFORMAT_B10G10R10X2_UNORM,
- 0,
- alpha_blend_render | internal_format_en},
- [MESA_FORMAT_XBGR16161616_UNORM] = {BRW_SURFACEFORMAT_R16G16B16X16_UNORM,
- 0,
- alpha_blend_render | internal_format_en},
- [MESA_FORMAT_XBGR16161616_SNORM] = {BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
- 0,
+ [MESA_FORMAT_XRGB2101010_UNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_B10G10R10X2_UNORM,
+ alpha_blend_render},
+ [MESA_FORMAT_XBGR16161616_UNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16X16_UNORM,
+ alpha_blend_render},
+ [MESA_FORMAT_XBGR16161616_SNORM] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR16161616_FLOAT] = {BRW_SURFACEFORMAT_R16G16B16X16_FLOAT,
- 0,
- alpha_blend_render | internal_format_en},
- [MESA_FORMAT_XBGR16161616_UINT] = {BRW_SURFACEFORMAT_R16G16B16A16_UINT,
- 0,
+ [MESA_FORMAT_XBGR16161616_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16X16_FLOAT,
+ alpha_blend_render},
+ [MESA_FORMAT_XBGR16161616_UINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16A16_UINT,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR16161616_SINT] = {BRW_SURFACEFORMAT_R16G16B16A16_SINT,
- 0,
+ [MESA_FORMAT_XBGR16161616_SINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16A16_SINT,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR32323232_FLOAT] = {BRW_SURFACEFORMAT_R32G32B32X32_FLOAT,
- 0,
- alpha_blend_render | internal_format_en},
- [MESA_FORMAT_XBGR32323232_UINT] = {BRW_SURFACEFORMAT_R32G32B32A32_UINT,
- 0,
+ [MESA_FORMAT_XBGR32323232_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32G32B32X32_FLOAT,
+ alpha_blend_render},
+ [MESA_FORMAT_XBGR32323232_UINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32G32B32A32_UINT,
alpha_blend_render | swizzle_all | x_shadow},
- [MESA_FORMAT_XBGR32323232_SINT] = {BRW_SURFACEFORMAT_R32G32B32A32_SINT,
- 0,
+ [MESA_FORMAT_XBGR32323232_SINT] = {BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R32G32B32A32_SINT,
alpha_blend_render | swizzle_all | x_shadow}
};
@@ -928,26 +934,31 @@ brw_init_surface_formats(struct brw_context *brw)
memset(&ctx->TextureFormatSupported, 0, sizeof(ctx->TextureFormatSupported));
- const int gen = (brw->gen * 10) + (brw->is_g4x ? 5 : 0);
-
for (gl_format format = MESA_FORMAT_NONE + 1; format < MESA_FORMAT_COUNT; format++) {
BRW_SURFACE sample_surface, render_surface;
blorp_process_format process_flags;
brw_format_for_mesa_format(format, &process_flags, &render_surface, &sample_surface);
- ctx->TextureFormatSupported[format] = 0 != (process_flags & internal_format_en);
+ const bool is_integer = _mesa_is_format_integer_color(format);
+ ctx->TextureFormatSupported[format] =
+ brw_format_for_sampling(brw, sample_surface) &&
+ (brw_format_for_filter(brw, sample_surface) || is_integer) &&
+ (0 == process_flags & not_supported_mask);
- struct surface_format_info render_target_info = surface_formats[render_surface];
- /* Note that GL_EXT_texture_integer says that blending doesn't occur for
+ if (BRW_SURFACE_FORMAT_NONE != render_surface) {
+ struct surface_format_info render_target_info = surface_formats[render_surface];
+ /* Note that GL_EXT_texture_integer says that blending doesn't occur for
* integer, so we don't need hardware support for blending on it. Other
* than that, GL in general requires alpha blending for render targets,
* even though we don't support it for some formats.
*/
- const bool is_integer = _mesa_is_format_integer_color(format);
- brw->format_supported_as_render_target[format] =
- gen >= render_target_info.render_target &&
- (gen >= render_target_info.alpha_blend || /* SINTs, UINTs, and YCRCB don't alpha blend. */
- is_integer);
+ brw->format_supported_as_render_target[format] =
+ brw->gen_high >= render_target_info.render_target &&
+ (brw->gen_high >= render_target_info.alpha_blend || /* SINTs, UINTs, and YCRCB don't alpha blend. */
+ is_integer);
+ } else {
+ brw->format_supported_as_render_target[format] = false;
+ }
}
/* It appears that Z16 is slower than Z24 (on Intel Ivybridge and newer