diff mbox

lib/rendercopy_gen9: WaBindlessSurfaceStateModifyEnable

Message ID 1439295937-4707-1-git-send-email-mika.kuoppala@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mika Kuoppala Aug. 11, 2015, 12:25 p.m. UTC
Don't set the size of bindless surface state on rendercopy.
And as of doing so, take into account the workaround for setting
the command size.

This was tried during hunting for
https://bugs.freedesktop.org/show_bug.cgi?id=89959. But no
impact was found.

Cc: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 lib/rendercopy_gen9.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

arun.siluvery@linux.intel.com Aug. 12, 2015, 9:47 a.m. UTC | #1
On 11/08/2015 13:25, Mika Kuoppala wrote:
> Don't set the size of bindless surface state on rendercopy.
> And as of doing so, take into account the workaround for setting
> the command size.
>
> This was tried during hunting for
> https://bugs.freedesktop.org/show_bug.cgi?id=89959. But no
> impact was found.
>
> Cc: Arun Siluvery <arun.siluvery@linux.intel.com>
> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>   lib/rendercopy_gen9.c | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index 0766192..4a4a604 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -511,7 +511,11 @@ gen7_emit_push_constants(struct intel_batchbuffer *batch) {
>
>   static void
>   gen9_emit_state_base_address(struct intel_batchbuffer *batch) {
> -	OUT_BATCH(GEN6_STATE_BASE_ADDRESS | (19 - 2));
> +
> +	/* WaBindlessSurfaceStateModifyEnable:skl,bxt */
> +	/* The length has to be one less if we dont modify
> +	   bindless state */
> +	OUT_BATCH(GEN6_STATE_BASE_ADDRESS | (19 - 1 - 2));
>
>   	/* general */
>   	OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
> @@ -544,9 +548,9 @@ gen9_emit_state_base_address(struct intel_batchbuffer *batch) {
>   	OUT_BATCH(1 << 12 | 1);
>
>   	/* Bindless surface state base address */
> -	OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
>   	OUT_BATCH(0);
> -	OUT_BATCH(0xfffff000);
> +	OUT_BATCH(0);
> +	OUT_BATCH(0);
>   }
>
>   static void
>

Agrees with spec and looks good to me. No impact observed with 
gem_concurrent_blit subtests.

Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>

regards
Arun
diff mbox

Patch

diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index 0766192..4a4a604 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -511,7 +511,11 @@  gen7_emit_push_constants(struct intel_batchbuffer *batch) {
 
 static void
 gen9_emit_state_base_address(struct intel_batchbuffer *batch) {
-	OUT_BATCH(GEN6_STATE_BASE_ADDRESS | (19 - 2));
+
+	/* WaBindlessSurfaceStateModifyEnable:skl,bxt */
+	/* The length has to be one less if we dont modify
+	   bindless state */
+	OUT_BATCH(GEN6_STATE_BASE_ADDRESS | (19 - 1 - 2));
 
 	/* general */
 	OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
@@ -544,9 +548,9 @@  gen9_emit_state_base_address(struct intel_batchbuffer *batch) {
 	OUT_BATCH(1 << 12 | 1);
 
 	/* Bindless surface state base address */
-	OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
 	OUT_BATCH(0);
-	OUT_BATCH(0xfffff000);
+	OUT_BATCH(0);
+	OUT_BATCH(0);
 }
 
 static void