瀏覽代碼

cell: minor improvements to fragment code-gen

tags/mesa_20090313
Brian Paul 17 年之前
父節點
當前提交
bc304bbd49
共有 1 個文件被更改,包括 11 次插入3 次删除
  1. 11
    3
      src/gallium/drivers/cell/ppu/cell_gen_fragment.c

+ 11
- 3
src/gallium/drivers/cell/ppu/cell_gen_fragment.c 查看文件

@@ -265,6 +265,8 @@ gen_blend(const struct pipe_blend_state *blend,
int one_reg = spe_allocate_available_register(f);
int tmp_reg = spe_allocate_available_register(f);

boolean one_reg_set = false; /* avoid setting one_reg more than once */

ASSERT(blend->blend_enable);

/* Unpack/convert framebuffer colors from four 32-bit packed colors
@@ -275,7 +277,7 @@ gen_blend(const struct pipe_blend_state *blend,
int mask_reg = spe_allocate_available_register(f);

/* mask = {0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff} */
spe_fsmbi(f, mask_reg, 0x1111);
spe_load_int(f, mask_reg, 0xff);

/* XXX there may be more clever ways to implement the following code */
switch (color_format) {
@@ -418,7 +420,10 @@ gen_blend(const struct pipe_blend_state *blend,
break;
case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
/* one = {1.0, 1.0, 1.0, 1.0} */
spe_load_float(f, one_reg, 1.0f);
if (!one_reg_set) {
spe_load_float(f, one_reg, 1.0f);
one_reg_set = true;
}
/* tmp = one - fragA */
spe_fs(f, tmp_reg, one_reg, fragA_reg);
/* term = fb * tmp */
@@ -446,7 +451,10 @@ gen_blend(const struct pipe_blend_state *blend,
break;
case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
/* one = {1.0, 1.0, 1.0, 1.0} */
spe_load_float(f, one_reg, 1.0f);
if (!one_reg_set) {
spe_load_float(f, one_reg, 1.0f);
one_reg_set = true;
}
/* tmp = one - fragA */
spe_fs(f, tmp_reg, one_reg, fragA_reg);
/* termA = fbA * tmp */

Loading…
取消
儲存