mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 06:20:09 +01:00
iris: implement get_sample_position
Fixes arb_sample_shading/builtin-gl-sample-position
This commit is contained in:
parent
7ed4b80233
commit
701b47a197
1 changed files with 37 additions and 0 deletions
|
|
@ -32,6 +32,7 @@
|
|||
#include "iris_context.h"
|
||||
#include "iris_resource.h"
|
||||
#include "iris_screen.h"
|
||||
#include "common/gen_sample_positions.h"
|
||||
|
||||
static void
|
||||
iris_flush(struct pipe_context *ctx,
|
||||
|
|
@ -75,6 +76,41 @@ iris_set_debug_callback(struct pipe_context *ctx,
|
|||
memset(&ice->dbg, 0, sizeof(ice->dbg));
|
||||
}
|
||||
|
||||
static void
|
||||
iris_get_sample_position(struct pipe_context *ctx,
|
||||
unsigned sample_count,
|
||||
unsigned sample_index,
|
||||
float *out_value)
|
||||
{
|
||||
union {
|
||||
struct {
|
||||
float x[16];
|
||||
float y[16];
|
||||
} a;
|
||||
struct {
|
||||
float _0XOffset, _1XOffset, _2XOffset, _3XOffset,
|
||||
_4XOffset, _5XOffset, _6XOffset, _7XOffset,
|
||||
_8XOffset, _9XOffset, _10XOffset, _11XOffset,
|
||||
_12XOffset, _13XOffset, _14XOffset, _15XOffset;
|
||||
float _0YOffset, _1YOffset, _2YOffset, _3YOffset,
|
||||
_4YOffset, _5YOffset, _6YOffset, _7YOffset,
|
||||
_8YOffset, _9YOffset, _10YOffset, _11YOffset,
|
||||
_12YOffset, _13YOffset, _14YOffset, _15YOffset;
|
||||
} v;
|
||||
} u;
|
||||
switch (sample_count) {
|
||||
case 1: GEN_SAMPLE_POS_1X(u.v._); break;
|
||||
case 2: GEN_SAMPLE_POS_2X(u.v._); break;
|
||||
case 4: GEN_SAMPLE_POS_4X(u.v._); break;
|
||||
case 8: GEN_SAMPLE_POS_8X(u.v._); break;
|
||||
case 16: GEN_SAMPLE_POS_16X(u.v._); break;
|
||||
default: unreachable("invalid sample count");
|
||||
}
|
||||
|
||||
out_value[0] = u.a.x[sample_index];
|
||||
out_value[1] = u.a.y[sample_index];
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy a context, freeing any associated memory.
|
||||
*/
|
||||
|
|
@ -140,6 +176,7 @@ iris_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags)
|
|||
ctx->destroy = iris_destroy_context;
|
||||
ctx->flush = iris_flush;
|
||||
ctx->set_debug_callback = iris_set_debug_callback;
|
||||
ctx->get_sample_position = iris_get_sample_position;
|
||||
|
||||
ice->shaders.urb_size = devinfo->urb.size;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue