summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2013-11-30 22:05:30 -0800
committerMark Mueller <MarkKMueller@gmail.com>2014-01-13 09:44:31 -0800
commit9b86272922f8b8c3bd282fc764ee8bbe6b3f3c74 (patch)
treea2ea4f2c8926f3c33b908be0daaab6e1c9504934
parent91d97de7708563e4ca1693f9063e17059ae265c2 (diff)
Lots of code cleanup
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit.cpp71
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h28
-rw-r--r--src/mesa/drivers/dri/i965/brw_state.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_surface_formats.c189
4 files changed, 147 insertions, 142 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 45b30aaeec..634db88d1f 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -356,24 +356,26 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
GLint dstX0, GLint dstY0,
GLint width, GLint height)
{
+
/* BLORP is not supported before Gen6. */
if (brw->gen < 6) {
DBG("%s: Older Gen not supported.\n", __FUNCTION__);
return false;
}
- if (!brw->has_llc ||
- packing->Alignment > 4 ||
- packing->SkipPixels > 0 ||
- packing->SkipRows > 0 ||
- (packing->RowLength != 0 && packing->RowLength != width) ||
- packing->LsbFirst ||
- packing->Invert ||
- dst_image->Width == 0 ||
- dst_image->Height == 0 ||
- dst_image->Depth == 0) {
- return false;
- }
+ if (!brw->has_llc ||
+ packing->Alignment > 4 ||
+ packing->SkipPixels > 0 ||
+ packing->SkipRows > 0 ||
+ (packing->RowLength != 0 && packing->RowLength != width) ||
+ packing->LsbFirst ||
+ packing->Invert ||
+ dst_image->Width == 0 ||
+ dst_image->Height == 0 ||
+ dst_image->Depth == 0) {
+ _mesa_debug(&brw->ctx, "%s: unsupported parameter\n", __FUNCTION__);
+ return false;
+ }
if (0 != srcX0 || 0 != srcY0 || 0 != dstX0 || 0 != dstY0) {
DBG("%s: Sub image loads not currently supported\n", __FUNCTION__);
@@ -398,7 +400,7 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
gl_format cacheTexFormat = _mesa_choose_cached_tex_format(&brw->ctx, format, type);
_mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s, Internal Format: %s"
- "Base Internal Format: %s\n",
+ " Base Internal Format: %s\n",
__FUNCTION__, _mesa_get_format_name(cacheTexFormat), _mesa_get_format_name(dst_image->TexFormat),
_mesa_lookup_enum_by_nr(dst_image->InternalFormat), _mesa_lookup_enum_by_nr(dst_image->_BaseFormat));
@@ -2700,33 +2702,34 @@ bool
brw_blorp_blit_params::compare_source_to_target(struct brw_context *brw,
GLenum baseSourceFormat,
GLenum baseDestinationFormat) {
+ if (baseSourceFormat == baseDestinationFormat) {
+ return true;
+ }
+
bool testPassed = false;
switch (baseSourceFormat) {
case GL_RED:
testPassed = (GL_R == baseDestinationFormat);
break;
case GL_RG:
- testPassed = (GL_R == baseDestinationFormat ||
- GL_RG == baseDestinationFormat);
+ testPassed = (GL_RED == baseDestinationFormat ||
+ GL_R == baseDestinationFormat);
break;
case GL_RGB:
- testPassed = (GL_R == baseDestinationFormat ||
- GL_RG == baseDestinationFormat ||
- GL_RGB == baseDestinationFormat);
+ testPassed = (GL_RED == baseDestinationFormat ||
+ GL_R == baseDestinationFormat ||
+ GL_RG == baseDestinationFormat);
break;
case GL_RGBA:
switch (baseDestinationFormat) {
case GL_RED:
+ case GL_R:
case GL_RG:
- case GL_RGBA:
case GL_RGB:
testPassed = true;
break;
- default:
- testPassed = false;
}
break;
- case GL_LUMINANCE:
case GL_LUMINANCE_ALPHA:
switch (baseDestinationFormat) {
case GL_ALPHA:
@@ -2734,27 +2737,18 @@ brw_blorp_blit_params::compare_source_to_target(struct brw_context *brw,
case GL_LUMINANCE:
case GL_LUMINANCE_ALPHA:
testPassed = true;
- default:
- testPassed = false;
}
break;
- case GL_DEPTH_COMPONENT:
- testPassed = (GL_DEPTH_COMPONENT == baseDestinationFormat);
- break;
- case GL_STENCIL_INDEX:
case GL_DEPTH_STENCIL:
- testPassed = (GL_DEPTH_STENCIL == baseDestinationFormat || GL_STENCIL_INDEX == baseDestinationFormat);
+ testPassed = GL_STENCIL_INDEX == baseDestinationFormat;
break;
- default:
- testPassed = false;
}
if (!testPassed) {
_mesa_debug(&brw->ctx, "%s: Target format %s doesn't match cached base: %s\n",
__FUNCTION__, _mesa_lookup_enum_by_nr(baseDestinationFormat), _mesa_lookup_enum_by_nr(baseSourceFormat));
- return false;
}
- return true;
+ return testPassed;
}
bool
@@ -2791,10 +2785,10 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw,
}
/* blorp lies about some formats to placate the GPU. */
- blorp_process_format src_process_flags;
+ blorp_process_format format_process_flags;
BRW_SURFACE sample_format;
- translate_tex_format(brw, src_format, 0, &src_process_flags, 0, &sample_format);
- if (src_process_flags & not_supported_mask) {
+ translate_tex_format(brw, src_format, 0, &format_process_flags, 0, &sample_format);
+ if (format_process_flags & not_supported_mask) {
_mesa_debug(ctx, "%s: compatible brw_surface format not found for source "
"texture mip tree. Source: %s\n",
__FUNCTION__, _mesa_get_format_name(src_format));
@@ -2807,8 +2801,9 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw,
}
BRW_SURFACE render_format;
- translate_tex_format(brw, dst_format, 0, 0, &render_format, 0);
- if (!brw_format_for_render(brw, render_format)) {
+ translate_tex_format(brw, dst_format, 0, &format_process_flags, &render_format, 0);
+ if (!brw_format_for_render(brw, render_format) ||
+ (format_process_flags & blorp_shadow_sampler)) {
_mesa_debug(ctx, "%s: The translated target miptree format is not supported as a render target: %s: 0x%x.\n",
__FUNCTION__, _mesa_get_format_name(dst_format), render_format);
return false;
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 8b9bf5863d..261657e810 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -190,23 +190,31 @@ typedef enum {
scale_y = 1 << 1,
scale_z = 1 << 2,
scale_w = 1 << 3,
- swizzle_x = 1 << 4,
- swizzle_y = 1 << 5,
- swizzle_z = 1 << 6,
- swizzle_w = 1 << 7,
+ sample_swizzle_x = 1 << 4,
+ sample_swizzle_y = 1 << 5,
+ sample_swizzle_z = 1 << 6,
+ sample_swizzle_w = 1 << 7,
sample_scale = 1 << 8,
alpha_blend_render = 1 << 9,
blorp_shadow_sampler = 1 << 10,
+ desktop_gl_sel = 1 << 11,
+
+ render_swizzle_x = 1 << 12,
+ render_swizzle_y = 1 << 13,
+ render_swizzle_z = 1 << 14,
+ render_swizzle_w = 1 << 15,
+
scale_mask = scale_x | scale_y | scale_z | scale_w,
scale_xy = scale_x | scale_y,
- swizzle_mask = swizzle_x | swizzle_y | swizzle_z | swizzle_w,
- swizzle_all = swizzle_mask,
- swizzle_xy = swizzle_x | swizzle_y,
- swizzle_xyz = swizzle_x | swizzle_y | swizzle_z,
- swizzle_yzw = swizzle_y | swizzle_z | swizzle_w,
- not_supported_mask = scale_mask | swizzle_mask | sample_scale | blorp_shadow_sampler
+ sample_swizzle_mask = sample_swizzle_x | sample_swizzle_y | sample_swizzle_z | sample_swizzle_w,
+ sample_swizzle_all = sample_swizzle_mask,
+ sample_swizzle_xy = sample_swizzle_x | sample_swizzle_y,
+ sample_swizzle_xyz = sample_swizzle_x | sample_swizzle_y | sample_swizzle_z,
+ sample_swizzle_yzw = sample_swizzle_y | sample_swizzle_z | sample_swizzle_w,
+ not_supported_mask = scale_mask | sample_swizzle_mask |
+ sample_scale | desktop_gl_sel
} blorp_process_format;
#define BRW_NEW_URB_FENCE (1 << BRW_STATE_URB_FENCE)
diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
index 5455691969..c7234360e3 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_blend(struct brw_context *brw, const BRW_SURFACE brw_surface_sel);
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 16d0dd6f2c..054dcc6ae8 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -308,21 +308,27 @@ const struct surface_format_info surface_formats[] = {
};
bool
+brw_format_for_blend(struct brw_context *brw, const BRW_SURFACE brw_surface_sel)
+{
+ return BRW_SURFACE_FORMAT_NONE != brw_surface_sel && (surface_formats[brw_surface_sel].alpha_blend <= brw->gen_high);
+}
+
+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);
+ 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 BRW_SURFACE_FORMAT_NONE > brw_surface_sel && (surface_formats[brw_surface_sel].render_target <= brw->gen_high);
+ 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 BRW_SURFACE_FORMAT_NONE > brw_surface_sel && (surface_formats[brw_surface_sel].sampling <= brw->gen_high);
+ return BRW_SURFACE_FORMAT_NONE != brw_surface_sel && (surface_formats[brw_surface_sel].sampling <= brw->gen_high);
}
#undef x
@@ -348,7 +354,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
{
[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 */
+ sample_swizzle_all}, /* gl_format to brw surface processing */
[MESA_FORMAT_RGBA8888_REV] = {BRW_SURFACEFORMAT_R8G8B8A8_UNORM,
BRW_SURFACEFORMAT_R8G8B8A8_UNORM,
0},
@@ -357,10 +363,10 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_ARGB8888_REV] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_RGBX8888] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
BRW_SURFACEFORMAT_R8G8B8X8_UNORM,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_RGBX8888_REV] = {BRW_SURFACEFORMAT_R8G8B8X8_UNORM,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
alpha_blend_render},
@@ -369,7 +375,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
alpha_blend_render},
[MESA_FORMAT_XRGB8888_REV] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
BRW_SURFACEFORMAT_B8G8R8X8_UNORM,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_RGB888] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UNORM,
sample_scale},
@@ -381,37 +387,37 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_RGB565_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G6R5_UNORM,
- swizzle_xyz},
+ sample_swizzle_xyz},
[MESA_FORMAT_ARGB4444] = {BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
0},
[MESA_FORMAT_ARGB4444_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B4G4R4A4_UNORM,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_RGBA5551] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_ARGB1555] = {BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
0},
[MESA_FORMAT_ARGB1555_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B5G5R5A1_UNORM,
- swizzle_yzw},
+ sample_swizzle_yzw},
[MESA_FORMAT_AL44] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
scale_x},
- [MESA_FORMAT_AL88] = {BRW_SURFACEFORMAT_R8G8_UNORM,
+ [MESA_FORMAT_AL88] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_L8A8_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_AL88_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
- swizzle_xy},
- [MESA_FORMAT_AL1616] = {BRW_SURFACEFORMAT_R16G16_UNORM,
+ sample_swizzle_xy},
+ [MESA_FORMAT_AL1616] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_L16A16_UNORM,
0},
[MESA_FORMAT_AL1616_REV] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16_UNORM,
- swizzle_xy},
+ sample_swizzle_xy},
[MESA_FORMAT_RGB332] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UNORM,
scale_x},
@@ -420,19 +426,19 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_A16] = {BRW_SURFACEFORMAT_R16_UNORM,
BRW_SURFACEFORMAT_A16_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_L8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_L8_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_L16] = {BRW_SURFACEFORMAT_R16_UNORM,
BRW_SURFACEFORMAT_L16_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_I8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_I8_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_I16] = {BRW_SURFACEFORMAT_R16_UNORM,
BRW_SURFACEFORMAT_I16_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_YCBCR_REV] = {BRW_SURFACEFORMAT_YCRCB_NORMAL,
BRW_SURFACEFORMAT_YCRCB_NORMAL,
0},
@@ -447,7 +453,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_RG88] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
- swizzle_xy},
+ sample_swizzle_xy},
[MESA_FORMAT_R16] = {BRW_SURFACEFORMAT_R16_UNORM,
BRW_SURFACEFORMAT_R16_UNORM,
0},
@@ -456,38 +462,38 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_RG1616] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16_UNORM,
- swizzle_xy},
+ sample_swizzle_xy},
[MESA_FORMAT_ARGB2101010] = {BRW_SURFACEFORMAT_B10G10R10A2_UNORM,
BRW_SURFACEFORMAT_B10G10R10A2_UNORM,
0},
[MESA_FORMAT_Z24_S8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_S8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
+ BRW_SURFACEFORMAT_I24X8_UNORM,
0},
[MESA_FORMAT_Z16] = {BRW_SURFACEFORMAT_R16_UNORM,
- BRW_SURFACEFORMAT_R16_UNORM,
+ BRW_SURFACEFORMAT_I16_UNORM,
blorp_shadow_sampler},
[MESA_FORMAT_X8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
+ BRW_SURFACEFORMAT_I24X8_UNORM,
0},
[MESA_FORMAT_Z24_X8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_Z32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_S8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_R8_UNORM,
blorp_shadow_sampler},
[MESA_FORMAT_SRGB8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB,
- swizzle_xyz},
+ sample_swizzle_xyz},
[MESA_FORMAT_SRGBA8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_SARGB8] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB,
0},
@@ -543,16 +549,16 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_ALPHA_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
BRW_SURFACEFORMAT_A32_FLOAT,
- 0},
+ blorp_shadow_sampler},
[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,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_FLOAT16] = {BRW_SURFACEFORMAT_R16_FLOAT,
BRW_SURFACEFORMAT_L16_FLOAT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_L32A32_FLOAT,
0},
@@ -561,10 +567,10 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_INTENSITY_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
BRW_SURFACEFORMAT_I32_FLOAT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_FLOAT16] = {BRW_SURFACEFORMAT_R16_FLOAT,
BRW_SURFACEFORMAT_I16_FLOAT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_R_FLOAT32] = {BRW_SURFACEFORMAT_R32_FLOAT,
BRW_SURFACEFORMAT_R32_FLOAT,
0},
@@ -580,79 +586,79 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- blorp_shadow_sampler},
+ 0},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_R_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
BRW_SURFACEFORMAT_R8_SINT,
@@ -739,10 +745,10 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_SIGNED_RGBX8888] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_SIGNED_RGBA8888] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_SIGNED_RGBA8888_REV] = {BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
0},
@@ -777,16 +783,16 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_L_LATC1] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_SIGNED_L_LATC1] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_LA_LATC2] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_SIGNED_LA_LATC2] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ sample_swizzle_all},
[MESA_FORMAT_ETC1_RGB8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_ETC1_RGB8,
@@ -824,28 +830,28 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_SIGNED_A8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_L8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_AL88] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_I8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_A16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_L16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_AL1616] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_SIGNED_I16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SNORM,
- blorp_shadow_sampler},
+ sample_swizzle_x},
[MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP,
@@ -855,7 +861,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_R32_FLOAT,
- BRW_SURFACEFORMAT_R32_FLOAT,
+ BRW_SURFACEFORMAT_I32_FLOAT,
0},
[MESA_FORMAT_Z32_FLOAT_X24S8] = {BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
BRW_SURFACEFORMAT_R32G32_FLOAT,
@@ -870,22 +876,22 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_XRGB4444_UNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UNORM,
- alpha_blend_render | swizzle_xy | scale_xy},
+ alpha_blend_render | sample_swizzle_xy | scale_xy},
[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},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XBGR8888_SRGB] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XBGR8888_UINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8A8_UINT,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XBGR8888_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8A8_SINT,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XRGB2101010_UNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B10G10R10X2_UNORM,
alpha_blend_render},
@@ -894,25 +900,25 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_XBGR16161616_SNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[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},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XBGR16161616_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16A16_SINT,
- alpha_blend_render | swizzle_all},
+ alpha_blend_render | sample_swizzle_all},
[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},
+ alpha_blend_render | sample_swizzle_all},
[MESA_FORMAT_XBGR32323232_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32G32B32A32_SINT,
- alpha_blend_render | swizzle_all}
+ alpha_blend_render | sample_swizzle_all}
};
assert(mesa_format < MESA_PRIVATE_FORMAT_COUNT);
@@ -945,20 +951,15 @@ brw_init_surface_formats(struct brw_context *brw)
(brw_format_for_filter(brw, sample_surface) || is_integer) &&
(0 == (process_flags & not_supported_mask));
- 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.
*/
- 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;
- }
+ brw->format_supported_as_render_target[format] =
+ brw_format_for_render(brw, render_surface) &&
+ (brw_format_for_blend(brw, render_surface) || /* SINTs, UINTs, and YCRCB don't alpha blend. */
+ is_integer);
}
/* It appears that Z16 is slower than Z24 (on Intel Ivybridge and newer