r600g: use surface format not underlying texture format
This uses the surface format to set the CB up not the underlying texture format, since these can and do differ. Fixes piglit fbo-srgb.
This commit is contained in:
@@ -664,12 +664,12 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state
|
||||
pitch = rtex->pitch_in_pixels[level] / 8 - 1;
|
||||
slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1;
|
||||
ntype = 0;
|
||||
desc = util_format_description(rtex->resource.base.b.format);
|
||||
desc = util_format_description(surf->base.format);
|
||||
if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB)
|
||||
ntype = V_028C70_NUMBER_SRGB;
|
||||
|
||||
format = r600_translate_colorformat(rtex->resource.base.b.format);
|
||||
swap = r600_translate_colorswap(rtex->resource.base.b.format);
|
||||
format = r600_translate_colorformat(surf->base.format);
|
||||
swap = r600_translate_colorswap(surf->base.format);
|
||||
color_info = S_028C70_FORMAT(format) |
|
||||
S_028C70_COMP_SWAP(swap) |
|
||||
S_028C70_ARRAY_MODE(rtex->array_mode[level]) |
|
||||
|
||||
@@ -709,12 +709,12 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta
|
||||
pitch = rtex->pitch_in_pixels[level] / 8 - 1;
|
||||
slice = rtex->pitch_in_pixels[level] * surf->aligned_height / 64 - 1;
|
||||
ntype = 0;
|
||||
desc = util_format_description(rtex->resource.base.b.format);
|
||||
desc = util_format_description(surf->base.format);
|
||||
if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB)
|
||||
ntype = V_0280A0_NUMBER_SRGB;
|
||||
|
||||
format = r600_translate_colorformat(rtex->resource.base.b.format);
|
||||
swap = r600_translate_colorswap(rtex->resource.base.b.format);
|
||||
format = r600_translate_colorformat(surf->base.format);
|
||||
swap = r600_translate_colorswap(surf->base.format);
|
||||
color_info = S_0280A0_FORMAT(format) |
|
||||
S_0280A0_COMP_SWAP(swap) |
|
||||
S_0280A0_ARRAY_MODE(rtex->array_mode[level]) |
|
||||
|
||||
Reference in New Issue
Block a user