mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
i965: Duplicate less code in GetSamplePositions driver hook.
The 4x and 8x cases contained identical code for extracting the X and Y sample offset values and converting them from U0.4 back to float. Without this refactoring, we'd have to duplicate it a third time in order to support 2x MSAA. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
This commit is contained in:
parent
40dd777b33
commit
16f7510ad3
1 changed files with 12 additions and 11 deletions
|
|
@ -32,25 +32,26 @@ gen6_get_sample_position(struct gl_context *ctx,
|
|||
struct gl_framebuffer *fb,
|
||||
GLuint index, GLfloat *result)
|
||||
{
|
||||
uint8_t bits;
|
||||
|
||||
switch (fb->Visual.samples) {
|
||||
case 1:
|
||||
result[0] = result[1] = 0.5f;
|
||||
return;
|
||||
case 4:
|
||||
bits = brw_multisample_positions_4x[0] >> (8 * index);
|
||||
break;
|
||||
case 4: {
|
||||
uint8_t val = (uint8_t)(brw_multisample_positions_4x[0] >> (8*index));
|
||||
result[0] = ((val >> 4) & 0xf) / 16.0f;
|
||||
result[1] = (val & 0xf) / 16.0f;
|
||||
case 8:
|
||||
bits = brw_multisample_positions_8x[index >> 2] >> (8 * (index & 3));
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
uint8_t val = (uint8_t)(brw_multisample_positions_8x[index>>2] >> (8*(index & 3)));
|
||||
result[0] = ((val >> 4) & 0xf) / 16.0f;
|
||||
result[1] = (val & 0xf) / 16.0f;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert(!"Not implemented");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Convert from U0.4 back to a floating point coordinate. */
|
||||
result[0] = ((bits >> 4) & 0xf) / 16.0f;
|
||||
result[1] = (bits & 0xf) / 16.0f;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue