Lines Matching defs:r300
53 * Gallium state objects into semi-native r300 state objects. */
58 r300_mark_atom_dirty(r300, &(atom)); \
454 /* Neither fglrx nor classic r300 ever set this, regardless of dithering
530 struct r300_context* r300 = r300_context(pipe);
532 boolean last_alpha_to_one = r300->alpha_to_one;
533 boolean last_alpha_to_coverage = r300->alpha_to_coverage;
535 UPDATE_STATE(state, r300->blend_state);
540 r300->alpha_to_one = blend->state.alpha_to_one;
541 r300->alpha_to_coverage = blend->state.alpha_to_coverage;
543 if (r300->alpha_to_one != last_alpha_to_one && r300->msaa_enable &&
544 r300->fs_status == FRAGMENT_SHADER_VALID) {
545 r300->fs_status = FRAGMENT_SHADER_MAYBE_DIRTY;
548 if (r300->alpha_to_coverage != last_alpha_to_coverage &&
549 r300->msaa_enable) {
550 r300_mark_atom_dirty(r300, &r300->dsa_state);
572 struct r300_context* r300 = r300_context(pipe);
573 struct pipe_framebuffer_state *fb = r300->fb_state.state;
575 (struct r300_blend_color_state*)r300->blend_color_state.state;
618 if (r300->screen->caps.is_r500) {
648 r300_mark_atom_dirty(r300, &r300->blend_color_state);
654 struct r300_context* r300 = r300_context(pipe);
656 (struct r300_clip_state*)r300->clip_state.state;
659 if (r300->screen->caps.has_tcl) {
660 BEGIN_CB(clip->cb, r300->clip_state.size);
662 (r300->screen->caps.is_r500 ?
668 r300_mark_atom_dirty(r300, &r300->clip_state);
670 draw_set_clip_state(r300->draw, state);
782 static void r300_dsa_inject_stencilref(struct r300_context *r300)
785 (struct r300_dsa_state*)r300->dsa_state.state;
792 r300->stencil_ref.ref_value[0];
795 r300->stencil_ref.ref_value[1];
802 struct r300_context* r300 = r300_context(pipe);
808 UPDATE_STATE(state, r300->dsa_state);
810 r300_mark_atom_dirty(r300, &r300->hyperz_state); /* Will be updated before the emission. */
811 r300_dsa_inject_stencilref(r300);
824 struct r300_context* r300 = r300_context(pipe);
826 r300->stencil_ref = sr;
828 r300_dsa_inject_stencilref(r300);
829 r300_mark_atom_dirty(r300, &r300->dsa_state);
839 "r300: %s[%i] Dim: %ix%i, Firstlayer: %i, "
842 "r300: TEX: Macro: %s, Micro: %s, "
855 void r300_mark_fb_state_dirty(struct r300_context *r300,
858 struct pipe_framebuffer_state *state = r300->fb_state.state;
860 r300_mark_atom_dirty(r300, &r300->gpu_flush);
861 r300_mark_atom_dirty(r300, &r300->fb_state);
865 r300_mark_atom_dirty(r300, &r300->aa_state);
866 r300_mark_atom_dirty(r300, &r300->dsa_state); /* for AlphaRef */
867 r300_set_blend_color(&r300->context, r300->blend_color_state.state);
872 r300_mark_atom_dirty(r300, &r300->hyperz_state);
877 r300_mark_atom_dirty(r300, &r300->fb_state_pipelined);
881 r300->fb_state.size = 2 + (8 * state->nr_cbufs);
883 if (r300->cbzb_clear)
884 r300->fb_state.size += 10;
886 r300->fb_state.size += 10;
887 if (r300->hyperz_enabled)
888 r300->fb_state.size += 8;
891 if (r300->cmask_in_use) {
892 r300->fb_state.size += 6;
893 if (r300->screen->caps.is_r500) {
894 r300->fb_state.size += 3;
905 struct r300_context* r300 = r300_context(pipe);
906 struct r300_aa_state *aa = (struct r300_aa_state*)r300->aa_state.state;
907 struct pipe_framebuffer_state *current_state = r300->fb_state.state;
912 if (r300->screen->caps.is_r500) {
914 } else if (r300->screen->caps.is_r400) {
921 fprintf(stderr, "r300: Implementation error: Render targets are too "
926 if (current_state->zsbuf && r300->zmask_in_use && !r300->locked_zbuffer) {
931 r300_decompress_zmask(r300);
932 r300->hiz_in_use = FALSE;
936 pipe_surface_reference(&r300->locked_zbuffer, current_state->zsbuf);
938 } else if (r300->locked_zbuffer) {
941 if (!pipe_surface_equal(r300->locked_zbuffer, state->zsbuf)) {
944 r300_decompress_zmask_locked_unsafe(r300);
945 r300->hiz_in_use = FALSE;
952 assert(state->zsbuf || (r300->locked_zbuffer && !unlock_zbuffer) || !r300->zmask_in_use);
956 r300_mark_atom_dirty(r300, &r300->dsa_state);
959 util_copy_framebuffer_state(r300->fb_state.state, state);
966 r300->cmask_in_use =
968 r300->screen->cmask_resource == state->cbufs[0]->texture;
971 r300_mark_atom_dirty(r300, &r300->blend_state);
974 r300_set_blend_color(pipe, &((struct r300_blend_color_state*)r300->blend_color_state.state)->state);
977 pipe_surface_reference(&r300->locked_zbuffer, NULL);
980 r300_mark_fb_state_dirty(r300, R300_CHANGED_FB_STATE);
993 if (r300->zbuffer_bpp != zbuffer_bpp) {
994 r300->zbuffer_bpp = zbuffer_bpp;
996 if (r300->polygon_offset_enabled)
997 r300_mark_atom_dirty(r300, &r300->rs_state);
1001 r300->num_samples = util_framebuffer_get_num_samples(state);
1004 if (r300->num_samples > 1) {
1005 switch (r300->num_samples) {
1023 if (DBG_ON(r300, DBG_FB)) {
1024 fprintf(stderr, "r300: set_framebuffer_state:\n");
1039 struct r300_context* r300 = r300_context(pipe);
1048 if (r300->screen->caps.is_r500)
1072 r300_pick_fragment_shader(r300, fs, &precompile_state);
1077 void r300_mark_fs_code_dirty(struct r300_context *r300)
1079 struct r300_fragment_shader* fs = r300_fs(r300);
1081 r300_mark_atom_dirty(r300, &r300->fs);
1082 r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state);
1083 r300_mark_atom_dirty(r300, &r300->fs_constants);
1084 r300->fs.size = fs->shader->cb_code_size;
1086 if (r300->screen->caps.is_r500) {
1087 r300->fs_rc_constant_state.size = fs->shader->rc_state_count * 7;
1088 r300->fs_constants.size = fs->shader->externals_count * 4 + 3;
1090 r300->fs_rc_constant_state.size = fs->shader->rc_state_count * 5;
1091 r300->fs_constants.size = fs->shader->externals_count * 4 + 1;
1094 ((struct r300_constant_buffer*)r300->fs_constants.state)->remap_table =
1101 struct r300_context* r300 = r300_context(pipe);
1105 r300->fs.state = NULL;
1109 r300->fs.state = fs;
1110 r300->fs_status = FRAGMENT_SHADER_DIRTY;
1112 r300_mark_atom_dirty(r300, &r300->rs_block_state); /* Will be updated before the emission. */
1363 struct r300_context* r300 = r300_context(pipe);
1365 int last_sprite_coord_enable = r300->sprite_coord_enable;
1366 boolean last_two_sided_color = r300->two_sided_color;
1367 boolean last_msaa_enable = r300->msaa_enable;
1368 boolean last_flatshade = r300->flatshade;
1369 boolean last_clip_halfz = r300->clip_halfz;
1371 if (r300->draw && rs) {
1372 draw_set_rasterizer_state(r300->draw, &rs->rs_draw, state);
1376 r300->polygon_offset_enabled = rs->polygon_offset_enable;
1377 r300->sprite_coord_enable = rs->rs.sprite_coord_enable;
1378 r300->two_sided_color = rs->rs.light_twoside;
1379 r300->msaa_enable = rs->rs.multisample;
1380 r300->flatshade = rs->rs.flatshade;
1381 r300->clip_halfz = rs->rs.clip_halfz;
1383 r300->polygon_offset_enabled = FALSE;
1384 r300->sprite_coord_enable = 0;
1385 r300->two_sided_color = FALSE;
1386 r300->msaa_enable = FALSE;
1387 r300->flatshade = FALSE;
1388 r300->clip_halfz = FALSE;
1391 UPDATE_STATE(state, r300->rs_state);
1392 r300->rs_state.size = RS_STATE_MAIN_SIZE + (r300->polygon_offset_enabled ? 5 : 0);
1394 if (last_sprite_coord_enable != r300->sprite_coord_enable ||
1395 last_two_sided_color != r300->two_sided_color ||
1396 last_flatshade != r300->flatshade) {
1397 r300_mark_atom_dirty(r300, &r300->rs_block_state);
1400 if (last_msaa_enable != r300->msaa_enable) {
1401 if (r300->alpha_to_coverage) {
1402 r300_mark_atom_dirty(r300, &r300->dsa_state);
1405 if (r300->alpha_to_one &&
1406 r300->fs_status == FRAGMENT_SHADER_VALID) {
1407 r300->fs_status = FRAGMENT_SHADER_MAYBE_DIRTY;
1411 if (r300->screen->caps.has_tcl && last_clip_halfz != r300->clip_halfz) {
1412 r300_mark_atom_dirty(r300, &r300->vs_state);
1426 struct r300_context* r300 = r300_context(pipe);
1428 boolean is_r500 = r300->screen->caps.is_r500;
1433 /* r300 doesn't handle CLAMP and MIRROR_CLAMP correctly when either MAG
1469 /* Unfortunately, r300-r500 don't support floating-point mipmap lods. */
1482 if (DBG_ON(r300, DBG_ANISOHQ) && is_r500) {
1487 if (r300->screen->caps.is_r500) {
1499 struct r300_context* r300 = r300_context(pipe);
1501 (struct r300_textures_state*)r300->textures_state.state;
1502 unsigned tex_units = r300->screen->caps.num_tex_units;
1515 r300_mark_atom_dirty(r300, &r300->textures_state);
1555 struct r300_context* r300 = r300_context(pipe);
1557 (struct r300_textures_state*)r300->textures_state.state;
1560 unsigned tex_units = r300->screen->caps.num_tex_units;
1603 r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state);
1621 r300_mark_atom_dirty(r300, &r300->textures_state);
1624 r300_mark_atom_dirty(r300, &r300->texture_cache_inval);
1662 fprintf(stderr, "r300: Oops. Got unsupported format %s in %s.\n",
1702 struct r300_context* r300 = r300_context(pipe);
1704 *((unsigned*)r300->sample_mask.state) = mask;
1706 r300_mark_atom_dirty(r300, &r300->sample_mask);
1714 struct r300_context* r300 = r300_context(pipe);
1716 memcpy(r300->scissor_state.state, state,
1719 r300_mark_atom_dirty(r300, &r300->scissor_state);
1727 struct r300_context* r300 = r300_context(pipe);
1729 (struct r300_viewport_state*)r300->viewport_state.state;
1731 r300->viewport = *state;
1733 if (r300->draw) {
1734 draw_set_viewport_states(r300->draw, start_slot, num_viewports, state);
1767 r300_mark_atom_dirty(r300, &r300->viewport_state);
1768 if (r300->fs.state && r300_fs(r300)->shader &&
1769 r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) {
1770 r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state);
1780 struct r300_context* r300 = r300_context(pipe);
1782 util_set_vertex_buffers_count(r300->vertex_buffer,
1783 &r300->nr_vertex_buffers,
1788 if (!r300->nr_vertex_buffers) {
1789 util_set_vertex_buffers_count(r300->vertex_buffer,
1790 &r300->nr_vertex_buffers,
1791 &r300->dummy_vb, 0, 1, 0, false);
1794 r300->vertex_arrays_dirty = TRUE;
1803 struct r300_context* r300 = r300_context(pipe);
1806 util_set_vertex_buffers_count(r300->vertex_buffer,
1807 &r300->nr_vertex_buffers,
1810 draw_set_vertex_buffers(r300->draw, start_slot, count,
1818 draw_set_mapped_vertex_buffer(r300->draw, start_slot + i,
1821 draw_set_mapped_vertex_buffer(r300->draw, start_slot + i,
1843 fprintf(stderr, "r300: Bad vertex format %s.\n",
1885 fprintf(stderr, "r300: More than 16 vertex elements are not supported,"
1915 struct r300_context *r300 = r300_context(pipe);
1922 r300->velems = velems;
1924 if (r300->draw) {
1925 draw_set_vertex_elements(r300->draw, velems->count, velems->velem);
1929 UPDATE_STATE(&velems->vertex_stream, r300->vertex_stream_state);
1930 r300->vertex_stream_state.size = (1 + velems->vertex_stream.count) * 2;
1931 r300->vertex_arrays_dirty = TRUE;
1942 struct r300_context* r300 = r300_context(pipe);
1958 if (r300->screen->caps.has_tcl) {
1959 if (r300->screen->caps.is_r500) {
1978 if (r300->screen->caps.has_tcl) {
1979 r300_translate_vertex_shader(r300, vs);
1981 r300_draw_init_vertex_shader(r300, vs);
1989 struct r300_context* r300 = r300_context(pipe);
1993 r300->vs_state.state = NULL;
1996 if (vs == r300->vs_state.state) {
1999 r300->vs_state.state = vs;
2002 r300_mark_atom_dirty(r300, &r300->rs_block_state); /* Will be updated before the emission. */
2004 if (r300->screen->caps.has_tcl) {
2005 unsigned fc_op_dwords = r300->screen->caps.is_r500 ? 3 : 2;
2006 r300_mark_atom_dirty(r300, &r300->vs_state);
2007 r300->vs_state.size = vs->shader->code.length + 9 +
2010 r300_mark_atom_dirty(r300, &r300->vs_constants);
2011 r300->vs_constants.size =
2016 ((struct r300_constant_buffer*)r300->vs_constants.state)->remap_table =
2019 r300_mark_atom_dirty(r300, &r300->pvs_flush);
2021 draw_bind_vertex_shader(r300->draw,
2028 struct r300_context* r300 = r300_context(pipe);
2031 if (r300->screen->caps.has_tcl) {
2040 draw_delete_vertex_shader(r300->draw,
2053 struct r300_context* r300 = r300_context(pipe);
2062 cbuf = (struct r300_constant_buffer*)r300->vs_constants.state;
2065 cbuf = (struct r300_constant_buffer*)r300->fs_constants.state;
2084 (shader == PIPE_SHADER_VERTEX && r300->screen->caps.has_tcl)) {
2089 if (r300->screen->caps.has_tcl) {
2090 struct r300_vertex_shader *vs = r300_vs(r300);
2097 cbuf->buffer_base = r300->vs_const_base;
2098 r300->vs_const_base += vs->shader->code.constants.Count;
2099 if (r300->vs_const_base > R500_MAX_PVS_CONST_VECS) {
2100 r300->vs_const_base = vs->shader->code.constants.Count;
2102 r300_mark_atom_dirty(r300, &r300->pvs_flush);
2104 r300_mark_atom_dirty(r300, &r300->vs_constants);
2105 } else if (r300->draw) {
2106 draw_set_mapped_constant_buffer(r300->draw, PIPE_SHADER_VERTEX,
2110 r300_mark_atom_dirty(r300, &r300->fs_constants);
2116 struct r300_context *r300 = r300_context(pipe);
2118 r300_mark_atom_dirty(r300, &r300->gpu_flush);
2119 r300_mark_atom_dirty(r300, &r300->texture_cache_inval);
2126 void r300_init_state_functions(struct r300_context* r300)
2128 r300->context.create_blend_state = r300_create_blend_state;
2129 r300->context.bind_blend_state = r300_bind_blend_state;
2130 r300->context.delete_blend_state = r300_delete_blend_state;
2132 r300->context.set_blend_color = r300_set_blend_color;
2134 r300->context.set_clip_state = r300_set_clip_state;
2135 r300->context.set_sample_mask = r300_set_sample_mask;
2137 r300->context.set_constant_buffer = r300_set_constant_buffer;
2139 r300->context.create_depth_stencil_alpha_state = r300_create_dsa_state;
2140 r300->context.bind_depth_stencil_alpha_state = r300_bind_dsa_state;
2141 r300->context.delete_depth_stencil_alpha_state = r300_delete_dsa_state;
2143 r300->context.set_stencil_ref = r300_set_stencil_ref;
2145 r300->context.set_framebuffer_state = r300_set_framebuffer_state;
2147 r300->context.create_fs_state = r300_create_fs_state;
2148 r300->context.bind_fs_state = r300_bind_fs_state;
2149 r300->context.delete_fs_state = r300_delete_fs_state;
2151 r300->context.set_polygon_stipple = r300_set_polygon_stipple;
2153 r300->context.create_rasterizer_state = r300_create_rs_state;
2154 r300->context.bind_rasterizer_state = r300_bind_rs_state;
2155 r300->context.delete_rasterizer_state = r300_delete_rs_state;
2157 r300->context.create_sampler_state = r300_create_sampler_state;
2158 r300->context.bind_sampler_states = r300_bind_sampler_states;
2159 r300->context.delete_sampler_state = r300_delete_sampler_state;
2161 r300->context.set_sampler_views = r300_set_sampler_views;
2162 r300->context.create_sampler_view = r300_create_sampler_view;
2163 r300->context.sampler_view_destroy = r300_sampler_view_destroy;
2165 r300->context.set_scissor_states = r300_set_scissor_states;
2167 r300->context.set_viewport_states = r300_set_viewport_states;
2169 if (r300->screen->caps.has_tcl) {
2170 r300->context.set_vertex_buffers = r300_set_vertex_buffers_hwtcl;
2172 r300->context.set_vertex_buffers = r300_set_vertex_buffers_swtcl;
2175 r300->context.create_vertex_elements_state = r300_create_vertex_elements_state;
2176 r300->context.bind_vertex_elements_state = r300_bind_vertex_elements_state;
2177 r300->context.delete_vertex_elements_state = r300_delete_vertex_elements_state;
2179 r300->context.create_vs_state = r300_create_vs_state;
2180 r300->context.bind_vs_state = r300_bind_vs_state;
2181 r300->context.delete_vs_state = r300_delete_vs_state;
2183 r300->context.texture_barrier = r300_texture_barrier;
2184 r300->context.memory_barrier = r300_memory_barrier;