Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. //
  2. // Copyright 2015 Advanced Micro Devices, Inc.
  3. // All Rights Reserved.
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a
  6. // copy of this software and associated documentation files (the "Software"),
  7. // to deal in the Software without restriction, including without limitation
  8. // the rights to use, copy, modify, merge, publish, distribute, sublicense,
  9. // and/or sell copies of the Software, and to permit persons to whom the
  10. // Software is furnished to do so, subject to the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be included in
  13. // all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  18. // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  19. // OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  20. // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  21. // OTHER DEALINGS IN THE SOFTWARE.
  22. //
  23.  
  24. #include "core/event.hpp"
  25. #include "api/util.hpp"
  26.  
  27. using namespace clover;
  28.  
  29. extern "C" {
  30.  
  31. PUBLIC bool
  32. opencl_dri_event_add_ref(cl_event event)
  33. {
  34.    return clRetainEvent(event) == CL_SUCCESS;
  35. }
  36.  
  37. PUBLIC bool
  38. opencl_dri_event_release(cl_event event)
  39. {
  40.    return clReleaseEvent(event) == CL_SUCCESS;
  41. }
  42.  
  43. PUBLIC bool
  44. opencl_dri_event_wait(cl_event event, uint64_t timeout) try {
  45.    if (!timeout) {
  46.       return obj(event).status() == CL_COMPLETE;
  47.    }
  48.  
  49.    obj(event).wait();
  50.    return true;
  51.  
  52. } catch (error &) {
  53.    return false;
  54. }
  55.  
  56. PUBLIC struct pipe_fence_handle *
  57. opencl_dri_event_get_fence(cl_event event) try {
  58.    return obj(event).fence();
  59.  
  60. } catch (error &) {
  61.    return NULL;
  62. }
  63.  
  64. }
  65.