浏览代码

softpipe: Flush draw module when fragment pipeline state changes.

tags/7.8-rc1
José Fonseca 16 年前
父节点
当前提交
4ccf0bb74e

+ 5
- 0
src/gallium/drivers/softpipe/sp_state_blend.c 查看文件

@@ -29,6 +29,7 @@
*/

#include "util/u_memory.h"
#include "draw/draw_context.h"
#include "sp_context.h"
#include "sp_state.h"

@@ -45,6 +46,8 @@ void softpipe_bind_blend_state( struct pipe_context *pipe,
{
struct softpipe_context *softpipe = softpipe_context(pipe);

draw_flush(softpipe->draw);

softpipe->blend = (struct pipe_blend_state *)blend;

softpipe->dirty |= SP_NEW_BLEND;
@@ -62,6 +65,8 @@ void softpipe_set_blend_color( struct pipe_context *pipe,
{
struct softpipe_context *softpipe = softpipe_context(pipe);

draw_flush(softpipe->draw);

softpipe->blend_color = *blend_color;

softpipe->dirty |= SP_NEW_BLEND;

+ 10
- 1
src/gallium/drivers/softpipe/sp_state_fs.c 查看文件

@@ -69,7 +69,14 @@ softpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
{
struct softpipe_context *softpipe = softpipe_context(pipe);

softpipe->fs = (struct sp_fragment_shader *) fs;
draw_flush(softpipe->draw);

if (softpipe->fs == fs)
return;

draw_flush(softpipe->draw);

softpipe->fs = fs;

softpipe->dirty |= SP_NEW_FS;
}
@@ -159,6 +166,8 @@ softpipe_set_constant_buffer(struct pipe_context *pipe,
assert(shader < PIPE_SHADER_TYPES);
assert(index == 0);

draw_flush(softpipe->draw);

/* note: reference counting */
pipe_buffer_reference(&softpipe->constants[shader].buffer,
buf ? buf->buffer : NULL);

+ 6
- 3
src/gallium/drivers/softpipe/sp_state_rasterizer.c 查看文件

@@ -41,14 +41,17 @@ softpipe_create_rasterizer_state(struct pipe_context *pipe,
}

void softpipe_bind_rasterizer_state(struct pipe_context *pipe,
void *setup)
void *rasterizer)
{
struct softpipe_context *softpipe = softpipe_context(pipe);

if (softpipe->rasterizer == rasterizer)
return;

/* pass-through to draw module */
draw_set_rasterizer_state(softpipe->draw, setup);
draw_set_rasterizer_state(softpipe->draw, rasterizer);

softpipe->rasterizer = (struct pipe_rasterizer_state *)setup;
softpipe->rasterizer = rasterizer;

softpipe->dirty |= SP_NEW_RASTERIZER;
}

正在加载...
取消
保存