diff options
author | Glenn Kennard <[email protected]> | 2014-09-10 11:54:40 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-10-12 23:53:57 +0200 |
commit | a327fa3a068af49bb7ae00a4b03abcb91906e0d2 (patch) | |
tree | 73099704bc1d26aab47982aaa80165e20028634d /src/gallium/drivers/r600/r600_state_common.c | |
parent | 75e97e2e3f317c79124116f596bdf0fde9f70ef8 (diff) |
r600g: Implement GL_ARB_sample_shading
Also fixes two sided lighting which was broken at least
on pre-evergreen by commit b1eb00.
Signed-off-by: Glenn Kennard <[email protected]>
Signed-off-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index d9174a59230..68365f9d9af 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -1085,6 +1085,26 @@ static void r600_setup_txq_cube_array_constants(struct r600_context *rctx, int s pipe_resource_reference(&cb.buffer, NULL); } +/* set sample xy locations as array of fragment shader constants */ +void r600_set_sample_locations_constant_buffer(struct r600_context *rctx) +{ + struct pipe_constant_buffer constbuf = {0}; + float values[4*16] = {0.0f}; + int i; + struct pipe_context *ctx = &rctx->b.b; + + assert(rctx->framebuffer.nr_samples <= Elements(values)/4); + for (i = 0; i < rctx->framebuffer.nr_samples; i++) { + ctx->get_sample_position(ctx, rctx->framebuffer.nr_samples, i, &values[4*i]); + } + + constbuf.user_buffer = values; + constbuf.buffer_size = rctx->framebuffer.nr_samples * 4 * 4; + ctx->set_constant_buffer(ctx, PIPE_SHADER_FRAGMENT, + R600_SAMPLE_POSITIONS_CONST_BUFFER, &constbuf); + pipe_resource_reference(&constbuf.buffer, NULL); +} + static void update_shader_atom(struct pipe_context *ctx, struct r600_shader_state *state, struct r600_pipe_shader *shader) |