void r300_emit_hyperz_state(struct r300_context *r300, unsigned size, void *state) { struct r300_hyperz_state *z = state; CS_LOCALS(r300); if (z->flush) WRITE_CS_TABLE(&z->cb_flush_begin, size); else WRITE_CS_TABLE(&z->cb_begin, size - 2); }
void r500_emit_fs(struct r300_context* r300, unsigned size, void *state) { struct r300_fragment_shader *fs = r300_fs(r300); CS_LOCALS(r300); WRITE_CS_TABLE(fs->shader->cb_code, fs->shader->cb_code_size); }
void r300_emit_clip_state(struct r300_context* r300, unsigned size, void* state) { struct r300_clip_state* clip = (struct r300_clip_state*)state; CS_LOCALS(r300); WRITE_CS_TABLE(clip->cb, size); }
void r300_emit_blend_color_state(struct r300_context* r300, unsigned size, void* state) { struct r300_blend_color_state* bc = (struct r300_blend_color_state*)state; CS_LOCALS(r300); WRITE_CS_TABLE(bc->cb, size); }
void r300_emit_dsa_state(struct r300_context* r300, unsigned size, void* state) { struct r300_dsa_state* dsa = (struct r300_dsa_state*)state; struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)r300->fb_state.state; CS_LOCALS(r300); if (fb->zsbuf) { if (fb->nr_cbufs && fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) WRITE_CS_TABLE(&dsa->cb_begin_fp16, size); else WRITE_CS_TABLE(&dsa->cb_begin, size); } else { if (fb->nr_cbufs && fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) WRITE_CS_TABLE(dsa->cb_fp16_zb_no_readwrite, size); else WRITE_CS_TABLE(dsa->cb_zb_no_readwrite, size); } }
void r300_emit_blend_state(struct r300_context* r300, unsigned size, void* state) { struct r300_blend_state* blend = (struct r300_blend_state*)state; struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)r300->fb_state.state; CS_LOCALS(r300); if (fb->nr_cbufs) { if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) { WRITE_CS_TABLE(blend->cb_noclamp, size); } else { unsigned swz = r300_surface(fb->cbufs[0])->colormask_swizzle; WRITE_CS_TABLE(blend->cb_clamp[swz], size); } } else { WRITE_CS_TABLE(blend->cb_no_readwrite, size); } }
void r300_emit_blend_state(struct r300_context* r300, unsigned size, void* state) { struct r300_blend_state* blend = (struct r300_blend_state*)state; struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)r300->fb_state.state; struct pipe_surface *cb; CS_LOCALS(r300); cb = fb->nr_cbufs ? r300_get_nonnull_cb(fb, 0) : NULL; if (cb) { if (cb->format == PIPE_FORMAT_R16G16B16A16_FLOAT) { WRITE_CS_TABLE(blend->cb_noclamp, size); } else if (cb->format == PIPE_FORMAT_R16G16B16X16_FLOAT) { WRITE_CS_TABLE(blend->cb_noclamp_noalpha, size); } else { unsigned swz = r300_surface(cb)->colormask_swizzle; WRITE_CS_TABLE(blend->cb_clamp[swz], size); } } else { WRITE_CS_TABLE(blend->cb_no_readwrite, size); } }
void r300_emit_invariant_state(struct r300_context *r300, unsigned size, void *state) { CS_LOCALS(r300); WRITE_CS_TABLE(state, size); }