diff options
Diffstat (limited to 'main.cu')
-rw-r--r-- | main.cu | 51 |
1 files changed, 36 insertions, 15 deletions
@@ -8,32 +8,53 @@ __global__ void test_image(uint8_t *image); int main() { - const int size_x = 100; - const int size_y = 100; + //bluuuuugh i'll figure out occupancy later, this res are easy + //calculated manually for gtx1060 with 20 SM, 1024 threads/SM + const int res_x = 32 * 20; + const int res_y = 32 * 20; + const dim3 blockCount(20, 20); + const dim3 threadCount(32, 32); + uint8_t *image_d; - Image image = GenImageColor(size_x, size_y, BLUE); + Color texture_data[res_x * res_y]; + + + //see if GPU is connected (my egpu is finicky) + { + int temp_device; + cudaError_t err; + if((err = cudaGetDevice(&temp_device)) != cudaSuccess) { + printf("failed to get device!\nError: %s\n", cudaGetErrorString(err)); + return(1); + } + } + SetTraceLogLevel(LOG_ERROR); + InitWindow(res_x, res_y, "cuda teseteroni"); + + //TODO could probably cut out + Image image = GenImageColor(res_x, res_y, BLUE); + Texture tex = LoadTextureFromImage(image); + + - InitWindow(size_x, size_y, "cuda teseteroni"); - cudaMalloc((void **)&image_d, 100 * 100 * 4); - test_image<<<1, dim3(3,3)>>>(image_d); - cudaDeviceSynchronize(); - //for(;;); //if(!IsWindowFullscreen()) ToggleFullscreen(); while(!WindowShouldClose()) { - cudaMemcpy(image.data, (void **)image_d, 100 * 100 * 4, cudaMemcpyDeviceToHost); - //memset(image.data, (int32_t)0x0000ff, 100 * 100 * 4); + //cuda stuff + cudaMalloc((void **)&image_d, res_x * res_y * sizeof(Color)); + test_image<<<blockCount, threadCount>>>(image_d); + cudaDeviceSynchronize(); + cudaMemcpy(texture_data, (void **)image_d, res_x * res_y * sizeof(Color), cudaMemcpyDeviceToHost); + BeginDrawing(); - DrawTexture(LoadTextureFromImage(image), 0, 0, WHITE); + UpdateTexture(tex, texture_data); + DrawTexture(tex, 0, 0, WHITE); + DrawFPS(0, 0); EndDrawing(); } - - - - return 0; } |