Clone of mesa.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

svga_pipe_flush.c 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**********************************************************
  2. * Copyright 2008-2009 VMware, Inc. All rights reserved.
  3. *
  4. * Permission is hereby granted, free of charge, to any person
  5. * obtaining a copy of this software and associated documentation
  6. * files (the "Software"), to deal in the Software without
  7. * restriction, including without limitation the rights to use, copy,
  8. * modify, merge, publish, distribute, sublicense, and/or sell copies
  9. * of the Software, and to permit persons to whom the Software is
  10. * furnished to do so, subject to the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be
  13. * included in all copies or substantial portions of the Software.
  14. *
  15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  19. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  20. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. * SOFTWARE.
  23. *
  24. **********************************************************/
  25. #include "pipe/p_defines.h"
  26. #include "util/u_string.h"
  27. #include "svga_screen.h"
  28. #include "svga_surface.h"
  29. #include "svga_context.h"
  30. #include "svga_debug.h"
  31. static void svga_flush( struct pipe_context *pipe,
  32. struct pipe_fence_handle **fence,
  33. enum pipe_flush_flags flags)
  34. {
  35. struct svga_context *svga = svga_context(pipe);
  36. /* Emit buffered drawing commands, and any back copies.
  37. */
  38. svga_surfaces_flush( svga );
  39. /* Flush command queue.
  40. */
  41. svga_context_flush(svga, fence);
  42. SVGA_DBG(DEBUG_DMA|DEBUG_PERF, "%s fence_ptr %p\n",
  43. __FUNCTION__, fence ? *fence : 0x0);
  44. /* Enable to dump BMPs of the color/depth buffers each frame */
  45. if (0) {
  46. struct pipe_framebuffer_state *fb = &svga->curr.framebuffer;
  47. static unsigned frame_no = 1;
  48. char filename[256];
  49. unsigned i;
  50. for (i = 0; i < fb->nr_cbufs; i++) {
  51. util_snprintf(filename, sizeof(filename), "cbuf%u_%04u.bmp", i, frame_no);
  52. debug_dump_surface_bmp(&svga->pipe, filename, fb->cbufs[i]);
  53. }
  54. if (0 && fb->zsbuf) {
  55. util_snprintf(filename, sizeof(filename), "zsbuf_%04u.bmp", frame_no);
  56. debug_dump_surface_bmp(&svga->pipe, filename, fb->zsbuf);
  57. }
  58. ++frame_no;
  59. }
  60. }
  61. void svga_init_flush_functions( struct svga_context *svga )
  62. {
  63. svga->pipe.flush = svga_flush;
  64. }