mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
i965: Skip uploading border color when unnecessary.
The border color is only needed when using the GL_CLAMP_TO_BORDER or (deprecated) GL_CLAMP wrap modes; all others ignore it, including the common GL_CLAMP_TO_EDGE and GL_REPEAT wrap modes. In those cases, we can skip uploading it entirely, saving a bit of space in the batchbuffer. Instead, we just point it at the start of the batch (offset 0); we have to program something, and that address is safe to read. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
This commit is contained in:
parent
b7844d1248
commit
4ce11de4ae
1 changed files with 20 additions and 2 deletions
|
|
@ -185,6 +185,16 @@ translate_wrap_mode(struct brw_context *brw, GLenum wrap, bool using_nearest)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the given wrap mode requires the border color to exist.
|
||||
*/
|
||||
static bool
|
||||
wrap_mode_needs_border_color(unsigned wrap_mode)
|
||||
{
|
||||
return wrap_mode == BRW_TEXCOORDMODE_CLAMP_BORDER ||
|
||||
wrap_mode == GEN8_TEXCOORDMODE_HALF_BORDER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload SAMPLER_BORDER_COLOR_STATE.
|
||||
*/
|
||||
|
|
@ -431,8 +441,16 @@ brw_update_sampler_state(struct brw_context *brw,
|
|||
S_FIXED(CLAMP(texUnit->LodBias + sampler->LodBias, -16, 15), lod_bits);
|
||||
const unsigned base_level = U_FIXED(0, 1);
|
||||
|
||||
uint32_t border_color_offset;
|
||||
upload_default_color(brw, sampler, unit, &border_color_offset);
|
||||
/* Upload the border color if necessary. If not, just point it at
|
||||
* offset 0 (the start of the batch) - the color should be ignored,
|
||||
* but that address won't fault in case something reads it anyway.
|
||||
*/
|
||||
uint32_t border_color_offset = 0;
|
||||
if (wrap_mode_needs_border_color(wrap_s) ||
|
||||
wrap_mode_needs_border_color(wrap_t) ||
|
||||
wrap_mode_needs_border_color(wrap_r)) {
|
||||
upload_default_color(brw, sampler, unit, &border_color_offset);
|
||||
}
|
||||
|
||||
const bool non_normalized_coords = texObj->Target == GL_TEXTURE_RECTANGLE;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue