mesa/virgl: Fix off-by-one and copy-paste error in multisample position evaluation
Converting from a switch statement that would not allow intermediate sample counts
to use an if-else chain went a bit wrong, so that in some cases the range that
should be inclusive was exclusive and the line for 16 samples was copies wrongly.
v2: elaborate commit message.
Fixes: 91f48cdfe5
virgl: Add support for glGetMultisample
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> (v1)
This commit is contained in:
@@ -943,11 +943,11 @@ static void virgl_get_sample_position(struct pipe_context *ctx,
|
||||
return;
|
||||
} else if (sample_count == 2) {
|
||||
bits = vs->caps.caps.v2.msaa_sample_positions[0] >> (8 * index);
|
||||
} else if (sample_count < 4) {
|
||||
} else if (sample_count <= 4) {
|
||||
bits = vs->caps.caps.v2.msaa_sample_positions[1] >> (8 * index);
|
||||
} else if (sample_count < 8) {
|
||||
} else if (sample_count <= 8) {
|
||||
bits = vs->caps.caps.v2.msaa_sample_positions[2 + (index >> 2)] >> (8 * (index & 3));
|
||||
} else if (sample_count < 8) {
|
||||
} else if (sample_count <= 16) {
|
||||
bits = vs->caps.caps.v2.msaa_sample_positions[4 + (index >> 2)] >> (8 * (index & 3));
|
||||
}
|
||||
out_value[0] = ((bits >> 4) & 0xf) / 16.0f;
|
||||
|
||||
Reference in New Issue
Block a user