diff options
author | Mark Mueller <MarkKMueller@gmail.com> | 2013-11-27 14:47:10 -0800 |
---|---|---|
committer | Mark Mueller <MarkKMueller@gmail.com> | 2014-01-13 09:44:30 -0800 |
commit | c408e9e5b491b27e6a6f927ee931f1d4932b75d8 (patch) | |
tree | 2a45f18678a8fe6b9df12982c115b9e8237a7217 | |
parent | d5b25b9992992773acaabc9d8c90183f922347e9 (diff) |
Resolve issues with internal formats that force extra processing.
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.h | 15 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 475 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_surface_formats.c | 116 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 20 | ||||
-rw-r--r-- | src/mesa/main/texformat.c | 9 |
6 files changed, 553 insertions, 86 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h index 2be91fefe5..593cab079e 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.h +++ b/src/mesa/drivers/dri/i965/brw_blorp.h @@ -370,9 +370,22 @@ public: static bool test_formats(struct brw_context *brw, gl_format src_format, gl_format dst_format, - GLint internal_format = 0); + GLint base_internal_format = 0); private: + class color_state { + u_int8_t red; + u_int8_t green; + u_int8_t blue; + u_int8_t alpha; + u_int8_t luminance; + u_int8_t intensity; + u_int8_t depth; + u_int8_t stencil; + }; + + static bool evaluate_internal_format(GLenum internal_format, + color_state *color_bit_sel); brw_blorp_blit_prog_key wm_prog_key; }; diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp index 0950473a43..bc5c0349bb 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp @@ -157,10 +157,6 @@ brw_blorp_blit_miptrees(struct brw_context *brw, dst_level, dst_layer, dst_x0, dst_y0, dst_x1, dst_y1, mirror_x, mirror_y); - if (!brw_blorp_blit_params::test_formats(brw, src_mt->format, dst_mt->format)) { - return false; - } - brw_blorp_blit_params params(brw, src_mt, src_level, src_layer, dst_mt, dst_level, dst_layer, @@ -198,11 +194,6 @@ do_blorp_blit(struct brw_context *brw, GLbitfield buffer_bit, struct intel_mipmap_tree *src_mt = find_miptree(buffer_bit, src_irb); struct intel_mipmap_tree *dst_mt = find_miptree(buffer_bit, dst_irb); - if (!brw_blorp_blit_params::test_formats(brw, src_mt->format, dst_mt->format)) { - _mesa_debug(&brw->ctx, "%s: Failed format test src texture format: %s, dst format: %s\n", - __FUNCTION__, _mesa_get_format_name(src_mt->format), _mesa_get_format_name(dst_mt->format)); - } - /* Do the blit */ brw_blorp_blit_miptrees(brw, src_mt, src_irb->mt_level, src_irb->mt_layer, @@ -406,11 +397,12 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw, /* Come up with a match to the source format for the texture cache */ 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\n", + _mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s, Internal Format: %s" + "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->InternalFormat), _mesa_lookup_enum_by_nr(dst_image->_BaseFormat)); - if (!brw_blorp_blit_params::test_formats(brw, cacheTexFormat, dst_image->TexFormat, dst_image->InternalFormat)) { + if (!brw_blorp_blit_params::test_formats(brw, cacheTexFormat, dst_image->TexFormat, dst_image->_BaseFormat)) { return false; } @@ -2249,6 +2241,461 @@ brw_blorp_blit_params::find_brw_format(struct brw_context *brw, gl_format src_fo unsigned componentCount = _mesa_base_format_component_count(src_format); } +/* If the application requests an internal format that i965 can't match, the texture still + * must look like it is that format. Evaluate internal format will decide what is required + * to make the texture look like it is supposed to. + */ +#if 0 +bool +brw_blorp_blit_params::evaluate_internal_format(GLenum base_internal_format, color_state *color_bit_sel) { + memset(color_bit_sel, 0 ,sizeof(color_state)); + switch (base_internal_format) { + case GL_RGBA: + case GL_RGBA8: + color_bit_sel->alpha = 8; + case 3: + case GL_RGB: + case GL_RGB8: + color_bit_sel->blue = 8; + case GL_RG: + color_bit_sel->green = 8; + case GL_R: + color_bit_sel->red = 8; + break; + case GL_DEPTH_COMPONENT: + color_bit_sel->depth = 32; + break; + case GL_DEPTH_STENCIL: + color_bit_sel->stencil = 8; + + case GL_RGBA4: + color_bit_sel->alpha = 4; + case GL_RGB4: + color_bit_sel->red = 4; + color_bit_sel->green = 4; + color_bit_sel->blue = 4; + break; + + case GL_RGB5_A1: + color_bit_sel->alpha = 1; + case GL_RGB5: + color_bit_sel->red = 5; + color_bit_sel->green = 5; + color_bit_sel->blue = 5; + break; + case GL_RGBA2: + color_bit_sel->red = 4; + color_bit_sel->green = 4; + color_bit_sel->blue = 4; + color_bit_sel->alpha = 2; + break; + + case GL_RGB565: + color_bit_sel->red = 5; + color_bit_sel->green = 6; + color_bit_sel->blue = 5; + break; + break; + + /* deep RGBA formats */ + case GL_RGB10_A2: + color_bit_sel->alpha = 2; + case GL_RGB10: + color_bit_sel->red = 10; + color_bit_sel->green = 10; + color_bit_sel->blue = 10; + break; + case GL_RGBA12: + color_bit_sel->alpha = 12; + case GL_RGB12: + color_bit_sel->red = 12; + color_bit_sel->green = 12; + color_bit_sel->blue = 12; + break; + case GL_RGBA16: + color_bit_sel->alpha = 16; + case GL_RGB16: + color_bit_sel->red = 16; + color_bit_sel->green = 16; + color_bit_sel->blue = 16; + break; + + /* shallow RGB formats */ + case GL_R3_G3_B2: + color_bit_sel->red = 3; + color_bit_sel->green = 3; + color_bit_sel->blue = 2; + break; + + /* Alpha formats */ + case GL_ALPHA4: + color_bit_sel->alpha = 4; + break; + case GL_ALPHA: + case GL_ALPHA8: + color_bit_sel->alpha = 8; + break; + + case GL_ALPHA12: + color_bit_sel->alpha = 12; + break; + case GL_ALPHA16: + color_bit_sel->alpha = 16; + break; + + /* Luminance formats */ + case 2: + case GL_LUMINANCE_ALPHA: + case GL_LUMINANCE8_ALPHA8: + color_bit_sel->alpha = 8; + case 1: + case GL_LUMINANCE8: + case GL_LUMINANCE: + color_bit_sel->luminance = 8; + break; + case GL_LUMINANCE4_ALPHA4: + color_bit_sel->alpha = 4; + case GL_LUMINANCE4: + color_bit_sel->luminance = 4; + break; + case GL_LUMINANCE6_ALPHA2: + color_bit_sel->alpha = 2; + color_bit_sel->luminance = 6; + break; + + case GL_LUMINANCE12_ALPHA4: + color_bit_sel->alpha = 4; + color_bit_sel->luminance = 12; + break; + case GL_LUMINANCE12_ALPHA12: + color_bit_sel->alpha = 12; + case GL_LUMINANCE12: + color_bit_sel->luminance = 12; + break; + case GL_LUMINANCE16_ALPHA16: + color_bit_sel->alpha = 16; + case GL_LUMINANCE16: + color_bit_sel->luminance = 16; + break; + + break; + + case GL_INTENSITY4: + color_bit_sel->intensity = 4; + break; + case GL_INTENSITY: + case GL_INTENSITY8: + color_bit_sel->intensity = 8; + break; + + case GL_INTENSITY12: + color_bit_sel->intensity = 12; + break; + case GL_INTENSITY16: + color_bit_sel->intensity = 16; + break; + + case GL_DEPTH_COMPONENT24: + color_bit_sel->depth = 24; + break; + case GL_DEPTH_COMPONENT32: + color_bit_sel->depth = 32; + break; + case GL_DEPTH_COMPONENT16: + color_bit_sel->depth = 16; + break; + + case GL_COMPRESSED_ALPHA_ARB: + case GL_COMPRESSED_LUMINANCE_ARB: + case GL_COMPRESSED_LUMINANCE_ALPHA_ARB: + case GL_COMPRESSED_INTENSITY_ARB: + case GL_COMPRESSED_RGB_ARB: + case GL_COMPRESSED_RGBA_ARB: + case GL_YCBCR_MESA: + case GL_COMPRESSED_RGB_FXT1_3DFX: + case GL_COMPRESSED_RGBA_FXT1_3DFX: + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_RGB_S3TC: + case GL_RGB4_S3TC: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: + case GL_RGBA_S3TC: + case GL_RGBA4_S3TC: + case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: + case GL_COMPRESSED_RED_RGTC1: + case GL_COMPRESSED_SIGNED_RED_RGTC1: + case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SIGNED_RG_RGTC2: + case GL_COMPRESSED_LUMINANCE_LATC1_EXT: + case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: + case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: + case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: + case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: + case GL_ETC1_RGB8_OES: + case GL_COMPRESSED_RGB8_ETC2: + case GL_COMPRESSED_SRGB8_ETC2: + case GL_COMPRESSED_RGBA8_ETC2_EAC: + case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: + case GL_COMPRESSED_R11_EAC: + case GL_COMPRESSED_RG11_EAC: + case GL_COMPRESSED_SIGNED_R11_EAC: + case GL_COMPRESSED_SIGNED_RG11_EAC: + case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: + case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: + case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: + return false; + + case GL_ALPHA16F_ARB: + break; + case GL_ALPHA32F_ARB: + break; + case GL_LUMINANCE16F_ARB: + break; + case GL_LUMINANCE32F_ARB: + break; + case GL_LUMINANCE_ALPHA16F_ARB: + break; + case GL_LUMINANCE_ALPHA32F_ARB: + break; + case GL_INTENSITY16F_ARB: + break; + case GL_INTENSITY32F_ARB: + break; + case GL_RGB16F_ARB: + break; + case GL_RGB32F_ARB: + break; + case GL_RGBA16F_ARB: + break; + case GL_RGBA32F_ARB: + break; + + case GL_RGB9_E5: +// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_RGB9_E5_FLOAT]); +// return MESA_FORMAT_RGB9_E5_FLOAT; + + case GL_R11F_G11F_B10F: + /* GL_EXT_texture_packed_float -- just one format to support */ +// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_R11_G11_B10_FLOAT]); +// return MESA_FORMAT_R11_G11_B10_FLOAT; + + case GL_DEPTH24_STENCIL8_EXT: + break; + + case GL_DEPTH_COMPONENT32F: +// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT]); +// return MESA_FORMAT_Z32_FLOAT; + case GL_DEPTH32F_STENCIL8: +// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_X24S8]); +// return MESA_FORMAT_Z32_FLOAT_X24S8; + + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + break; + + case GL_RED_SNORM: + case GL_R8_SNORM: + break; + case GL_RG_SNORM: + case GL_RG8_SNORM: + break; + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + /* FALLTHROUGH */ + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + break; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + break; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + break; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + break; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + break; + case GL_R16_SNORM: + break; + case GL_RG16_SNORM: + break; + case GL_RGB16_SNORM: + case GL_RGBA16_SNORM: + break; + case GL_ALPHA16_SNORM: + break; + case GL_LUMINANCE16_SNORM: + /* FALLTHROUGH */ + case GL_LUMINANCE16_ALPHA16_SNORM: + break; + case GL_INTENSITY16_SNORM: + break; + + case GL_SRGB_EXT: + case GL_SRGB8_EXT: + break; + case GL_SRGB_ALPHA_EXT: + case GL_SRGB8_ALPHA8_EXT: + break; + case GL_SLUMINANCE_EXT: + case GL_SLUMINANCE8_EXT: + break; + case GL_SLUMINANCE_ALPHA_EXT: + case GL_SLUMINANCE8_ALPHA8_EXT: + break; + case GL_COMPRESSED_SLUMINANCE_EXT: + break; + case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT: + break; + case GL_COMPRESSED_SRGB_EXT: + break; + case GL_COMPRESSED_SRGB_ALPHA_EXT: + break; + + case GL_ALPHA8UI_EXT: + break; + case GL_ALPHA16UI_EXT: + break; + case GL_ALPHA32UI_EXT: + break; + case GL_ALPHA8I_EXT: + break; + case GL_ALPHA16I_EXT: + break; + case GL_ALPHA32I_EXT: + break; + case GL_LUMINANCE8UI_EXT: + break; + case GL_LUMINANCE16UI_EXT: + break; + case GL_LUMINANCE32UI_EXT: + break; + case GL_LUMINANCE8I_EXT: + break; + case GL_LUMINANCE16I_EXT: + break; + case GL_LUMINANCE32I_EXT: + break; + case GL_LUMINANCE_ALPHA8UI_EXT: + break; + case GL_LUMINANCE_ALPHA16UI_EXT: + break; + case GL_LUMINANCE_ALPHA32UI_EXT: + break; + case GL_LUMINANCE_ALPHA8I_EXT: + break; + case GL_LUMINANCE_ALPHA16I_EXT: + break; + case GL_LUMINANCE_ALPHA32I_EXT: + break; + case GL_INTENSITY8UI_EXT: + break; + case GL_INTENSITY16UI_EXT: + break; + case GL_INTENSITY32UI_EXT: + break; + case GL_INTENSITY8I_EXT: + break; + case GL_INTENSITY16I_EXT: + break; + case GL_INTENSITY32I_EXT: + break; + + case GL_RGB8UI_EXT: + break; + case GL_RGB16UI_EXT: + break; + case GL_RGB32UI_EXT: + break; + case GL_RGB8I_EXT: + break; + case GL_RGB16I_EXT: + break; + case GL_RGB32I_EXT: + break; + case GL_RGBA8UI_EXT: + break; + case GL_RGBA16UI_EXT: + break; + case GL_RGBA32UI_EXT: + break; + case GL_RGBA8I_EXT: + break; + case GL_RGBA16I_EXT: + break; + case GL_RGBA32I_EXT: + break; + + case GL_R8: + case GL_RED: + break; + + case GL_COMPRESSED_RED: +// if (target != GL_TEXTURE_1D && target != GL_TEXTURE_1D_ARRAY) +// RETURN_IF_SUPPORTED(MESA_FORMAT_RED_RGTC1); +// RETURN_IF_SUPPORTED(MESA_FORMAT_R8); + break; + + case GL_R16: + break; + + case GL_COMPRESSED_RG: +// if (target != GL_TEXTURE_1D && target != GL_TEXTURE_1D_ARRAY) +// RETURN_IF_SUPPORTED(MESA_FORMAT_RG_RGTC2); +// RETURN_IF_SUPPORTED(MESA_FORMAT_GR88); + break; + + case GL_RG16: + break; + + case GL_R16F: + break; + case GL_R32F: + break; + case GL_RG16F: + break; + case GL_RG32F: + break; + + case GL_R8UI: + break; + case GL_RG8UI: + break; + case GL_R16UI: + break; + case GL_RG16UI: + break; + case GL_R32UI: + break; + case GL_RG32UI: + break; + case GL_R8I: + break; + case GL_RG8I: + break; + case GL_R16I: + break; + case GL_RG16I: + break; + case GL_R32I: + break; + case GL_RG32I: + break; + + case GL_RGB10_A2UI: + break; + + case GL_BGRA: + break; + } + +} +#endif bool brw_blorp_blit_params::compare_source_to_target(struct brw_context *brw, GLenum baseSourceFormat, @@ -2314,7 +2761,7 @@ bool brw_blorp_blit_params::test_formats(struct brw_context *brw, gl_format src_format, gl_format dst_format, - GLint internal_format) + GLint base_internal_format) { struct gl_context *ctx = &brw->ctx; @@ -2371,7 +2818,7 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw, GLenum baseDestinationFormat = _mesa_get_format_base_format(dst_format); return compare_source_to_target(brw, baseSourceFormat, baseDestinationFormat) && - compare_source_to_target(brw, baseSourceFormat, internal_format); + (0 == base_internal_format || compare_source_to_target(brw, baseSourceFormat, base_internal_format)); } brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index d75bd307d1..8b9bf5863d 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -197,7 +197,7 @@ typedef enum { sample_scale = 1 << 8, alpha_blend_render = 1 << 9, - x_shadow = 1 << 10, + blorp_shadow_sampler = 1 << 10, scale_mask = scale_x | scale_y | scale_z | scale_w, scale_xy = scale_x | scale_y, @@ -206,7 +206,7 @@ typedef enum { 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 + not_supported_mask = scale_mask | swizzle_mask | sample_scale | blorp_shadow_sampler } blorp_process_format; #define BRW_NEW_URB_FENCE (1 << BRW_STATE_URB_FENCE) diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c b/src/mesa/drivers/dri/i965/brw_surface_formats.c index 65e70c7fc0..16d0dd6f2c 100644 --- a/src/mesa/drivers/dri/i965/brw_surface_formats.c +++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c @@ -464,13 +464,13 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ BRW_SURFACEFORMAT_B8G8R8A8_UNORM, swizzle_all}, [MESA_FORMAT_S8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM, - BRW_SURFACEFORMAT_I24X8_UNORM, + BRW_SURFACEFORMAT_B8G8R8A8_UNORM, 0}, [MESA_FORMAT_Z16] = {BRW_SURFACEFORMAT_R16_UNORM, - BRW_SURFACEFORMAT_I16_UNORM, - 0}, + BRW_SURFACEFORMAT_R16_UNORM, + blorp_shadow_sampler}, [MESA_FORMAT_X8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM, - BRW_SURFACEFORMAT_I24X8_UNORM, + BRW_SURFACEFORMAT_B8G8R8A8_UNORM, 0}, [MESA_FORMAT_Z24_X8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACE_FORMAT_NONE, @@ -480,7 +480,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ swizzle_all}, [MESA_FORMAT_S8] = {BRW_SURFACEFORMAT_R8_UNORM, BRW_SURFACEFORMAT_R8_UNORM, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_SRGB8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB, @@ -576,83 +576,83 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ 0}, [MESA_FORMAT_RG_FLOAT16] = {BRW_SURFACEFORMAT_R16G16_FLOAT, BRW_SURFACEFORMAT_R16G16_FLOAT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_UINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_LUMINANCE_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32_SINT, - 0}, + blorp_shadow_sampler}, [MESA_FORMAT_R_INT8] = {BRW_SURFACEFORMAT_R8_SINT, BRW_SURFACEFORMAT_R8_SINT, @@ -673,7 +673,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ 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, + BRW_SURFACEFORMAT_R16G16B16_SINT, 0}, [MESA_FORMAT_RGBA_INT16] = {BRW_SURFACEFORMAT_R16G16B16A16_SINT, BRW_SURFACEFORMAT_R16G16B16A16_SINT, @@ -710,7 +710,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ 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, + BRW_SURFACEFORMAT_R16G16B16_UINT, 0}, [MESA_FORMAT_RGBA_UINT16] = {BRW_SURFACEFORMAT_R16G16B16A16_UINT, BRW_SURFACEFORMAT_R16G16B16A16_UINT, @@ -753,7 +753,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ 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, + BRW_SURFACEFORMAT_R16G16B16_SNORM, 0}, [MESA_FORMAT_SIGNED_RGBA_16] = {BRW_SURFACEFORMAT_R16G16B16A16_SNORM, BRW_SURFACEFORMAT_R16G16B16A16_SNORM, @@ -823,29 +823,29 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ 0}, [MESA_FORMAT_SIGNED_A8] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R8_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_L8] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R8_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_AL88] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R8G8_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_I8] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R8_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_A16] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R16_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_L16] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R16_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_AL1616] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R16G16_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_SIGNED_I16] = {BRW_SURFACE_FORMAT_NONE, - BRW_SURFACE_FORMAT_NONE, - swizzle_all}, + BRW_SURFACEFORMAT_R16_SNORM, + blorp_shadow_sampler}, [MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP, @@ -854,7 +854,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ BRW_SURFACEFORMAT_R11G11B10_FLOAT, 0}, - [MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_I32_FLOAT, + [MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_R32_FLOAT, BRW_SURFACEFORMAT_R32_FLOAT, 0}, [MESA_FORMAT_Z32_FLOAT_X24S8] = {BRW_SURFACEFORMAT_R32G32_FLOAT_LD, @@ -876,16 +876,16 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_ alpha_blend_render}, [MESA_FORMAT_XBGR8888_SNORM] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8G8B8A8_SNORM, - alpha_blend_render | swizzle_all | x_shadow}, + alpha_blend_render | swizzle_all}, [MESA_FORMAT_XBGR8888_SRGB] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB, alpha_blend_render | swizzle_all}, [MESA_FORMAT_XBGR8888_UINT] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8G8B8A8_UINT, - alpha_blend_render | swizzle_all | x_shadow}, + alpha_blend_render | swizzle_all}, [MESA_FORMAT_XBGR8888_SINT] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R8G8B8A8_SINT, - alpha_blend_render | swizzle_all | x_shadow}, + alpha_blend_render | swizzle_all}, [MESA_FORMAT_XRGB2101010_UNORM] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_B10G10R10X2_UNORM, alpha_blend_render}, @@ -894,25 +894,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 | x_shadow}, + alpha_blend_render | 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 | x_shadow}, + alpha_blend_render | swizzle_all}, [MESA_FORMAT_XBGR16161616_SINT] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R16G16B16A16_SINT, - alpha_blend_render | swizzle_all | x_shadow}, + alpha_blend_render | 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 | x_shadow}, + alpha_blend_render | swizzle_all}, [MESA_FORMAT_XBGR32323232_SINT] = {BRW_SURFACE_FORMAT_NONE, BRW_SURFACEFORMAT_R32G32B32A32_SINT, - alpha_blend_render | swizzle_all | x_shadow} + alpha_blend_render | swizzle_all} }; assert(mesa_format < MESA_PRIVATE_FORMAT_COUNT); diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 798b566a85..dd89da85e7 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -288,16 +288,16 @@ brw_update_texture_surface(struct gl_context *ctx, blorp_process_format process_flags; BRW_SURFACE brw_surface; - BRW_SURFACE *dst_format; - BRW_SURFACE *src_format; - - if (!for_gather) { - dst_format = 0; - src_format = &brw_surface; - } else { - dst_format = &brw_surface; - src_format = 0; - } +// BRW_SURFACE *dst_format; +// BRW_SURFACE *src_format; + +// if (!for_gather) { +// dst_format = 0; +// src_format = &brw_surface; +// } else { +// dst_format = &brw_surface; +// src_format = 0; +// } translate_tex_format(brw, mt->format, sampler->sRGBDecode, diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 474a310d61..e4fd99095f 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -848,6 +848,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ { switch (format) { case GL_RED: + case GL_RED_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_R_INT8; @@ -869,6 +870,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; case GL_RG: + case GL_RG_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_RG_INT8; @@ -890,6 +892,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; case GL_RGB: + case GL_RGB_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_RGB_INT8; @@ -921,6 +924,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; case GL_BGR: + case GL_BGR_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_BGR_INT8; @@ -942,6 +946,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; case GL_RGBA: + case GL_RGBA_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_RGBA_INT8; @@ -981,6 +986,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; case GL_BGRA: + case GL_BGRA_INTEGER: switch (type) { case GL_BYTE: return MESA_FORMAT_BGRA_INT8; @@ -1019,6 +1025,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ } break; +// case GL_ALPHA8I_EXT: case GL_LUMINANCE: switch (type) { case GL_BYTE: @@ -1098,7 +1105,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ break; } - _mesa_problem(ctx, "%s(): unexpected format %s and type %s\n", + _mesa_debug(ctx, "%s(): unexpected format %s and type %s\n", __FUNCTION__, _mesa_lookup_enum_by_nr(format), _mesa_lookup_enum_by_nr(type)); return MESA_FORMAT_NONE; } |