r300g: drop begin_cs/end_cs
authorMarek Olšák <maraeo@gmail.com>
Sun, 13 Jun 2010 23:20:14 +0000 (01:20 +0200)
committerMarek Olšák <maraeo@gmail.com>
Mon, 14 Jun 2010 10:46:38 +0000 (12:46 +0200)
I have had a look at the libdrm sources and they just contain more or less
the same checking we do in macros, and begin_cs may realloc the CS buffer
if we overflow it, which never happens with r300g. So these are pretty
much useless.

There is a small but measurable performance increase by dropping the two
functions.

src/gallium/drivers/r300/r300_cs.h
src/gallium/drivers/r300/r300_winsys.h
src/gallium/winsys/radeon/drm/radeon_r300.c

index 0baa20f08ddce6e18b52d67457dca20a6e55c728..030fad3772fd1452054c142924296334e628905b 100644 (file)
 
 #define BEGIN_CS(size) do { \
     assert(r300_check_cs(cs_context_copy, (size))); \
-    cs_winsys->begin_cs(cs_winsys, (size), \
-            __FILE__, __FUNCTION__, __LINE__); \
     CS_DEBUG(cs_count = size;) \
 } while (0)
 
 #define END_CS do { \
     CS_DEBUG(if (cs_count != 0) \
         debug_printf("r300: Warning: cs_count off by %d\n", cs_count);) \
-    cs_winsys->end_cs(cs_winsys, __FILE__, __FUNCTION__, __LINE__); \
     CS_DEBUG(cs_count = 0;) \
 } while (0)
 
  * Command buffer emission.
  */
 
-/* It's recommended not to call begin_cs/end_cs before/after this macro. */
 #define WRITE_CS_TABLE(values, count) do { \
     CS_DEBUG(assert(cs_count == 0);) \
     cs_winsys->write_cs_table(cs_winsys, values, count); \
index 6ef1c996a2176da79ee5e31a2531db8dd1218bc4..2d43153b34f6b00af079a0365270e8bceef93500 100644 (file)
@@ -105,13 +105,6 @@ struct r300_winsys_screen {
     /* Return the number of free dwords in CS. */
     unsigned (*get_cs_free_dwords)(struct r300_winsys_screen *winsys);
 
-    /* Start a command emit. */
-    void (*begin_cs)(struct r300_winsys_screen* winsys,
-                     int size,
-                     const char* file,
-                     const char* function,
-                     int line);
-
     /* Write a dword to the command buffer. */
     void (*write_cs_dword)(struct r300_winsys_screen* winsys, uint32_t dword);
 
@@ -126,12 +119,6 @@ struct r300_winsys_screen {
                            enum r300_buffer_domain wd,
                            uint32_t flags);
 
-    /* Finish a command emit. */
-    void (*end_cs)(struct r300_winsys_screen* winsys,
-                   const char* file,
-                   const char* function,
-                   int line);
-
     /* Flush the CS. */
     void (*flush_cs)(struct r300_winsys_screen* winsys);
 
index 4f620f0793332671f9a496ce1a309043aff87478..dbf4d197dd1a4cc84e61f8445d496d769c82e708 100644 (file)
@@ -200,16 +200,6 @@ static unsigned radeon_get_cs_free_dwords(struct r300_winsys_screen *rws)
     return cs->ndw - cs->cdw;
 }
 
-static void radeon_begin_cs(struct r300_winsys_screen *rws,
-                            int size,
-                            const char* file,
-                            const char* function,
-                            int line)
-{
-    struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
-    radeon_cs_begin(ws->cs, size, file, function, line);
-}
-
 static void radeon_write_cs_dword(struct r300_winsys_screen *rws,
                                   uint32_t dword)
 {
@@ -240,15 +230,6 @@ static void radeon_reset_bos(struct r300_winsys_screen *rws)
     radeon_cs_space_reset_bos(ws->cs);
 }
 
-static void radeon_end_cs(struct r300_winsys_screen *rws,
-                          const char* file,
-                          const char* function,
-                          int line)
-{
-    struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
-    radeon_cs_end(ws->cs, file, function, line);
-}
-
 static void radeon_flush_cs(struct r300_winsys_screen *rws)
 {
     struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
@@ -343,11 +324,9 @@ radeon_setup_winsys(int fd, struct radeon_libdrm_winsys* ws)
     ws->base.validate = radeon_validate;
     ws->base.destroy = radeon_winsys_destroy;
     ws->base.get_cs_free_dwords = radeon_get_cs_free_dwords;
-    ws->base.begin_cs = radeon_begin_cs;
     ws->base.write_cs_dword = radeon_write_cs_dword;
     ws->base.write_cs_table = radeon_write_cs_table;
     ws->base.write_cs_reloc = radeon_write_cs_reloc;
-    ws->base.end_cs = radeon_end_cs;
     ws->base.flush_cs = radeon_flush_cs;
     ws->base.reset_bos = radeon_reset_bos;
     ws->base.set_flush_cb = radeon_set_flush_cb;