Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-06-03 Thread Anthony Pesch

Opened https://gitlab.freedesktop.org/mesa/piglit/merge_requests/73.

 - Anthony

On 5/31/19 4:39 AM, Pelloux-prayer, Pierre-eric wrote:

I can push it but can you first resend your patch using git send-mail because 
git am doesn't recognize the format of this one.

(or you can open a merge request on gitlab if you prefer)

Thanks!

Pierre-Eric


From: Anthony Pesch 
Sent: Friday, May 24, 2019 8:51 PM
To: Pelloux-prayer, Pierre-eric; Pierre-Eric Pelloux-Prayer; Anthony Pesch; 
piglit@lists.freedesktop.org
Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in 
ranges-2 test

I think I should have noted, I don't have commit access.

Would someone mind pushing this on my behalf?

   - Anthony

On 5/24/19 2:49 PM, Pelloux-prayer, Pierre-eric wrote:

Looks good to me, thanks.

Reviewed-by: Pierre-Eric Pelloux-Prayer 



From: Piglit  on behalf of Anthony Pesch 

Sent: Friday, May 24, 2019 8:21 PM
To: Pierre-Eric Pelloux-Prayer; Anthony Pesch; piglit@lists.freedesktop.org
Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in 
ranges-2 test

[CAUTION: External Email]

Hi Pierre,

Thanks!

I've modifed the patch to cast data, and added an additional check to
ensure unaligned offsets produce INVALID_VALUE. I'm not sure how to use
git send-mail to update a review, so I've just inlined the updated patch
here and attached it as well.

- Anthony


commit 770effba655f97be229e13f894884f0e4c3e604a
Author: Anthony Pesch 
Date:   Thu Apr 11 12:37:07 2019 -0400

   arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

   The ranges-2 test was failing due to glTexBufferRange returning
GL_INVALID_VALUE
   when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
byte aligned.

   From the OpenGL 4.6 Core spec:

   An INVALID_VALUE error is generated if offset is not an integer
multiple of the
   value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c
b/tests/spec/arb_texture_buffer_range/ranges-2.c
index 3477e4b52..83a009875 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,29 @@ float data[] = {
  0, 0,   0.5, 0,
};

+int aligned_size = 0;
+int chunk_size = 24 * sizeof(float);
+int num_chunks = 4;
+
enum piglit_result
piglit_display(void) {
  int i;
-   int chunk_size = 24 * sizeof(float);
  bool pass = true;

  glClearColor(0.2, 0.2, 0.2, 0.2);
  glClear(GL_COLOR_BUFFER_BIT);

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   /* verify unaligned offsets produce an error */
+   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F, tbo, aligned_size - 1, 
1);
+   pass &= glGetError() == GL_INVALID_VALUE;
+
+   for (i = 0; i < num_chunks; i++) {
  glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
-tbo, i * chunk_size, chunk_size);
+tbo, i * aligned_size, chunk_size);
  glDrawArrays(GL_TRIANGLES, 0, 6);
  }

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   for (i = 0; i < num_chunks; i++) {
  float c[4] = {
  data[i * 24 + 2],
  data[i * 24 + 3],
@@ -114,7 +121,7 @@ piglit_display(void) {
  1
  };

-   pass = piglit_probe_rect_rgba(
+   pass &= piglit_probe_rect_rgba(
  piglit_width * 0.5 * (1 + data[i * 24 + 0]),
  piglit_height * 0.5 * (1 + data[i * 24 + 1]),
  piglit_width/2,
@@ -128,8 +135,14 @@ piglit_display(void) {

void
piglit_init(int argc, char **argv) {
+   GLint align, i;
+   uint8_t *chunk;
+
  piglit_require_extension("GL_ARB_texture_buffer_range");

+   glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
+   aligned_size = chunk_size % align == 0 ? chunk_size : align;
+
  prog = piglit_build_simple_program(vs_source, fs_source);
  glUseProgram(prog);

@@ -138,7 +151,12 @@ piglit_init(int argc, char **argv) {

  glGenBuffers(1, );
  glBindBuffer(GL_ARRAY_BUFFER, tbo);
-   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+   glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL,
GL_STATIC_DRAW);
+
+   for (i = 0, chunk = (uint8_t *)data; i < num_chunks; i++) {
+   glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
chunk);
+   chunk += chunk_size;
+   }

  glGenTextures(1, );
  glBindTexture(GL_TEXTURE_BUFFER, tex);


On 5/17/19 6:04 AM, Pierre-Eric Pelloux-Prayer wrote:

Hi,

The patch looks good, except ranges-2.c now caus

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-31 Thread Pelloux-prayer, Pierre-eric
I can push it but can you first resend your patch using git send-mail because 
git am doesn't recognize the format of this one.

(or you can open a merge request on gitlab if you prefer)

Thanks!

Pierre-Eric


From: Anthony Pesch 
Sent: Friday, May 24, 2019 8:51 PM
To: Pelloux-prayer, Pierre-eric; Pierre-Eric Pelloux-Prayer; Anthony Pesch; 
piglit@lists.freedesktop.org
Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in 
ranges-2 test

I think I should have noted, I don't have commit access.

Would someone mind pushing this on my behalf?

  - Anthony

On 5/24/19 2:49 PM, Pelloux-prayer, Pierre-eric wrote:
> Looks good to me, thanks.
>
> Reviewed-by: Pierre-Eric Pelloux-Prayer 
>
>
> 
> From: Piglit  on behalf of Anthony 
> Pesch 
> Sent: Friday, May 24, 2019 8:21 PM
> To: Pierre-Eric Pelloux-Prayer; Anthony Pesch; piglit@lists.freedesktop.org
> Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment 
> in ranges-2 test
>
> [CAUTION: External Email]
>
> Hi Pierre,
>
> Thanks!
>
> I've modifed the patch to cast data, and added an additional check to
> ensure unaligned offsets produce INVALID_VALUE. I'm not sure how to use
> git send-mail to update a review, so I've just inlined the updated patch
> here and attached it as well.
>
>- Anthony
>
>
> commit 770effba655f97be229e13f894884f0e4c3e604a
> Author: Anthony Pesch 
> Date:   Thu Apr 11 12:37:07 2019 -0400
>
>   arb_texture_buffer_range: Fix buffer alignment in ranges-2 test
>
>   The ranges-2 test was failing due to glTexBufferRange returning
> GL_INVALID_VALUE
>   when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
> byte aligned.
>
>   From the OpenGL 4.6 Core spec:
>
>   An INVALID_VALUE error is generated if offset is not an integer
> multiple of the
>   value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.
>
> diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c
> b/tests/spec/arb_texture_buffer_range/ranges-2.c
> index 3477e4b52..83a009875 100644
> --- a/tests/spec/arb_texture_buffer_range/ranges-2.c
> +++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
> @@ -91,22 +91,29 @@ float data[] = {
>  0, 0,   0.5, 0,
>};
>
> +int aligned_size = 0;
> +int chunk_size = 24 * sizeof(float);
> +int num_chunks = 4;
> +
>enum piglit_result
>piglit_display(void) {
>  int i;
> -   int chunk_size = 24 * sizeof(float);
>  bool pass = true;
>
>  glClearColor(0.2, 0.2, 0.2, 0.2);
>  glClear(GL_COLOR_BUFFER_BIT);
>
> -   for (i = 0; i < sizeof(data) / chunk_size; i++) {
> +   /* verify unaligned offsets produce an error */
> +   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F, tbo, aligned_size - 
> 1, 1);
> +   pass &= glGetError() == GL_INVALID_VALUE;
> +
> +   for (i = 0; i < num_chunks; i++) {
>  glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
> -tbo, i * chunk_size, chunk_size);
> +tbo, i * aligned_size, chunk_size);
>  glDrawArrays(GL_TRIANGLES, 0, 6);
>  }
>
> -   for (i = 0; i < sizeof(data) / chunk_size; i++) {
> +   for (i = 0; i < num_chunks; i++) {
>  float c[4] = {
>  data[i * 24 + 2],
>  data[i * 24 + 3],
> @@ -114,7 +121,7 @@ piglit_display(void) {
>  1
>  };
>
> -   pass = piglit_probe_rect_rgba(
> +   pass &= piglit_probe_rect_rgba(
>  piglit_width * 0.5 * (1 + data[i * 24 + 0]),
>  piglit_height * 0.5 * (1 + data[i * 24 + 1]),
>  piglit_width/2,
> @@ -128,8 +135,14 @@ piglit_display(void) {
>
>void
>piglit_init(int argc, char **argv) {
> +   GLint align, i;
> +   uint8_t *chunk;
> +
>  piglit_require_extension("GL_ARB_texture_buffer_range");
>
> +   glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
> +   aligned_size = chunk_size % align == 0 ? chunk_size : align;
> +
>  prog = piglit_build_simple_program(vs_source, fs_source);
>  glUseProgram(prog);
>
> @@ -138,7 +151,12 @@ piglit_init(int argc, char **argv) {
>
>  glGenBuffers(1, );
>  glBindBuffer(GL_ARRAY_BUFFER, tbo);
> -   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
> +   glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL,
> GL_STATIC_DRAW);
> +
> +   for (i

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-24 Thread Anthony Pesch

I think I should have noted, I don't have commit access.

Would someone mind pushing this on my behalf?

 - Anthony

On 5/24/19 2:49 PM, Pelloux-prayer, Pierre-eric wrote:

Looks good to me, thanks.

Reviewed-by: Pierre-Eric Pelloux-Prayer 



From: Piglit  on behalf of Anthony Pesch 

Sent: Friday, May 24, 2019 8:21 PM
To: Pierre-Eric Pelloux-Prayer; Anthony Pesch; piglit@lists.freedesktop.org
Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in 
ranges-2 test

[CAUTION: External Email]

Hi Pierre,

Thanks!

I've modifed the patch to cast data, and added an additional check to
ensure unaligned offsets produce INVALID_VALUE. I'm not sure how to use
git send-mail to update a review, so I've just inlined the updated patch
here and attached it as well.

   - Anthony


commit 770effba655f97be229e13f894884f0e4c3e604a
Author: Anthony Pesch 
Date:   Thu Apr 11 12:37:07 2019 -0400

  arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

  The ranges-2 test was failing due to glTexBufferRange returning
GL_INVALID_VALUE
  when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
byte aligned.

  From the OpenGL 4.6 Core spec:

  An INVALID_VALUE error is generated if offset is not an integer
multiple of the
  value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c
b/tests/spec/arb_texture_buffer_range/ranges-2.c
index 3477e4b52..83a009875 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,29 @@ float data[] = {
 0, 0,   0.5, 0,
   };

+int aligned_size = 0;
+int chunk_size = 24 * sizeof(float);
+int num_chunks = 4;
+
   enum piglit_result
   piglit_display(void) {
 int i;
-   int chunk_size = 24 * sizeof(float);
 bool pass = true;

 glClearColor(0.2, 0.2, 0.2, 0.2);
 glClear(GL_COLOR_BUFFER_BIT);

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   /* verify unaligned offsets produce an error */
+   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F, tbo, aligned_size - 1, 
1);
+   pass &= glGetError() == GL_INVALID_VALUE;
+
+   for (i = 0; i < num_chunks; i++) {
 glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
-tbo, i * chunk_size, chunk_size);
+tbo, i * aligned_size, chunk_size);
 glDrawArrays(GL_TRIANGLES, 0, 6);
 }

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   for (i = 0; i < num_chunks; i++) {
 float c[4] = {
 data[i * 24 + 2],
 data[i * 24 + 3],
@@ -114,7 +121,7 @@ piglit_display(void) {
 1
 };

-   pass = piglit_probe_rect_rgba(
+   pass &= piglit_probe_rect_rgba(
 piglit_width * 0.5 * (1 + data[i * 24 + 0]),
 piglit_height * 0.5 * (1 + data[i * 24 + 1]),
 piglit_width/2,
@@ -128,8 +135,14 @@ piglit_display(void) {

   void
   piglit_init(int argc, char **argv) {
+   GLint align, i;
+   uint8_t *chunk;
+
 piglit_require_extension("GL_ARB_texture_buffer_range");

+   glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
+   aligned_size = chunk_size % align == 0 ? chunk_size : align;
+
 prog = piglit_build_simple_program(vs_source, fs_source);
 glUseProgram(prog);

@@ -138,7 +151,12 @@ piglit_init(int argc, char **argv) {

 glGenBuffers(1, );
 glBindBuffer(GL_ARRAY_BUFFER, tbo);
-   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+   glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL,
GL_STATIC_DRAW);
+
+   for (i = 0, chunk = (uint8_t *)data; i < num_chunks; i++) {
+   glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
chunk);
+   chunk += chunk_size;
+   }

 glGenTextures(1, );
 glBindTexture(GL_TEXTURE_BUFFER, tex);


On 5/17/19 6:04 AM, Pierre-Eric Pelloux-Prayer wrote:

Hi,

The patch looks good, except ranges-2.c now cause a compiler warning:

tests/spec/arb_texture_buffer_range/ranges-2.c:152:20: warning: assignment to 
‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘float *’ 
[-Wincompatible-pointer-types]
for (i = 0, chunk = data; i < num_chunks; i++) {

Another suggestion: it could be interesting to verify that INVALID_VALUE is 
generated when the alignment constraint is not respected.

Thanks,

Pierre-Eric




On 09/05/2019 20:41, Anthony Pesch wrote:

Pinging to see if anyone has the time to review.

   - Anthony

On 4/15/19 4:24 PM, Anthony Pesch wrote:

From: Anthony Pesch 

The ranges-2 test was failing due to glTexBufferRange returning GL_INVALID_VA

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-24 Thread Pelloux-prayer, Pierre-eric
Looks good to me, thanks.

Reviewed-by: Pierre-Eric Pelloux-Prayer 



From: Piglit  on behalf of Anthony Pesch 

Sent: Friday, May 24, 2019 8:21 PM
To: Pierre-Eric Pelloux-Prayer; Anthony Pesch; piglit@lists.freedesktop.org
Subject: Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in 
ranges-2 test

[CAUTION: External Email]

Hi Pierre,

Thanks!

I've modifed the patch to cast data, and added an additional check to
ensure unaligned offsets produce INVALID_VALUE. I'm not sure how to use
git send-mail to update a review, so I've just inlined the updated patch
here and attached it as well.

  - Anthony


commit 770effba655f97be229e13f894884f0e4c3e604a
Author: Anthony Pesch 
Date:   Thu Apr 11 12:37:07 2019 -0400

 arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

 The ranges-2 test was failing due to glTexBufferRange returning
GL_INVALID_VALUE
 when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
byte aligned.

 From the OpenGL 4.6 Core spec:

 An INVALID_VALUE error is generated if offset is not an integer
multiple of the
 value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c
b/tests/spec/arb_texture_buffer_range/ranges-2.c
index 3477e4b52..83a009875 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,29 @@ float data[] = {
0, 0,   0.5, 0,
  };

+int aligned_size = 0;
+int chunk_size = 24 * sizeof(float);
+int num_chunks = 4;
+
  enum piglit_result
  piglit_display(void) {
int i;
-   int chunk_size = 24 * sizeof(float);
bool pass = true;

glClearColor(0.2, 0.2, 0.2, 0.2);
glClear(GL_COLOR_BUFFER_BIT);

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   /* verify unaligned offsets produce an error */
+   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F, tbo, aligned_size - 1, 
1);
+   pass &= glGetError() == GL_INVALID_VALUE;
+
+   for (i = 0; i < num_chunks; i++) {
glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
-tbo, i * chunk_size, chunk_size);
+tbo, i * aligned_size, chunk_size);
glDrawArrays(GL_TRIANGLES, 0, 6);
}

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   for (i = 0; i < num_chunks; i++) {
float c[4] = {
data[i * 24 + 2],
data[i * 24 + 3],
@@ -114,7 +121,7 @@ piglit_display(void) {
1
};

-   pass = piglit_probe_rect_rgba(
+   pass &= piglit_probe_rect_rgba(
piglit_width * 0.5 * (1 + data[i * 24 + 0]),
piglit_height * 0.5 * (1 + data[i * 24 + 1]),
piglit_width/2,
@@ -128,8 +135,14 @@ piglit_display(void) {

  void
  piglit_init(int argc, char **argv) {
+   GLint align, i;
+   uint8_t *chunk;
+
piglit_require_extension("GL_ARB_texture_buffer_range");

+   glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
+   aligned_size = chunk_size % align == 0 ? chunk_size : align;
+
prog = piglit_build_simple_program(vs_source, fs_source);
glUseProgram(prog);

@@ -138,7 +151,12 @@ piglit_init(int argc, char **argv) {

glGenBuffers(1, );
glBindBuffer(GL_ARRAY_BUFFER, tbo);
-   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+   glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL,
GL_STATIC_DRAW);
+
+   for (i = 0, chunk = (uint8_t *)data; i < num_chunks; i++) {
+   glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
chunk);
+   chunk += chunk_size;
+   }

glGenTextures(1, );
glBindTexture(GL_TEXTURE_BUFFER, tex);


On 5/17/19 6:04 AM, Pierre-Eric Pelloux-Prayer wrote:
> Hi,
>
> The patch looks good, except ranges-2.c now cause a compiler warning:
>
> tests/spec/arb_texture_buffer_range/ranges-2.c:152:20: warning: assignment to 
> ‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘float *’ 
> [-Wincompatible-pointer-types]
>for (i = 0, chunk = data; i < num_chunks; i++) {
>
> Another suggestion: it could be interesting to verify that INVALID_VALUE is 
> generated when the alignment constraint is not respected.
>
> Thanks,
>
> Pierre-Eric
>
>
>
>
> On 09/05/2019 20:41, Anthony Pesch wrote:
>> Pinging to see if anyone has the time to review.
>>
>>   - Anthony
>>
>> On 4/15/19 4:24 PM, Anthony Pesch wrote:
>>> From: Anthony Pesch 
>>>
>>> The ranges-2 test was failing due to glTexBufferRange returning 
>>> GL_INVALID_VALUE
>>> when the o

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-24 Thread Anthony Pesch

Hi Pierre,

Thanks!

I've modifed the patch to cast data, and added an additional check to 
ensure unaligned offsets produce INVALID_VALUE. I'm not sure how to use 
git send-mail to update a review, so I've just inlined the updated patch 
here and attached it as well.


 - Anthony


commit 770effba655f97be229e13f894884f0e4c3e604a
Author: Anthony Pesch 
Date:   Thu Apr 11 12:37:07 2019 -0400

arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

The ranges-2 test was failing due to glTexBufferRange returning 
GL_INVALID_VALUE
when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 
byte aligned.


From the OpenGL 4.6 Core spec:

An INVALID_VALUE error is generated if offset is not an integer 
multiple of the

value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c 
b/tests/spec/arb_texture_buffer_range/ranges-2.c

index 3477e4b52..83a009875 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,29 @@ float data[] = {
0, 0,   0.5, 0,
 };

+int aligned_size = 0;
+int chunk_size = 24 * sizeof(float);
+int num_chunks = 4;
+
 enum piglit_result
 piglit_display(void) {
int i;
-   int chunk_size = 24 * sizeof(float);
bool pass = true;

glClearColor(0.2, 0.2, 0.2, 0.2);
glClear(GL_COLOR_BUFFER_BIT);

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   /* verify unaligned offsets produce an error */
+   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F, tbo, aligned_size - 1, 
1);
+   pass &= glGetError() == GL_INVALID_VALUE;
+
+   for (i = 0; i < num_chunks; i++) {
glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
-tbo, i * chunk_size, chunk_size);
+tbo, i * aligned_size, chunk_size);
glDrawArrays(GL_TRIANGLES, 0, 6);
}

-   for (i = 0; i < sizeof(data) / chunk_size; i++) {
+   for (i = 0; i < num_chunks; i++) {
float c[4] = {
data[i * 24 + 2],
data[i * 24 + 3],
@@ -114,7 +121,7 @@ piglit_display(void) {
1
};

-   pass = piglit_probe_rect_rgba(
+   pass &= piglit_probe_rect_rgba(
piglit_width * 0.5 * (1 + data[i * 24 + 0]),
piglit_height * 0.5 * (1 + data[i * 24 + 1]),
piglit_width/2,
@@ -128,8 +135,14 @@ piglit_display(void) {

 void
 piglit_init(int argc, char **argv) {
+   GLint align, i;
+   uint8_t *chunk;
+
piglit_require_extension("GL_ARB_texture_buffer_range");

+   glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
+   aligned_size = chunk_size % align == 0 ? chunk_size : align;
+
prog = piglit_build_simple_program(vs_source, fs_source);
glUseProgram(prog);

@@ -138,7 +151,12 @@ piglit_init(int argc, char **argv) {

glGenBuffers(1, );
glBindBuffer(GL_ARRAY_BUFFER, tbo);
-   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+	glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL, 
GL_STATIC_DRAW);

+
+   for (i = 0, chunk = (uint8_t *)data; i < num_chunks; i++) {
+   glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
chunk);
+   chunk += chunk_size;
+   }

glGenTextures(1, );
glBindTexture(GL_TEXTURE_BUFFER, tex);


On 5/17/19 6:04 AM, Pierre-Eric Pelloux-Prayer wrote:

Hi,

The patch looks good, except ranges-2.c now cause a compiler warning:

tests/spec/arb_texture_buffer_range/ranges-2.c:152:20: warning: assignment to 
‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘float *’ 
[-Wincompatible-pointer-types]
   for (i = 0, chunk = data; i < num_chunks; i++) {

Another suggestion: it could be interesting to verify that INVALID_VALUE is 
generated when the alignment constraint is not respected.

Thanks,

Pierre-Eric




On 09/05/2019 20:41, Anthony Pesch wrote:

Pinging to see if anyone has the time to review.

  - Anthony

On 4/15/19 4:24 PM, Anthony Pesch wrote:

From: Anthony Pesch 

The ranges-2 test was failing due to glTexBufferRange returning GL_INVALID_VALUE
when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT byte 
aligned.

  From the OpenGL 4.6 Core spec:

An INVALID_VALUE error is generated if offset is not an integer multiple of the
value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.
---
   .../spec/arb_texture_buffer_range/ranges-2.c  | 24 +++
   1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c 
b/tests/spec/arb_texture_buffer_range/ranges-2.c
index 3477e4b52..b9cd543b0 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,25 @@ float 

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-17 Thread Pierre-Eric Pelloux-Prayer
Hi,

The patch looks good, except ranges-2.c now cause a compiler warning:

tests/spec/arb_texture_buffer_range/ranges-2.c:152:20: warning: assignment to 
‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘float *’ 
[-Wincompatible-pointer-types]
  for (i = 0, chunk = data; i < num_chunks; i++) {

Another suggestion: it could be interesting to verify that INVALID_VALUE is 
generated when the alignment constraint is not respected.

Thanks,

Pierre-Eric




On 09/05/2019 20:41, Anthony Pesch wrote:
> Pinging to see if anyone has the time to review.
> 
>  - Anthony
> 
> On 4/15/19 4:24 PM, Anthony Pesch wrote:
>> From: Anthony Pesch 
>>
>> The ranges-2 test was failing due to glTexBufferRange returning 
>> GL_INVALID_VALUE
>> when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT byte 
>> aligned.
>>
>>  From the OpenGL 4.6 Core spec:
>>
>> An INVALID_VALUE error is generated if offset is not an integer multiple of 
>> the
>> value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.
>> ---
>>   .../spec/arb_texture_buffer_range/ranges-2.c  | 24 +++
>>   1 file changed, 19 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c 
>> b/tests/spec/arb_texture_buffer_range/ranges-2.c
>> index 3477e4b52..b9cd543b0 100644
>> --- a/tests/spec/arb_texture_buffer_range/ranges-2.c
>> +++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
>> @@ -91,22 +91,25 @@ float data[] = {
>>   0, 0,    0.5, 0,
>>   };
>>   +int aligned_size = 0;
>> +int chunk_size = 24 * sizeof(float);
>> +int num_chunks = 4;
>> +
>>   enum piglit_result
>>   piglit_display(void) {
>>   int i;
>> -    int chunk_size = 24 * sizeof(float);
>>   bool pass = true;
>>     glClearColor(0.2, 0.2, 0.2, 0.2);
>>   glClear(GL_COLOR_BUFFER_BIT);
>>   -    for (i = 0; i < sizeof(data) / chunk_size; i++) {
>> +    for (i = 0; i < num_chunks; i++) {
>>   glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
>> - tbo, i * chunk_size, chunk_size);
>> + tbo, i * aligned_size, chunk_size);
>>   glDrawArrays(GL_TRIANGLES, 0, 6);
>>   }
>>   -    for (i = 0; i < sizeof(data) / chunk_size; i++) {
>> +    for (i = 0; i < num_chunks; i++) {
>>   float c[4] = {
>>   data[i * 24 + 2],
>>   data[i * 24 + 3],
>> @@ -128,8 +131,14 @@ piglit_display(void) {
>>     void
>>   piglit_init(int argc, char **argv) {
>> +    GLint align, i;
>> +    uint8_t *chunk;
>> +
>>   piglit_require_extension("GL_ARB_texture_buffer_range");
>>   +    glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );
>> +    aligned_size = chunk_size % align == 0 ? chunk_size : align;
>> +
>>   prog = piglit_build_simple_program(vs_source, fs_source);
>>   glUseProgram(prog);
>>   @@ -138,7 +147,12 @@ piglit_init(int argc, char **argv) {
>>     glGenBuffers(1, );
>>   glBindBuffer(GL_ARRAY_BUFFER, tbo);
>> -    glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
>> +    glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL, 
>> GL_STATIC_DRAW);
>> +
>> +    for (i = 0, chunk = data; i < num_chunks; i++) {
>> +    glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
>> chunk);
>> +    chunk += chunk_size;
>> +    }
>>     glGenTextures(1, );
>>   glBindTexture(GL_TEXTURE_BUFFER, tex);
>>
> ___
> Piglit mailing list
> Piglit@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit
___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Re: [Piglit] [PATCH] arb_texture_buffer_range: Fix buffer alignment in ranges-2 test

2019-05-09 Thread Anthony Pesch

Pinging to see if anyone has the time to review.

 - Anthony

On 4/15/19 4:24 PM, Anthony Pesch wrote:

From: Anthony Pesch 

The ranges-2 test was failing due to glTexBufferRange returning GL_INVALID_VALUE
when the offset parameter wasn't GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT byte 
aligned.

 From the OpenGL 4.6 Core spec:

An INVALID_VALUE error is generated if offset is not an integer multiple of the
value of TEXTURE_BUFFER_OFFSET_ALIGNMENT.
---
  .../spec/arb_texture_buffer_range/ranges-2.c  | 24 +++
  1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/tests/spec/arb_texture_buffer_range/ranges-2.c 
b/tests/spec/arb_texture_buffer_range/ranges-2.c
index 3477e4b52..b9cd543b0 100644
--- a/tests/spec/arb_texture_buffer_range/ranges-2.c
+++ b/tests/spec/arb_texture_buffer_range/ranges-2.c
@@ -91,22 +91,25 @@ float data[] = {
0, 0,   0.5, 0,
  };
  
+int aligned_size = 0;

+int chunk_size = 24 * sizeof(float);
+int num_chunks = 4;
+
  enum piglit_result
  piglit_display(void) {
int i;
-   int chunk_size = 24 * sizeof(float);
bool pass = true;
  
  	glClearColor(0.2, 0.2, 0.2, 0.2);

glClear(GL_COLOR_BUFFER_BIT);
  
-	for (i = 0; i < sizeof(data) / chunk_size; i++) {

+   for (i = 0; i < num_chunks; i++) {
glTexBufferRange(GL_TEXTURE_BUFFER, GL_RGBA32F,
-tbo, i * chunk_size, chunk_size);
+tbo, i * aligned_size, chunk_size);
glDrawArrays(GL_TRIANGLES, 0, 6);
}
  
-	for (i = 0; i < sizeof(data) / chunk_size; i++) {

+   for (i = 0; i < num_chunks; i++) {
float c[4] = {
data[i * 24 + 2],
data[i * 24 + 3],
@@ -128,8 +131,14 @@ piglit_display(void) {
  
  void

  piglit_init(int argc, char **argv) {
+   GLint align, i;
+   uint8_t *chunk;
+
piglit_require_extension("GL_ARB_texture_buffer_range");
  
+	glGetIntegerv(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, );

+   aligned_size = chunk_size % align == 0 ? chunk_size : align;
+
prog = piglit_build_simple_program(vs_source, fs_source);
glUseProgram(prog);
  
@@ -138,7 +147,12 @@ piglit_init(int argc, char **argv) {
  
  	glGenBuffers(1, );

glBindBuffer(GL_ARRAY_BUFFER, tbo);
-   glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+   glBufferData(GL_ARRAY_BUFFER, aligned_size * num_chunks, NULL, 
GL_STATIC_DRAW);
+
+   for (i = 0, chunk = data; i < num_chunks; i++) {
+   glBufferSubData(GL_ARRAY_BUFFER, aligned_size * i, chunk_size, 
chunk);
+   chunk += chunk_size;
+   }
  
  	glGenTextures(1, );

glBindTexture(GL_TEXTURE_BUFFER, tex);


___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit