diff options
author | Mark Mueller <MarkKMueller@gmail.com> | 2013-11-21 20:27:15 -0800 |
---|---|---|
committer | Mark Mueller <MarkKMueller@gmail.com> | 2014-01-13 09:44:30 -0800 |
commit | 74ac8f19c79773714364a433efc40df1e569c19d (patch) | |
tree | 0f350a61da2be344cdca2b151b07c859f12285e5 | |
parent | 920f50bd3f22b8b965a42b06103c4d2491296064 (diff) |
Resovled render and sample target issues
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_defines.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_state.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_surface_formats.c | 829 |
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 |