mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 16:30:10 +01:00
iris: Plumb deref block size through to 3DSTATE_SF
Cc: "20.0" mesa-stable@lists.freedesktop.org Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3454>
This commit is contained in:
parent
e6b39850f0
commit
2ccdf881ab
2 changed files with 10 additions and 6 deletions
|
|
@ -28,6 +28,7 @@
|
|||
#include "util/u_debug.h"
|
||||
#include "intel/blorp/blorp.h"
|
||||
#include "intel/dev/gen_debug.h"
|
||||
#include "intel/common/gen_l3_config.h"
|
||||
#include "intel/compiler/brw_compiler.h"
|
||||
#include "iris_batch.h"
|
||||
#include "iris_binder.h"
|
||||
|
|
@ -731,6 +732,8 @@ struct iris_context {
|
|||
*/
|
||||
enum isl_aux_usage draw_aux_usage[BRW_MAX_DRAW_BUFFERS];
|
||||
|
||||
enum gen_urb_deref_block_size urb_deref_block_size;
|
||||
|
||||
/** Bitfield of whether color blending is enabled for RT[i] */
|
||||
uint8_t blend_enables;
|
||||
|
||||
|
|
|
|||
|
|
@ -1694,10 +1694,6 @@ iris_create_rasterizer_state(struct pipe_context *ctx,
|
|||
sf.PointWidthSource = state->point_size_per_vertex ? Vertex : State;
|
||||
sf.PointWidth = state->point_size;
|
||||
|
||||
#if GEN_GEN >= 12
|
||||
sf.DerefBlockSize = PerPolyDerefMode;
|
||||
#endif
|
||||
|
||||
if (state->flatshade_first) {
|
||||
sf.TriangleFanProvokingVertexSelect = 1;
|
||||
} else {
|
||||
|
|
@ -5386,7 +5382,8 @@ iris_upload_dirty_render_state(struct iris_context *ice,
|
|||
batch->screen->l3_config_3d,
|
||||
ice->shaders.prog[MESA_SHADER_TESS_EVAL] != NULL,
|
||||
ice->shaders.prog[MESA_SHADER_GEOMETRY] != NULL,
|
||||
size, entries, start, NULL);
|
||||
size, entries, start,
|
||||
&ice->state.urb_deref_block_size);
|
||||
|
||||
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
|
||||
iris_emit_cmd(batch, GENX(3DSTATE_URB_VS), urb) {
|
||||
|
|
@ -5768,13 +5765,17 @@ iris_upload_dirty_render_state(struct iris_context *ice,
|
|||
ARRAY_SIZE(cso_rast->clip));
|
||||
}
|
||||
|
||||
if (dirty & IRIS_DIRTY_RASTER) {
|
||||
if (dirty & (IRIS_DIRTY_RASTER | IRIS_DIRTY_URB)) {
|
||||
struct iris_rasterizer_state *cso = ice->state.cso_rast;
|
||||
iris_batch_emit(batch, cso->raster, sizeof(cso->raster));
|
||||
|
||||
uint32_t dynamic_sf[GENX(3DSTATE_SF_length)];
|
||||
iris_pack_command(GENX(3DSTATE_SF), &dynamic_sf, sf) {
|
||||
sf.ViewportTransformEnable = !ice->state.window_space_position;
|
||||
|
||||
#if GEN_GEN >= 12
|
||||
sf.DerefBlockSize = ice->state.urb_deref_block_size;
|
||||
#endif
|
||||
}
|
||||
iris_emit_merge(batch, cso->sf, dynamic_sf,
|
||||
ARRAY_SIZE(dynamic_sf));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue