diff options
author | José Fonseca <jfonseca@vmware.com> | 2009-10-13 13:47:51 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2009-10-13 13:47:51 +0100 |
commit | a1276bfdd8ea2c2840f3ea8edd3cea8720804498 (patch) | |
tree | f9a6435a7607f15e0a44fe479905d0a0a9db3dec | |
parent | 056aff7a7cf11f17e879b6ae93ccd771e1c59e9f (diff) |
pipebuffer: is_texture/buffer_referenced helper.gallium-0.1
A hash table would be more efficient, but this likely isn't used often
enough to make a difference.
-rw-r--r-- | src/gallium/auxiliary/pipebuffer/pb_validate.c | 14 | ||||
-rw-r--r-- | src/gallium/auxiliary/pipebuffer/pb_validate.h | 8 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/pipebuffer/pb_validate.c b/src/gallium/auxiliary/pipebuffer/pb_validate.c index 1e54fc39d4..1c7b91957b 100644 --- a/src/gallium/auxiliary/pipebuffer/pb_validate.c +++ b/src/gallium/auxiliary/pipebuffer/pb_validate.c @@ -99,6 +99,20 @@ pb_validate_add_buffer(struct pb_validate *vl, } +unsigned +pb_validate_is_buffer_referenced(struct pb_validate *vl, + struct pb_buffer *buf) +{ + unsigned i; + + for(i = 0; i < vl->used; ++i) + if(vl->buffers[i] == buf) + return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE; + + return 0; +} + + enum pipe_error pb_validate_validate(struct pb_validate *vl) { diff --git a/src/gallium/auxiliary/pipebuffer/pb_validate.h b/src/gallium/auxiliary/pipebuffer/pb_validate.h index 3db1d5330b..1da7b1a6cf 100644 --- a/src/gallium/auxiliary/pipebuffer/pb_validate.h +++ b/src/gallium/auxiliary/pipebuffer/pb_validate.h @@ -61,6 +61,14 @@ pb_validate_add_buffer(struct pb_validate *vl, struct pb_buffer *buf); /** + * Helper for pipe_context::is_texture_referenced and + * pipe_context::is_buffer_referenced + */ +unsigned +pb_validate_is_buffer_referenced(struct pb_validate *vl, + struct pb_buffer *buf); + +/** * Validate all buffers for hardware access. * * Should be called right before issuing commands to the hardware. |