radeonsi: fix up buffer descriptor upper-bound checking
authorMarek Olšák <marek.olsak@amd.com>
Fri, 12 Aug 2016 11:00:58 +0000 (13:00 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 17 Aug 2016 12:15:33 +0000 (14:15 +0200)
st/mesa does this too, so we're safe.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index 7e63d487377689433da9cdb7c2f637c90a7b817c..25dfe26787dd686a43c7d8f123a081960f621d9e 100644 (file)
@@ -2662,7 +2662,7 @@ si_make_buffer_descriptor(struct si_screen *screen, struct r600_resource *buf,
        data_format = si_translate_buffer_dataformat(&screen->b.b, desc, first_non_void);
 
        num_records = size / stride;
-       num_records = MIN2(num_records, buf->b.b.width0 / stride);
+       num_records = MIN2(num_records, (buf->b.b.width0 - offset) / stride);
 
        if (screen->b.chip_class >= VI)
                num_records *= stride;