diff mbox

radeon: allow write_reloc with unaccounted buffers to cope with Mesa R200 bug

Message ID 1406900600-3601-1-git-send-email-maraeo@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marek Olšák Aug. 1, 2014, 1:43 p.m. UTC
From: Marek Olšák <marek.olsak@amd.com>

---

I'm not really interested in studying the R200 driver to fix it.
This has to suffice.

 radeon/radeon_cs_gem.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Alex Deucher Aug. 4, 2014, 3:58 p.m. UTC | #1
On Fri, Aug 1, 2014 at 9:43 AM, Marek Olšák <maraeo@gmail.com> wrote:
> From: Marek Olšák <marek.olsak@amd.com>
>
> ---
>
> I'm not really interested in studying the R200 driver to fix it.
> This has to suffice.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
>  radeon/radeon_cs_gem.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c
> index b87c6b1..bcfa05b 100644
> --- a/radeon/radeon_cs_gem.c
> +++ b/radeon/radeon_cs_gem.c
> @@ -178,6 +178,15 @@ static int cs_gem_write_reloc(struct radeon_cs_int *cs,
>      uint32_t idx;
>      unsigned i;
>
> +    if (!boi->space_accounted) {
> +        struct radeon_cs *rcs = (struct radeon_cs*)cs;
> +        int r;
> +
> +        radeon_cs_space_add_persistent_bo(rcs, bo, read_domain, write_domain);
> +        r = radeon_cs_space_check(rcs);
> +        if (r)
> +            return r;
> +    }
>      assert(boi->space_accounted);
>
>      /* check domains */
> --
> 1.9.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
Marek Olšák Aug. 4, 2014, 7:17 p.m. UTC | #2
Actually, please disregard this patch. I have found and fixed the real
problem in mesa/r200.

Marek

On Mon, Aug 4, 2014 at 5:58 PM, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Fri, Aug 1, 2014 at 9:43 AM, Marek Olšák <maraeo@gmail.com> wrote:
>> From: Marek Olšák <marek.olsak@amd.com>
>>
>> ---
>>
>> I'm not really interested in studying the R200 driver to fix it.
>> This has to suffice.
>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
>
>>
>>  radeon/radeon_cs_gem.c | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>>
>> diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c
>> index b87c6b1..bcfa05b 100644
>> --- a/radeon/radeon_cs_gem.c
>> +++ b/radeon/radeon_cs_gem.c
>> @@ -178,6 +178,15 @@ static int cs_gem_write_reloc(struct radeon_cs_int *cs,
>>      uint32_t idx;
>>      unsigned i;
>>
>> +    if (!boi->space_accounted) {
>> +        struct radeon_cs *rcs = (struct radeon_cs*)cs;
>> +        int r;
>> +
>> +        radeon_cs_space_add_persistent_bo(rcs, bo, read_domain, write_domain);
>> +        r = radeon_cs_space_check(rcs);
>> +        if (r)
>> +            return r;
>> +    }
>>      assert(boi->space_accounted);
>>
>>      /* check domains */
>> --
>> 1.9.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c
index b87c6b1..bcfa05b 100644
--- a/radeon/radeon_cs_gem.c
+++ b/radeon/radeon_cs_gem.c
@@ -178,6 +178,15 @@  static int cs_gem_write_reloc(struct radeon_cs_int *cs,
     uint32_t idx;
     unsigned i;
 
+    if (!boi->space_accounted) {
+        struct radeon_cs *rcs = (struct radeon_cs*)cs;
+        int r;
+
+        radeon_cs_space_add_persistent_bo(rcs, bo, read_domain, write_domain);
+        r = radeon_cs_space_check(rcs);
+        if (r)
+            return r;
+    }
     assert(boi->space_accounted);
 
     /* check domains */