anv/cmd_buffer: Emit gen9 style SF state for CHV
authorBen Widawsky <benjamin.widawsky@intel.com>
Fri, 29 Jan 2016 22:10:52 +0000 (14:10 -0800)
committerBen Widawsky <benjamin.widawsky@intel.com>
Fri, 29 Jan 2016 22:12:32 +0000 (14:12 -0800)
The state for line width changes on Cherryview to use the GEN9 bits (for extra
precision).

src/vulkan/gen8_cmd_buffer.c

index 045846b1072d573c530ab61ea3414494366648f2..56d80e26eeb9b43d5112211e6138ee4f044fe1cb 100644 (file)
@@ -225,7 +225,7 @@ flush_pipeline_select_3d(struct anv_cmd_buffer *cmd_buffer)
 }
 
 static void
-__emit_sf_state(struct anv_cmd_buffer *cmd_buffer)
+__emit_genx_sf_state(struct anv_cmd_buffer *cmd_buffer)
 {
       uint32_t sf_dw[GENX(3DSTATE_SF_length)];
       struct GENX(3DSTATE_SF) sf = {
@@ -237,6 +237,28 @@ __emit_sf_state(struct anv_cmd_buffer *cmd_buffer)
       anv_batch_emit_merge(&cmd_buffer->batch, sf_dw,
                            cmd_buffer->state.pipeline->gen8.sf);
 }
+static void
+__emit_gen9_sf_state(struct anv_cmd_buffer *cmd_buffer)
+{
+      uint32_t sf_dw[GENX(3DSTATE_SF_length)];
+      struct GEN9_3DSTATE_SF sf = {
+         GEN9_3DSTATE_SF_header,
+         .LineWidth = cmd_buffer->state.dynamic.line_width,
+      };
+      GEN9_3DSTATE_SF_pack(NULL, sf_dw, &sf);
+      /* FIXME: gen9.fs */
+      anv_batch_emit_merge(&cmd_buffer->batch, sf_dw,
+                           cmd_buffer->state.pipeline->gen8.sf);
+}
+
+static void
+__emit_sf_state(struct anv_cmd_buffer *cmd_buffer)
+{
+   if (cmd_buffer->device->info.is_cherryview)
+      __emit_gen9_sf_state(cmd_buffer);
+   else
+      __emit_genx_sf_state(cmd_buffer);
+}
 
 static void
 cmd_buffer_flush_state(struct anv_cmd_buffer *cmd_buffer)